gallium: add PIPE_CAP_DRAW_INFO_START_WITH_USER_INDICES
[mesa.git] / src / mapi / glapi / gen / gl_API.xml
index ff4bd8144d7d9d630aafc561aca24a980b23111b..19b2dea482178abfe488dda7ae7ea84260da2999 100644 (file)
     <function name="CallLists" deprecated="3.1">
         <param name="n" type="GLsizei" counter="true"/>
         <param name="type" type="GLenum"/>
-        <param name="lists" type="const GLvoid *" variable_param="type" count="n"/>
+        <param name="lists" type="const GLvoid *" variable_param="type" count="n"
+               marshal_count="(n * _mesa_calllists_enum_to_count(type))"/>
         <glx rop="2" large="true"/>
     </function>
 
         <glx rop="138" handcode="client"/>
     </function>
 
-    <function name="Enable" es1="1.0" es2="2.0" marshal="custom">
+    <function name="Enable" es1="1.0" es2="2.0"
+              marshal_call_after='if (cap == GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB) _mesa_glthread_disable(ctx, "Enable(DEBUG_OUTPUT_SYNCHRONOUS)");'>
         <param name="cap" type="GLenum"/>
         <glx rop="139" handcode="client"/>
     </function>
         <glx sop="108" handcode="true"/>
     </function>
 
-    <!-- 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="custom">
+    <function name="Flush" es1="1.0" es2="2.0"
+              marshal_call_after="_mesa_glthread_flush_batch(ctx);">
         <glx sop="142" handcode="true"/>
     </function>
 
 
     <function name="ColorPointer" es1="1.0" deprecated="3.1" marshal="async"
               no_error="true"
-              marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)">
+              marshal_call_after="_mesa_glthread_AttribPointer(ctx);">
         <param name="size" type="GLint"/>
         <param name="type" type="GLenum"/>
         <param name="stride" type="GLsizei"/>
         <glx handcode="true"/>
     </function>
 
-    <function name="DrawArrays" es1="1.0" es2="2.0" exec="dynamic" marshal="draw">
+    <function name="DrawArrays" es1="1.0" es2="2.0" exec="dynamic" marshal="draw"
+              marshal_sync="_mesa_glthread_is_non_vbo_draw_arrays(ctx)">
         <param name="mode" type="GLenum"/>
         <param name="first" type="GLint"/>
         <param name="count" type="GLsizei"/>
     </function>
 
     <function name="DrawElements" es1="1.0" es2="2.0" exec="dynamic" marshal="draw"
-              marshal_fail="_mesa_glthread_is_non_vbo_draw_elements(ctx)">
+              marshal_sync="_mesa_glthread_is_non_vbo_draw_elements(ctx)">
         <param name="mode" type="GLenum"/>
         <param name="count" type="GLsizei"/>
         <param name="type" type="GLenum"/>
 
     <function name="EdgeFlagPointer" deprecated="3.1" marshal="async"
               no_error="true"
-              marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)">
+              marshal_call_after="_mesa_glthread_AttribPointer(ctx);">
         <param name="stride" type="GLsizei"/>
         <param name="pointer" type="const GLvoid *"/>
         <glx handcode="true"/>
 
     <function name="IndexPointer" deprecated="3.1" marshal="async"
               no_error="true"
-              marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)">
+              marshal_call_after="_mesa_glthread_AttribPointer(ctx);">
         <param name="type" type="GLenum"/>
         <param name="stride" type="GLsizei"/>
         <param name="pointer" type="const GLvoid *"/>
 
     <function name="NormalPointer" es1="1.0" deprecated="3.1" marshal="async"
               no_error="true"
-              marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)">
+              marshal_call_after="_mesa_glthread_AttribPointer(ctx);">
         <param name="type" type="GLenum"/>
         <param name="stride" type="GLsizei"/>
         <param name="pointer" type="const GLvoid *"/>
 
     <function name="TexCoordPointer" es1="1.0" deprecated="3.1" marshal="async"
               no_error="true"
-              marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)">
+              marshal_call_after="_mesa_glthread_AttribPointer(ctx);">
         <param name="size" type="GLint"/>
         <param name="type" type="GLenum"/>
         <param name="stride" type="GLsizei"/>
 
     <function name="VertexPointer" es1="1.0" deprecated="3.1" marshal="async"
               no_error="true"
-              marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)">
+              marshal_call_after="_mesa_glthread_AttribPointer(ctx);">
         <param name="size" type="GLint"/>
         <param name="type" type="GLenum"/>
         <param name="stride" type="GLsizei"/>
     </function>
 
     <function name="DrawRangeElements" es2="3.0" exec="dynamic" marshal="draw"
-              marshal_fail="_mesa_glthread_is_non_vbo_draw_elements(ctx)">
+              marshal_sync="_mesa_glthread_is_non_vbo_draw_elements(ctx)">
         <param name="mode" type="GLenum"/>
         <param name="start" type="GLuint"/>
         <param name="end" type="GLuint"/>
 
     <function name="FogCoordPointer" deprecated="3.1" marshal="async"
               no_error="true"
