summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mapi/glapi/gen/ARB_base_instance.xml6
-rw-r--r--src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml8
-rw-r--r--src/mapi/glapi/gen/ARB_draw_instanced.xml4
-rw-r--r--src/mapi/glapi/gen/EXT_transform_feedback.xml2
-rw-r--r--src/mapi/glapi/gen/gl_API.dtd11
-rw-r--r--src/mapi/glapi/gen/gl_API.xml40
6 files changed, 44 insertions, 27 deletions
diff --git a/src/mapi/glapi/gen/ARB_base_instance.xml b/src/mapi/glapi/gen/ARB_base_instance.xml
index 56de639e907..5bd6cabf9c1 100644
--- a/src/mapi/glapi/gen/ARB_base_instance.xml
+++ b/src/mapi/glapi/gen/ARB_base_instance.xml
@@ -8,7 +8,7 @@
<category name="GL_ARB_base_instance" number="107">
- <function name="DrawArraysInstancedBaseInstance" exec="dynamic">
+ <function name="DrawArraysInstancedBaseInstance" exec="dynamic" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="first" type="GLint"/>
<param name="count" type="GLsizei"/>
@@ -16,7 +16,7 @@
<param name="baseinstance" type="GLuint"/>
</function>
- <function name="DrawElementsInstancedBaseInstance" exec="dynamic">
+ <function name="DrawElementsInstancedBaseInstance" exec="dynamic" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="count" type="GLsizei"/>
<param name="type" type="GLenum"/>
@@ -25,7 +25,7 @@
<param name="baseinstance" type="GLuint"/>
</function>
- <function name="DrawElementsInstancedBaseVertexBaseInstance" exec="dynamic">
+ <function name="DrawElementsInstancedBaseVertexBaseInstance" exec="dynamic" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="count" type="GLsizei"/>
<param name="type" type="GLenum"/>
diff --git a/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml b/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml
index 72aa62c7751..7c7a6a49588 100644
--- a/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml
+++ b/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml
@@ -8,7 +8,7 @@
<category name="GL_ARB_draw_elements_base_vertex" number="62">
- <function name="DrawElementsBaseVertex" es2="3.2" exec="dynamic">
+ <function name="DrawElementsBaseVertex" es2="3.2" exec="dynamic" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="count" type="GLsizei"/>
<param name="type" type="GLenum"/>
@@ -16,7 +16,7 @@
<param name="basevertex" type="GLint"/>
</function>
- <function name="DrawRangeElementsBaseVertex" es2="3.2" exec="dynamic">
+ <function name="DrawRangeElementsBaseVertex" es2="3.2" exec="dynamic" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="start" type="GLuint"/>
<param name="end" type="GLuint"/>
@@ -26,7 +26,7 @@
<param name="basevertex" type="GLint"/>
</function>
- <function name="MultiDrawElementsBaseVertex" exec="dynamic">
+ <function name="MultiDrawElementsBaseVertex" exec="dynamic" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="count" type="const GLsizei *"/>
<param name="type" type="GLenum"/>
@@ -35,7 +35,7 @@
<param name="basevertex" type="const GLint *"/>
</function>
- <function name="DrawElementsInstancedBaseVertex" es2="3.2" exec="dynamic">
+ <function name="DrawElementsInstancedBaseVertex" es2="3.2" exec="dynamic" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="count" type="GLsizei"/>
<param name="type" type="GLenum"/>
diff --git a/src/mapi/glapi/gen/ARB_draw_instanced.xml b/src/mapi/glapi/gen/ARB_draw_instanced.xml
index b1c8221444a..52dba3cf3c3 100644
--- a/src/mapi/glapi/gen/ARB_draw_instanced.xml
+++ b/src/mapi/glapi/gen/ARB_draw_instanced.xml
@@ -8,14 +8,14 @@
<category name="GL_ARB_draw_instanced" number="44">
- <function name="DrawArraysInstancedARB" exec="dynamic">
+ <function name="DrawArraysInstancedARB" exec="dynamic" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="first" type="GLint"/>
<param name="count" type="GLsizei"/>
<param name="primcount" type="GLsizei"/>
</function>
- <function name="DrawElementsInstancedARB" exec="dynamic">
+ <function name="DrawElementsInstancedARB" exec="dynamic" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="count" type="GLsizei"/>
<param name="type" type="GLenum"/>
diff --git a/src/mapi/glapi/gen/EXT_transform_feedback.xml b/src/mapi/glapi/gen/EXT_transform_feedback.xml
index 2aa26ad7251..bbb44866f91 100644
--- a/src/mapi/glapi/gen/EXT_transform_feedback.xml
+++ b/src/mapi/glapi/gen/EXT_transform_feedback.xml
@@ -108,7 +108,7 @@
<function name="ResumeTransformFeedback" es2="3.0">
</function>
- <function name="DrawTransformFeedback" exec="dynamic">
+ <function name="DrawTransformFeedback" exec="dynamic" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="id" type="GLuint"/>
</function>
diff --git a/src/mapi/glapi/gen/gl_API.dtd b/src/mapi/glapi/gen/gl_API.dtd
index 78226513c46..133bc042aa9 100644
--- a/src/mapi/glapi/gen/gl_API.dtd
+++ b/src/mapi/glapi/gen/gl_API.dtd
@@ -38,7 +38,8 @@
es2 CDATA "none"
deprecated CDATA "none"
exec NMTOKEN #IMPLIED
- desktop (true | false) "true">
+ desktop (true | false) "true"
+ marshal NMTOKEN #IMPLIED>
<!ATTLIST size name NMTOKEN #REQUIRED
count NMTOKEN #IMPLIED
mode (get | set) "set">
@@ -120,6 +121,14 @@ param:
offset data should be padded to the next even number of dimensions.
For example, this will insert an empty "height" field after the
"width" field in the protocol for TexImage1D.
+ marshal - One of "sync", "async", "draw", or "custom", defaulting to
+ async unless one of the arguments is something we know we can't
+ codegen for. If "sync", we finish any queued glthread work and call
+ the Mesa implementation directly. If "async", we queue the function
+ call to be performed by glthread. If "custom", the prototype will be
+ generated but a custom implementation will be present in marshal.c.
+ If "draw", it will follow the "async" rules except that "indices" are
+ ignored (since they may come from a VBO).
glx:
rop - Opcode value for "render" commands
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index 2c5444475f9..ce9ad172dc4 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -2366,11 +2366,19 @@
<glx rop="139" handcode="client"/>
</function>
- <function name="Finish" es1="1.0" es2="2.0">
+ <function name="Finish" es1="1.0" es2="2.0" marshal="sync">
<glx sop="108" handcode="true"/>
</function>
- <function name="Flush" es1="1.0" es2="2.0">
+ <!-- TODO: Flush is marshalled synchronously as a temporary hack
+ since we don't yet have a hook into SwapBuffers.
+
+ NOTE: when we remove this hack, we'll still have to handle Flush
+ specially to ensure that it causes all previous commands to get
+ delivered to the server thread.
+ -->
+
+ <function name="Flush" es1="1.0" es2="2.0" marshal="sync">
<glx sop="142" handcode="true"/>
</function>
@@ -2598,21 +2606,21 @@
<glx sop="110" handcode="client"/>
</function>
- <function name="PixelMapfv" deprecated="3.1">
+ <function name="PixelMapfv" deprecated="3.1" marshal="sync">
<param name="map" type="GLenum"/>
<param name="mapsize" type="GLsizei" counter="true"/>
<param name="values" type="const GLfloat *" count="mapsize"/>
<glx rop="168" large="true"/>
</function>
- <function name="PixelMapuiv" deprecated="3.1">
+ <function name="PixelMapuiv" deprecated="3.1" marshal="sync">
<param name="map" type="GLenum"/>
<param name="mapsize" type="GLsizei" counter="true"/>
<param name="values" type="const GLuint *" count="mapsize"/>
<glx rop="169" large="true"/>
</function>
- <function name="PixelMapusv" deprecated="3.1">
+ <function name="PixelMapusv" deprecated="3.1" marshal="sync">
<param name="map" type="GLenum"/>
<param name="mapsize" type="GLsizei" counter="true"/>
<param name="values" type="const GLushort *" count="mapsize"/>
@@ -3141,7 +3149,7 @@
<enum name="CLIENT_VERTEX_ARRAY_BIT" value="0x00000002"/>
<enum name="CLIENT_ALL_ATTRIB_BITS" value="0xFFFFFFFF"/>
- <function name="ArrayElement" deprecated="3.1" exec="dynamic">
+ <function name="ArrayElement" deprecated="3.1" exec="dynamic" marshal="draw">
<param name="i" type="GLint"/>
<glx handcode="true"/>
</function>
@@ -3159,14 +3167,14 @@
<glx handcode="true"/>
</function>
- <function name="DrawArrays" es1="1.0" es2="2.0" exec="dynamic">
+ <function name="DrawArrays" es1="1.0" es2="2.0" exec="dynamic" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="first" type="GLint"/>
<param name="count" type="GLsizei"/>
<glx rop="193" handcode="true"/>
</function>
- <function name="DrawElements" es1="1.0" es2="2.0" exec="dynamic">
+ <function name="DrawElements" es1="1.0" es2="2.0" exec="dynamic" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="count" type="GLsizei"/>
<param name="type" type="GLenum"/>
@@ -3723,7 +3731,7 @@
<glx rop="4097"/>
</function>
- <function name="DrawRangeElements" es2="3.0" exec="dynamic">
+ <function name="DrawRangeElements" es2="3.0" exec="dynamic" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="start" type="GLuint"/>
<param name="end" type="GLuint"/>
@@ -4716,7 +4724,7 @@
<glx handcode="true"/>
</function>
- <function name="MultiDrawArrays">
+ <function name="MultiDrawArrays" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="first" type="const GLint *"/>
<param name="count" type="const GLsizei *"/>
@@ -8089,7 +8097,7 @@
<enum name="MAX_TRANSFORM_FEEDBACK_BUFFERS" value="0x8E70"/>
<enum name="MAX_VERTEX_STREAMS" value="0x8E71"/>
- <function name="DrawTransformFeedbackStream" exec="dynamic">
+ <function name="DrawTransformFeedbackStream" exec="dynamic" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="id" type="GLuint"/>
<param name="stream" type="GLuint"/>
@@ -8137,13 +8145,13 @@
<xi:include href="ARB_base_instance.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<category name="GL_ARB_transform_feedback_instanced" number="109">
- <function name="DrawTransformFeedbackInstanced" exec="dynamic">
+ <function name="DrawTransformFeedbackInstanced" exec="dynamic" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="id" type="GLuint"/>
<param name="primcount" type="GLsizei"/>
</function>
- <function name="DrawTransformFeedbackStreamInstanced" exec="dynamic">
+ <function name="DrawTransformFeedbackStreamInstanced" exec="dynamic" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="id" type="GLuint"/>
<param name="stream" type="GLuint"/>
@@ -10199,7 +10207,7 @@
<param name="primcount" type="GLsizei"/>
</function>
- <function name="MultiDrawElementsEXT" es1="1.0" es2="2.0" exec="dynamic">
+ <function name="MultiDrawElementsEXT" es1="1.0" es2="2.0" exec="dynamic" marshal="draw">
<param name="mode" type="GLenum"/>
<param name="count" type="const GLsizei *"/>
<param name="type" type="GLenum"/>
@@ -11209,7 +11217,7 @@
</category>
<category name="GL_IBM_multimode_draw_arrays" number="200">
- <function name="MultiModeDrawArraysIBM">
+ <function name="MultiModeDrawArraysIBM" marshal="draw">
<param name="mode" type="const GLenum *"/>
<param name="first" type="const GLint *"/>
<param name="count" type="const GLsizei *"/>
@@ -11218,7 +11226,7 @@
<glx handcode="true" ignore="true"/>
</function>
- <function name="MultiModeDrawElementsIBM">
+ <function name="MultiModeDrawElementsIBM" marshal="draw">
<param name="mode" type="const GLenum *"/>
<param name="count" type="const GLsizei *"/>
<param name="type" type="GLenum"/>