-              marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)">
+              marshal_call_after="_mesa_glthread_AttribPointer(ctx);">
         <param name="type" type="GLenum"/>
         <param name="stride" type="GLsizei"/>
         <param name="pointer" type="const GLvoid *"/>
         <glx handcode="true"/>
     </function>
 
-    <function name="MultiDrawArrays" marshal="draw">
+    <function name="MultiDrawArrays" marshal="draw"
+              marshal_sync="_mesa_glthread_is_non_vbo_draw_arrays(ctx)">
         <param name="mode" type="GLenum"/>
         <param name="first" type="const GLint *" count="primcount"/>
         <param name="count" type="const GLsizei *" count="primcount"/>
 
     <function name="SecondaryColorPointer" deprecated="3.1" marshal="async"
               no_error="true"
-              marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)">
+              marshal_call_after="_mesa_glthread_AttribPointer(ctx);">
         <param name="size" type="GLint"/>
         <param name="type" type="GLenum"/>
         <param name="stride" type="GLsizei"/>
     <type name="intptr"   size="4"                  glx_name="CARD32"/>
     <type name="sizeiptr" size="4"  unsigned="true" glx_name="CARD32"/>
 
-    <function name="BindBuffer" es1="1.1" es2="2.0" marshal="custom" no_error="true">
+    <function name="BindBuffer" es1="1.1" es2="2.0" no_error="true"
+              marshal_call_after="_mesa_glthread_BindBuffer(ctx, target, buffer);">
         <param name="target" type="GLenum"/>
         <param name="buffer" type="GLuint"/>
         <glx ignore="true"/>
 
     <function name="VertexAttribPointer" es2="2.0" marshal="async"
               no_error="true"
-              marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)">
+              marshal_call_after="_mesa_glthread_AttribPointer(ctx);">
         <param name="index" type="GLuint"/>
         <param name="size" type="GLint"/>
         <param name="type" type="GLenum"/>
     </function>
 
     <function name="ColorPointerEXT" deprecated="3.1" marshal="async"
-              marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)">
+              marshal_call_after="_mesa_glthread_AttribPointer(ctx);">
         <param name="size" type="GLint"/>
         <param name="type" type="GLenum"/>
         <param name="stride" type="GLsizei"/>
     </function>
 
     <function name="EdgeFlagPointerEXT" deprecated="3.1" marshal="async"
-              marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)">
+              marshal_call_after="_mesa_glthread_AttribPointer(ctx);">
         <param name="stride" type="GLsizei"/>
         <param name="count" type="GLsizei"/>
         <param name="pointer" type="const GLboolean *"/>
     </function>
 
     <function name="IndexPointerEXT" deprecated="3.1" marshal="async"
-              marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)">
+              marshal_call_after="_mesa_glthread_AttribPointer(ctx);">
         <param name="type" type="GLenum"/>
         <param name="stride" type="GLsizei"/>
         <param name="count" type="GLsizei"/>
     </function>
 
     <function name="NormalPointerEXT" deprecated="3.1" marshal="async"
-              marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)">
+              marshal_call_after="_mesa_glthread_AttribPointer(ctx);">
         <param name="type" type="GLenum"/>
         <param name="stride" type="GLsizei"/>
         <param name="count" type="GLsizei"/>
     </function>
 
     <function name="TexCoordPointerEXT" deprecated="3.1" marshal="async"
-              marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)">
+              marshal_call_after="_mesa_glthread_AttribPointer(ctx);">
         <param name="size" type="GLint"/>
         <param name="type" type="GLenum"/>
         <param name="stride" type="GLsizei"/>
     </function>
 
     <function name="VertexPointerEXT" deprecated="3.1" marshal="async"
-              marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)">
+              marshal_call_after="_mesa_glthread_AttribPointer(ctx);">
         <param name="size" type="GLint"/>
         <param name="type" type="GLenum"/>
         <param name="stride" type="GLsizei"/>
     </function>
 
     <function name="MultiDrawElementsEXT" es1="1.0" es2="2.0" exec="dynamic" marshal="draw"
-              marshal_fail="_mesa_glthread_is_non_vbo_draw_elements(ctx)">
+              marshal_sync="_mesa_glthread_is_non_vbo_draw_elements(ctx)">
         <param name="mode" type="GLenum"/>
         <param name="count" type="const GLsizei *" count="primcount"/>
         <param name="type" type="GLenum"/>
 
 <category name="GL_IBM_multimode_draw_arrays" number="200">
     <function name="MultiModeDrawArraysIBM" marshal="draw"
-              marshal_fail="_mesa_glthread_is_non_vbo_draw_elements(ctx)">
+              marshal_sync="_mesa_glthread_is_non_vbo_draw_arrays(ctx)">
         <param name="mode" type="const GLenum *" count="primcount"/>
         <param name="first" type="const GLint *" count="primcount"/>
         <param name="count" type="const GLsizei *" count="primcount"/>
     </function>
 
     <function name="MultiModeDrawElementsIBM" marshal="draw"
-              marshal_fail="_mesa_glthread_is_non_vbo_draw_elements(ctx)">
+              marshal_sync="_mesa_glthread_is_non_vbo_draw_elements(ctx)">
         <param name="mode" type="const GLenum *" count="primcount"/>
         <param name="count" type="const GLsizei *" count="primcount"/>
         <param name="type" type="GLenum"/>