diff options
Diffstat (limited to 'lib/mesa/src/mapi/glapi')
31 files changed, 983 insertions, 789 deletions
diff --git a/lib/mesa/src/mapi/glapi/SConscript b/lib/mesa/src/mapi/glapi/SConscript deleted file mode 100644 index 8ded46f32..000000000 --- a/lib/mesa/src/mapi/glapi/SConscript +++ /dev/null @@ -1,106 +0,0 @@ -####################################################################### -# SConscript for glapi - - -from sys import executable as python_cmd - -Import('*') - -env = env.Clone() - -env.MSVC2013Compat() - -env.Append(CPPDEFINES = [ - 'MAPI_MODE_UTIL', -]) - -if env['platform'] == 'windows': - env.Append(CPPDEFINES = [ - '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers - 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers - 'KHRONOS_DLL_EXPORTS', # declare gl* as __declspec(dllexport) in Khronos headers - ]) - if env['gles']: - env.Append(CPPDEFINES = ['_GLAPI_DLL_EXPORTS']) - else: - # prevent _glapi_* from being declared __declspec(dllimport) - env.Append(CPPDEFINES = ['_GLAPI_NO_EXPORTS']) - -env.Append(CPPPATH = [ - '#/src', - '#/src/mapi', - '#/src/mesa', - Dir('..'), # src/mapi build path -]) - -glapi_sources = [ - 'glapi_dispatch.c', - 'glapi_entrypoint.c', - 'glapi_getproc.c', - 'glapi_nop.c', - 'glapi.c', -] - -mapi_sources = [ - 'u_current.c', - 'u_execmem.c', -] -for s in mapi_sources: - o = env.SharedObject(s[:-2], '../' + s) - glapi_sources.append(o) - -# -# Assembly sources -# -if (env['gcc'] or env['clang']) and \ - env['platform'] not in ('cygwin', 'darwin', 'windows'): - GLAPI = '#src/mapi/glapi/' - sources = [GLAPI + 'gen/gl_and_es_API.xml'] + env.Glob(GLAPI + 'gen/*.xml') - - if env['machine'] == 'x86': - env.Append(CPPDEFINES = [ - 'USE_X86_ASM', - ]) - glapi_sources += [ - 'glapi_x86.S', - ] - env.CodeGenerate( - target = 'glapi_x86.S', - script = GLAPI + 'gen/gl_x86_asm.py', - source = sources, - command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET' - ) - elif env['machine'] == 'x86_64': - env.Append(CPPDEFINES = [ - 'USE_X86_64_ASM', - ]) - glapi_sources += [ - 'glapi_x86-64.S' - ] - env.CodeGenerate( - target = 'glapi_x86-64.S', - script = GLAPI + 'gen/gl_x86-64_asm.py', - source = sources, - command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET' - ) - elif env['machine'] == 'sparc': - env.Append(CPPDEFINES = [ - 'USE_SPARC_ASM', - ]) - glapi_sources += [ - 'glapi_sparc.S' - ] - env.CodeGenerate( - target = 'glapi_sparc.S', - script = GLAPI + 'gen/gl_SPARC_asm.py', - source = sources, - command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET' - ) - else: - pass - -glapi = env.ConvenienceLibrary( - target = 'glapi', - source = glapi_sources, -) -Export('glapi') diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_base_instance.xml b/lib/mesa/src/mapi/glapi/gen/ARB_base_instance.xml index e3bbcd198..0f0d0bfd2 100644 --- a/lib/mesa/src/mapi/glapi/gen/ARB_base_instance.xml +++ b/lib/mesa/src/mapi/glapi/gen/ARB_base_instance.xml @@ -8,8 +8,7 @@ <category name="GL_ARB_base_instance" number="107"> - <function name="DrawArraysInstancedBaseInstance" exec="dynamic" marshal="draw" - marshal_fail="_mesa_glthread_is_non_vbo_draw_elements(ctx)"> + <function name="DrawArraysInstancedBaseInstance" marshal="custom"> <param name="mode" type="GLenum"/> <param name="first" type="GLint"/> <param name="count" type="GLsizei"/> @@ -17,8 +16,7 @@ <param name="baseinstance" type="GLuint"/> </function> - <function name="DrawElementsInstancedBaseInstance" exec="dynamic" marshal="draw" - marshal_fail="_mesa_glthread_is_non_vbo_draw_elements(ctx)"> + <function name="DrawElementsInstancedBaseInstance" marshal="custom"> <param name="mode" type="GLenum"/> <param name="count" type="GLsizei"/> <param name="type" type="GLenum"/> @@ -27,8 +25,7 @@ <param name="baseinstance" type="GLuint"/> </function> - <function name="DrawElementsInstancedBaseVertexBaseInstance" exec="dynamic" marshal="draw" - marshal_fail="_mesa_glthread_is_non_vbo_draw_elements(ctx)"> + <function name="DrawElementsInstancedBaseVertexBaseInstance" marshal="custom"> <param name="mode" type="GLenum"/> <param name="count" type="GLsizei"/> <param name="type" type="GLenum"/> diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_bindless_texture.xml b/lib/mesa/src/mapi/glapi/gen/ARB_bindless_texture.xml index 762cadf6f..2de4493c6 100644 --- a/lib/mesa/src/mapi/glapi/gen/ARB_bindless_texture.xml +++ b/lib/mesa/src/mapi/glapi/gen/ARB_bindless_texture.xml @@ -53,7 +53,7 @@ <function name="UniformHandleui64vARB"> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> - <param name="value" type="const GLuint64 *" /> + <param name="value" type="const GLuint64 *" count="count"/> </function> <function name="ProgramUniformHandleui64ARB"> @@ -66,7 +66,7 @@ <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> - <param name="value" type="const GLuint64 *" /> + <param name="value" type="const GLuint64 *" count="count"/> </function> <function name="IsTextureHandleResidentARB" no_error="true"> @@ -86,7 +86,7 @@ <function name="VertexAttribL1ui64vARB" exec="dynamic"> <param name="index" type="GLuint" /> - <param name="v" type="const GLuint64EXT *" /> + <param name="v" type="const GLuint64EXT *" count="1"/> </function> <function name="GetVertexAttribLui64vARB"> diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_blend_func_extended.xml b/lib/mesa/src/mapi/glapi/gen/ARB_blend_func_extended.xml index 10d85a766..9b66fa2ee 100644 --- a/lib/mesa/src/mapi/glapi/gen/ARB_blend_func_extended.xml +++ b/lib/mesa/src/mapi/glapi/gen/ARB_blend_func_extended.xml @@ -12,7 +12,7 @@ <param name="program" type="GLuint"/> <param name="colorNumber" type="GLuint"/> <param name="index" type="GLuint"/> - <param name="name" type="const GLchar *"/> + <param name="name" type="const GLchar *" count="(strlen(name) + 1)"/> </function> <function name="GetFragDataIndex"> diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_direct_state_access.xml b/lib/mesa/src/mapi/glapi/gen/ARB_direct_state_access.xml index 84ba14153..bb12eed7b 100644 --- a/lib/mesa/src/mapi/glapi/gen/ARB_direct_state_access.xml +++ b/lib/mesa/src/mapi/glapi/gen/ARB_direct_state_access.xml @@ -194,7 +194,7 @@ <function name="NamedFramebufferDrawBuffers" no_error="true"> <param name="framebuffer" type="GLuint" /> <param name="n" type="GLsizei" /> - <param name="bufs" type="const GLenum *" /> + <param name="bufs" type="const GLenum *" count="n"/> </function> <function name="NamedFramebufferReadBuffer" no_error="true"> @@ -205,13 +205,13 @@ <function name="InvalidateNamedFramebufferData"> <param name="framebuffer" type="GLuint" /> <param name="numAttachments" type="GLsizei" /> - <param name="attachments" type="const GLenum *" /> + <param name="attachments" type="const GLenum *" count="numAttachments"/> </function> <function name="InvalidateNamedFramebufferSubData"> <param name="framebuffer" type="GLuint" /> <param name="numAttachments" type="GLsizei" /> - <param name="attachments" type="const GLenum *" /> + <param name="attachments" type="const GLenum *" count="numAttachments"/> <param name="x" type="GLint" /> <param name="y" type="GLint" /> <param name="width" type="GLsizei" /> @@ -222,21 +222,21 @@ <param name="framebuffer" type="GLuint" /> <param name="buffer" type="GLenum" /> <param name="drawbuffer" type="GLint" /> - <param name="value" type="const GLint *" /> + <param name="value" type="const GLint *" count="_mesa_buffer_enum_to_count(buffer)"/> </function> <function name="ClearNamedFramebufferuiv"> <param name="framebuffer" type="GLuint" /> <param name="buffer" type="GLenum" /> <param name="drawbuffer" type="GLint" /> - <param name="value" type="const GLuint *" /> + <param name="value" type="const GLuint *" count="_mesa_buffer_enum_to_count(buffer)"/> </function> <function name="ClearNamedFramebufferfv"> <param name="framebuffer" type="GLuint" /> <param name="buffer" type="GLenum" /> <param name="drawbuffer" type="GLint" /> - <param name="value" type="const GLfloat *" /> + <param name="value" type="const GLfloat *" count="_mesa_buffer_enum_to_count(buffer)"/> </function> <function name="ClearNamedFramebufferfi"> @@ -374,7 +374,8 @@ <param name="fixedsamplelocations" type="GLboolean" /> </function> - <function name="TextureSubImage1D" no_error="true"> + <function name="TextureSubImage1D" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="texture" type="GLuint" /> <param name="level" type="GLint" /> <param name="xoffset" type="GLint" /> @@ -384,7 +385,8 @@ <param name="pixels" type="const GLvoid *" /> </function> - <function name="TextureSubImage2D" no_error="true"> + <function name="TextureSubImage2D" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="texture" type="GLuint" /> <param name="level" type="GLint" /> <param name="xoffset" type="GLint" /> @@ -396,7 +398,8 @@ <param name="pixels" type="const GLvoid *" /> </function> - <function name="TextureSubImage3D" no_error="true"> + <function name="TextureSubImage3D" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="texture" type="GLuint" /> <param name="level" type="GLint" /> <param name="xoffset" type="GLint" /> @@ -410,7 +413,8 @@ <param name="pixels" type="const GLvoid *" /> </function> - <function name="CompressedTextureSubImage1D" no_error="true"> + <function name="CompressedTextureSubImage1D" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="texture" type="GLuint" /> <param name="level" type="GLint" /> <param name="xoffset" type="GLint" /> @@ -420,7 +424,8 @@ <param name="data" type="const GLvoid *" /> </function> - <function name="CompressedTextureSubImage2D" no_error="true"> + <function name="CompressedTextureSubImage2D" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="texture" type="GLuint" /> <param name="level" type="GLint" /> <param name="xoffset" type="GLint" /> @@ -432,7 +437,8 @@ <param name="data" type="const GLvoid *" /> </function> - <function name="CompressedTextureSubImage3D" no_error="true"> + <function name="CompressedTextureSubImage3D" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="texture" type="GLuint" /> <param name="level" type="GLint" /> <param name="xoffset" type="GLint" /> @@ -487,7 +493,7 @@ <function name="TextureParameterfv"> <param name="texture" type="GLuint" /> <param name="pname" type="GLenum" /> - <param name="param" type="const GLfloat *" /> + <param name="param" type="const GLfloat *" count="_mesa_tex_param_enum_to_count(pname)"/> </function> <function name="TextureParameteri"> @@ -499,19 +505,19 @@ <function name="TextureParameterIiv"> <param name="texture" type="GLuint" /> <param name="pname" type="GLenum" /> - <param name="params" type="const GLint *" /> + <param name="params" type="const GLint *" count="_mesa_tex_param_enum_to_count(pname)"/> </function> <function name="TextureParameterIuiv"> <param name="texture" type="GLuint" /> <param name="pname" type="GLenum" /> - <param name="params" type="const GLuint *" /> + <param name="params" type="const GLuint *" count="_mesa_tex_param_enum_to_count(pname)"/> </function> <function name="TextureParameteriv"> <param name="texture" type="GLuint" /> <param name="pname" type="GLenum" /> - <param name="param" type="const GLint *" /> + <param name="param" type="const GLint *" count="_mesa_tex_param_enum_to_count(pname)"/> </function> <function name="GenerateTextureMipmap" no_error="true"> @@ -523,7 +529,8 @@ <param name="texture" type="GLuint" /> </function> - <function name="GetTextureImage"> + <function name="GetTextureImage" + marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)"> <param name="texture" type="GLuint" /> <param name="level" type="GLint" /> <param name="format" type="GLenum" /> @@ -532,7 +539,8 @@ <param name="pixels" type="GLvoid *" /> </function> - <function name="GetCompressedTextureImage"> + <function name="GetCompressedTextureImage" + marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)"> <param name="texture" type="GLuint" /> <param name="level" type="GLint" /> <param name="bufSize" type="GLsizei" /> @@ -579,27 +587,32 @@ <!-- Vertex Array object functions --> - <function name="CreateVertexArrays" no_error="true"> + <function name="CreateVertexArrays" no_error="true" + marshal_call_after="if (COMPAT) _mesa_glthread_GenVertexArrays(ctx, n, arrays);"> <param name="n" type="GLsizei" /> <param name="arrays" type="GLuint *" /> </function> - <function name="DisableVertexArrayAttrib" no_error="true"> + <function name="DisableVertexArrayAttrib" no_error="true" + marshal_call_after="if (COMPAT) _mesa_glthread_ClientState(ctx, &vaobj, VERT_ATTRIB_GENERIC(index), false);"> <param name="vaobj" type="GLuint" /> <param name="index" type="GLuint" /> </function> - <function name="EnableVertexArrayAttrib" no_error="true"> + <function name="EnableVertexArrayAttrib" no_error="true" + marshal_call_after="if (COMPAT) _mesa_glthread_ClientState(ctx, &vaobj, VERT_ATTRIB_GENERIC(index), true);"> <param name="vaobj" type="GLuint" /> <param name="index" type="GLuint" /> </function> - <function name="VertexArrayElementBuffer" no_error="true"> + <function name="VertexArrayElementBuffer" no_error="true" + marshal_call_after="if (COMPAT) _mesa_glthread_DSAElementBuffer(ctx, vaobj, buffer);"> <param name="vaobj" type="GLuint" /> <param name="buffer" type="GLuint" /> </function> - <function name="VertexArrayVertexBuffer" no_error="true"> + <function name="VertexArrayVertexBuffer" no_error="true" + marshal_call_after="if (COMPAT) _mesa_glthread_DSAVertexBuffer(ctx, vaobj, bindingindex, buffer, offset, stride);"> <param name="vaobj" type="GLuint" /> <param name="bindingindex" type="GLuint" /> <param name="buffer" type="GLuint" /> @@ -607,16 +620,18 @@ <param name="stride" type="GLsizei" /> </function> - <function name="VertexArrayVertexBuffers" no_error="true"> + <function name="VertexArrayVertexBuffers" no_error="true" + marshal_call_after="if (COMPAT) _mesa_glthread_DSAVertexBuffers(ctx, vaobj, first, count, buffers, offsets, strides);"> <param name="vaobj" type="GLuint" /> <param name="first" type="GLuint" /> <param name="count" type="GLsizei" /> - <param name="buffers" type="const GLuint *" /> - <param name="offsets" type="const GLintptr *" /> - <param name="strides" type="const GLsizei *" /> + <param name="buffers" type="const GLuint *" count="count"/> + <param name="offsets" type="const GLintptr *" count="count"/> + <param name="strides" type="const GLsizei *" count="count"/> </function> - <function name="VertexArrayAttribFormat"> + <function name="VertexArrayAttribFormat" + marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribFormat(ctx, vaobj, attribindex, size, type, relativeoffset);"> <param name="vaobj" type="GLuint" /> <param name="attribindex" type="GLuint" /> <param name="size" type="GLint" /> @@ -625,7 +640,8 @@ <param name="relativeoffset" type="GLuint" /> </function> - <function name="VertexArrayAttribIFormat"> + <function name="VertexArrayAttribIFormat" + marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribFormat(ctx, vaobj, attribindex, size, type, relativeoffset);"> <param name="vaobj" type="GLuint" /> <param name="attribindex" type="GLuint" /> <param name="size" type="GLint" /> @@ -633,7 +649,8 @@ <param name="relativeoffset" type="GLuint" /> </function> - <function name="VertexArrayAttribLFormat"> + <function name="VertexArrayAttribLFormat" + marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribFormat(ctx, vaobj, attribindex, size, type, relativeoffset);"> <param name="vaobj" type="GLuint" /> <param name="attribindex" type="GLuint" /> <param name="size" type="GLint" /> @@ -641,13 +658,15 @@ <param name="relativeoffset" type="GLuint" /> </function> - <function name="VertexArrayAttribBinding" no_error="true"> + <function name="VertexArrayAttribBinding" no_error="true" + marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribBinding(ctx, vaobj, attribindex, bindingindex);"> <param name="vaobj" type="GLuint" /> <param name="attribindex" type="GLuint" /> <param name="bindingindex" type="GLuint" /> </function> - <function name="VertexArrayBindingDivisor" no_error="true"> + <function name="VertexArrayBindingDivisor" no_error="true" + marshal_call_after="if (COMPAT) _mesa_glthread_DSABindingDivisor(ctx, vaobj, bindingindex, divisor);"> <param name="vaobj" type="GLuint" /> <param name="bindingindex" type="GLuint" /> <param name="divisor" type="GLuint" /> diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml b/lib/mesa/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml index 2f1a93dc8..08ea7a31c 100644 --- a/lib/mesa/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml +++ b/lib/mesa/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml @@ -8,8 +8,7 @@ <category name="GL_ARB_draw_elements_base_vertex" number="62"> - <function name="DrawElementsBaseVertex" es2="3.2" exec="dynamic" marshal="draw" - marshal_fail="_mesa_glthread_is_non_vbo_draw_elements(ctx)"> + <function name="DrawElementsBaseVertex" es2="3.2" marshal="custom"> <param name="mode" type="GLenum"/> <param name="count" type="GLsizei"/> <param name="type" type="GLenum"/> @@ -17,8 +16,7 @@ <param name="basevertex" type="GLint"/> </function> - <function name="DrawRangeElementsBaseVertex" es2="3.2" exec="dynamic" marshal="draw" - marshal_fail="_mesa_glthread_is_non_vbo_draw_elements(ctx)"> + <function name="DrawRangeElementsBaseVertex" es2="3.2" marshal="custom"> <param name="mode" type="GLenum"/> <param name="start" type="GLuint"/> <param name="end" type="GLuint"/> @@ -28,18 +26,16 @@ <param name="basevertex" type="GLint"/> </function> - <function name="MultiDrawElementsBaseVertex" exec="dynamic" marshal="draw" - marshal_fail="_mesa_glthread_is_non_vbo_draw_elements(ctx)"> + <function name="MultiDrawElementsBaseVertex" marshal="custom"> <param name="mode" type="GLenum"/> - <param name="count" type="const GLsizei *"/> + <param name="count" type="const GLsizei *" count="primcount"/> <param name="type" type="GLenum"/> - <param name="indices" type="const GLvoid * const *"/> + <param name="indices" type="const GLvoid * const *" count="(sizeof(GLvoid *) * primcount)"/> <param name="primcount" type="GLsizei"/> - <param name="basevertex" type="const GLint *"/> + <param name="basevertex" type="const GLint *" count="primcount"/> </function> - <function name="DrawElementsInstancedBaseVertex" es2="3.2" exec="dynamic" marshal="draw" - marshal_fail="_mesa_glthread_is_non_vbo_draw_elements(ctx)"> + <function name="DrawElementsInstancedBaseVertex" es2="3.2" marshal="custom"> <param name="mode" type="GLenum"/> <param name="count" type="GLsizei"/> <param name="type" type="GLenum"/> diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_draw_instanced.xml b/lib/mesa/src/mapi/glapi/gen/ARB_draw_instanced.xml index 8d7fd6301..2d67f0a43 100644 --- a/lib/mesa/src/mapi/glapi/gen/ARB_draw_instanced.xml +++ b/lib/mesa/src/mapi/glapi/gen/ARB_draw_instanced.xml @@ -8,15 +8,14 @@ <category name="GL_ARB_draw_instanced" number="44"> - <function name="DrawArraysInstancedARB" exec="dynamic" marshal="draw"> + <function name="DrawArraysInstancedARB" marshal="custom"> <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" marshal="draw" - marshal_fail="_mesa_glthread_is_non_vbo_draw_elements(ctx)"> + <function name="DrawElementsInstancedARB" marshal="custom"> <param name="mode" type="GLenum"/> <param name="count" type="GLsizei"/> <param name="type" type="GLenum"/> diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_sampler_objects.xml b/lib/mesa/src/mapi/glapi/gen/ARB_sampler_objects.xml index e10984b3f..1e628124c 100644 --- a/lib/mesa/src/mapi/glapi/gen/ARB_sampler_objects.xml +++ b/lib/mesa/src/mapi/glapi/gen/ARB_sampler_objects.xml @@ -14,7 +14,7 @@ <function name="DeleteSamplers" es2="3.0" no_error="true"> <param name="count" type="GLsizei"/> - <param name="samplers" type="const GLuint *"/> + <param name="samplers" type="const GLuint *" count="count"/> </function> <function name="IsSampler" es2="3.0"> @@ -42,25 +42,25 @@ <function name="SamplerParameteriv" es2="3.0"> <param name="sampler" type="GLuint"/> <param name="pname" type="GLenum"/> - <param name="params" type="const GLint *"/> + <param name="params" type="const GLint *" count="_mesa_tex_param_enum_to_count(pname)"/> </function> <function name="SamplerParameterfv" es2="3.0"> <param name="sampler" type="GLuint"/> <param name="pname" type="GLenum"/> - <param name="params" type="const GLfloat *"/> + <param name="params" type="const GLfloat *" count="_mesa_tex_param_enum_to_count(pname)"/> </function> <function name="SamplerParameterIiv" es2="3.2"> <param name="sampler" type="GLuint"/> <param name="pname" type="GLenum"/> - <param name="params" type="const GLint *"/> + <param name="params" type="const GLint *" count="_mesa_tex_param_enum_to_count(pname)"/> </function> <function name="SamplerParameterIuiv" es2="3.2"> <param name="sampler" type="GLuint"/> <param name="pname" type="GLenum"/> - <param name="params" type="const GLuint *"/> + <param name="params" type="const GLuint *" count="_mesa_tex_param_enum_to_count(pname)"/> </function> <function name="GetSamplerParameteriv" es2="3.0"> diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_separate_shader_objects.xml b/lib/mesa/src/mapi/glapi/gen/ARB_separate_shader_objects.xml index 2273b4875..c9737e74a 100644 --- a/lib/mesa/src/mapi/glapi/gen/ARB_separate_shader_objects.xml +++ b/lib/mesa/src/mapi/glapi/gen/ARB_separate_shader_objects.xml @@ -35,7 +35,7 @@ </function> <function name="DeleteProgramPipelines" es2="3.1"> <param name="n" type="GLsizei" /> - <param name="pipelines" type="const GLuint *" /> + <param name="pipelines" type="const GLuint *" count="n"/> </function> <function name="GenProgramPipelines" es2="3.1" no_error="true"> <param name="n" type="GLsizei" /> diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_vertex_array_object.xml b/lib/mesa/src/mapi/glapi/gen/ARB_vertex_array_object.xml index befa4c91c..ba011987e 100644 --- a/lib/mesa/src/mapi/glapi/gen/ARB_vertex_array_object.xml +++ b/lib/mesa/src/mapi/glapi/gen/ARB_vertex_array_object.xml @@ -11,16 +11,18 @@ <enum name="VERTEX_ARRAY_BINDING" value="0x85B5"/> <function name="BindVertexArray" es2="3.0" no_error="true" - marshal_fail="_mesa_glthread_is_compat_bind_vertex_array(ctx)"> + marshal_call_after="if (COMPAT) _mesa_glthread_BindVertexArray(ctx, array);"> <param name="array" type="GLuint"/> </function> - <function name="DeleteVertexArrays" es2="3.0" no_error="true"> + <function name="DeleteVertexArrays" es2="3.0" no_error="true" + marshal_call_after="if (COMPAT) _mesa_glthread_DeleteVertexArrays(ctx, n, arrays);"> <param name="n" type="GLsizei"/> <param name="arrays" type="const GLuint *" count="n"/> </function> - <function name="GenVertexArrays" es2="3.0" no_error="true"> + <function name="GenVertexArrays" es2="3.0" no_error="true" + marshal_call_after="if (COMPAT) _mesa_glthread_GenVertexArrays(ctx, n, arrays);"> <param name="n" type="GLsizei"/> <param name="arrays" type="GLuint *"/> </function> diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_64bit.xml b/lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_64bit.xml index 4d66ee50c..901449447 100644 --- a/lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_64bit.xml +++ b/lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_64bit.xml @@ -5,25 +5,25 @@ <category name="GL_ARB_vertex_attrib_64bit" number="99"> - <function name="VertexAttribL1d"> + <function name="VertexAttribL1d" exec="dynamic"> <param name="index" type="GLuint"/> <param name="x" type="GLdouble"/> </function> - <function name="VertexAttribL2d"> + <function name="VertexAttribL2d" exec="dynamic"> <param name="index" type="GLuint"/> <param name="x" type="GLdouble"/> <param name="y" type="GLdouble"/> </function> - <function name="VertexAttribL3d"> + <function name="VertexAttribL3d" exec="dynamic"> <param name="index" type="GLuint"/> <param name="x" type="GLdouble"/> <param name="y" type="GLdouble"/> <param name="z" type="GLdouble"/> </function> - <function name="VertexAttribL4d"> + <function name="VertexAttribL4d" exec="dynamic"> <param name="index" type="GLuint"/> <param name="x" type="GLdouble"/> <param name="y" type="GLdouble"/> @@ -31,27 +31,28 @@ <param name="w" type="GLdouble"/> </function> - <function name="VertexAttribL1dv"> + <function name="VertexAttribL1dv" exec="dynamic"> <param name="index" type="GLuint"/> - <param name="v" type="const GLdouble *"/> + <param name="v" type="const GLdouble *" count="1"/> </function> - <function name="VertexAttribL2dv"> + <function name="VertexAttribL2dv" exec="dynamic"> <param name="index" type="GLuint"/> - <param name="v" type="const GLdouble *"/> + <param name="v" type="const GLdouble *" count="2"/> </function> - <function name="VertexAttribL3dv"> + <function name="VertexAttribL3dv" exec="dynamic"> <param name="index" type="GLuint"/> - <param name="v" type="const GLdouble *"/> + <param name="v" type="const GLdouble *" count="3"/> </function> - <function name="VertexAttribL4dv"> + <function name="VertexAttribL4dv" exec="dynamic"> <param name="index" type="GLuint"/> - <param name="v" type="const GLdouble *"/> + <param name="v" type="const GLdouble *" count="4"/> </function> - <function name="VertexAttribLPointer" no_error="true"> + <function name="VertexAttribLPointer" no_error="true" marshal="async" + marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_GENERIC(index), size, type, stride, pointer);"> <param name="index" type="GLuint"/> <param name="size" type="GLint"/> <param name="type" type="GLenum"/> @@ -65,7 +66,8 @@ <param name="params" type="GLdouble *"/> </function> - <function name="VertexArrayVertexAttribLOffsetEXT"> + <function name="VertexArrayVertexAttribLOffsetEXT" + marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribPointer(ctx, vaobj, buffer, VERT_ATTRIB_GENERIC(index), size, type, stride, offset);"> <param name="vaobj" type="GLuint" /> <param name="buffer" type="GLuint" /> <param name="index" type="GLuint" /> diff --git a/lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml b/lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml index 2270e6a29..056cc3454 100644 --- a/lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml +++ b/lib/mesa/src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml @@ -7,14 +7,16 @@ <category name="GL_ARB_vertex_attrib_binding" number="125"> - <function name="BindVertexBuffer" es2="3.1" no_error="true"> + <function name="BindVertexBuffer" es2="3.1" no_error="true" + marshal_call_after="if (COMPAT) _mesa_glthread_VertexBuffer(ctx, bindingindex, buffer, offset, stride);"> <param name="bindingindex" type="GLuint"/> <param name="buffer" type="GLuint"/> <param name="offset" type="GLintptr"/> <param name="stride" type="GLsizei"/> </function> - <function name="VertexAttribFormat" es2="3.1"> + <function name="VertexAttribFormat" es2="3.1" + marshal_call_after="if (COMPAT) _mesa_glthread_AttribFormat(ctx, attribindex, size, type, relativeoffset);"> <param name="attribindex" type="GLuint"/> <param name="size" type="GLint"/> <param name="type" type="GLenum"/> @@ -22,31 +24,36 @@ <param name="relativeoffset" type="GLuint"/> </function> - <function name="VertexAttribIFormat" es2="3.1"> + <function name="VertexAttribIFormat" es2="3.1" + marshal_call_after="if (COMPAT) _mesa_glthread_AttribFormat(ctx, attribindex, size, type, relativeoffset);"> <param name="attribindex" type="GLuint"/> <param name="size" type="GLint"/> <param name="type" type="GLenum"/> <param name="relativeoffset" type="GLuint"/> </function> - <function name="VertexAttribLFormat"> + <function name="VertexAttribLFormat" + marshal_call_after="if (COMPAT) _mesa_glthread_AttribFormat(ctx, attribindex, size, type, relativeoffset);"> <param name="attribindex" type="GLuint"/> <param name="size" type="GLint"/> <param name="type" type="GLenum"/> <param name="relativeoffset" type="GLuint"/> </function> - <function name="VertexAttribBinding" es2="3.1" no_error="true"> + <function name="VertexAttribBinding" es2="3.1" no_error="true" + marshal_call_after="if (COMPAT) _mesa_glthread_AttribBinding(ctx, attribindex, bindingindex);"> <param name="attribindex" type="GLuint"/> <param name="bindingindex" type="GLuint"/> </function> - <function name="VertexBindingDivisor" es2="3.1" no_error="true"> - <param name="attribindex" type="GLuint"/> + <function name="VertexBindingDivisor" es2="3.1" no_error="true" + marshal_call_after="if (COMPAT) _mesa_glthread_BindingDivisor(ctx, bindingindex, divisor);"> + <param name="bindingindex" type="GLuint"/> <param name="divisor" type="GLuint"/> </function> - <function name="VertexArrayBindVertexBufferEXT"> + <function name="VertexArrayBindVertexBufferEXT" + marshal_call_after="if (COMPAT) _mesa_glthread_DSAVertexBuffer(ctx, vaobj, bindingindex, buffer, offset, stride);"> <param name="vaobj" type="GLuint"/> <param name="bindingindex" type="GLuint"/> <param name="buffer" type="GLuint"/> @@ -54,7 +61,8 @@ <param name="stride" type="GLsizei"/> </function> - <function name="VertexArrayVertexAttribFormatEXT"> + <function name="VertexArrayVertexAttribFormatEXT" + marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribFormat(ctx, vaobj, attribindex, size, type, relativeoffset);"> <param name="vaobj" type="GLuint"/> <param name="attribindex" type="GLuint"/> <param name="size" type="GLint"/> @@ -63,7 +71,8 @@ <param name="relativeoffset" type="GLuint"/> </function> - <function name="VertexArrayVertexAttribIFormatEXT"> + <function name="VertexArrayVertexAttribIFormatEXT" + marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribFormat(ctx, vaobj, attribindex, size, type, relativeoffset);"> <param name="vaobj" type="GLuint"/> <param name="attribindex" type="GLuint"/> <param name="size" type="GLint"/> @@ -71,7 +80,8 @@ <param name="relativeoffset" type="GLuint"/> </function> - <function name="VertexArrayVertexAttribLFormatEXT"> + <function name="VertexArrayVertexAttribLFormatEXT" + marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribFormat(ctx, vaobj, attribindex, size, type, relativeoffset);"> <param name="vaobj" type="GLuint"/> <param name="attribindex" type="GLuint"/> <param name="size" type="GLint"/> @@ -79,15 +89,17 @@ <param name="relativeoffset" type="GLuint"/> </function> - <function name="VertexArrayVertexAttribBindingEXT"> + <function name="VertexArrayVertexAttribBindingEXT" + marshal_call_after="if (COMPAT) _mesa_glthread_DSAAttribBinding(ctx, vaobj, attribindex, bindingindex);"> <param name="vaobj" type="GLuint"/> <param name="attribindex" type="GLuint"/> <param name="bindingindex" type="GLuint"/> </function> - <function name="VertexArrayVertexBindingDivisorEXT"> + <function name="VertexArrayVertexBindingDivisorEXT" + marshal_call_after="if (COMPAT) _mesa_glthread_DSABindingDivisor(ctx, vaobj, bindingindex, divisor);"> <param name="vaobj" type="GLuint"/> - <param name="attribindex" type="GLuint"/> + <param name="bindingindex" type="GLuint"/> <param name="divisor" type="GLuint"/> </function> diff --git a/lib/mesa/src/mapi/glapi/gen/EXT_transform_feedback.xml b/lib/mesa/src/mapi/glapi/gen/EXT_transform_feedback.xml index 26948cc7b..01aa2a364 100644 --- a/lib/mesa/src/mapi/glapi/gen/EXT_transform_feedback.xml +++ b/lib/mesa/src/mapi/glapi/gen/EXT_transform_feedback.xml @@ -89,7 +89,7 @@ <function name="DeleteTransformFeedbacks" es2="3.0"> <param name="n" type="GLsizei"/> - <param name="ids" type="const GLuint *"/> + <param name="ids" type="const GLuint *" count="n"/> </function> <function name="GenTransformFeedbacks" es2="3.0"> @@ -108,7 +108,7 @@ <function name="ResumeTransformFeedback" es2="3.0" no_error="true"> </function> - <function name="DrawTransformFeedback" exec="dynamic" marshal="draw"> + <function name="DrawTransformFeedback"> <param name="mode" type="GLenum"/> <param name="id" type="GLuint"/> </function> diff --git a/lib/mesa/src/mapi/glapi/gen/GL3x.xml b/lib/mesa/src/mapi/glapi/gen/GL3x.xml index 750bc0230..c44245964 100644 --- a/lib/mesa/src/mapi/glapi/gen/GL3x.xml +++ b/lib/mesa/src/mapi/glapi/gen/GL3x.xml @@ -117,25 +117,25 @@ <!-- These functions are unique to GL3 --> - <function name="ClearBufferiv" es2="3.0" marshal="custom" no_error="true"> + <function name="ClearBufferiv" es2="3.0" no_error="true"> <param name="buffer" type="GLenum"/> <param name="drawbuffer" type="GLint"/> - <param name="value" type="const GLint *"/> + <param name="value" type="const GLint *" count="_mesa_buffer_enum_to_count(buffer)"/> </function> - <function name="ClearBufferuiv" es2="3.0" marshal="custom" no_error="true"> + <function name="ClearBufferuiv" es2="3.0" no_error="true"> <param name="buffer" type="GLenum"/> <param name="drawbuffer" type="GLint"/> - <param name="value" type="const GLuint *"/> + <param name="value" type="const GLuint *" count="_mesa_buffer_enum_to_count(buffer)"/> </function> - <function name="ClearBufferfv" es2="3.0" marshal="custom" no_error="true"> + <function name="ClearBufferfv" es2="3.0" no_error="true"> <param name="buffer" type="GLenum"/> <param name="drawbuffer" type="GLint"/> - <param name="value" type="const GLfloat *"/> + <param name="value" type="const GLfloat *" count="_mesa_buffer_enum_to_count(buffer)"/> </function> - <function name="ClearBufferfi" es2="3.0" marshal="custom" no_error="true"> + <function name="ClearBufferfi" es2="3.0" no_error="true"> <param name="buffer" type="GLenum"/> <param name="drawbuffer" type="GLint"/> <param name="depth" type="GLfloat"/> @@ -203,7 +203,7 @@ <function name="BindFragDataLocation" no_error="true"> <param name="program" type="GLuint"/> <param name="colorNumber" type="GLuint"/> - <param name="name" type="const GLchar *"/> + <param name="name" type="const GLchar *" count="(strlen(name) + 1)"/> </function> <function name="BeginTransformFeedback" es2="3.0" no_error="true"> @@ -258,7 +258,7 @@ <function name="VertexAttribIPointer" es2="3.0" marshal="async" no_error="true" - marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)"> + marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_GENERIC(index), size, type, stride, pointer);"> <param name="index" type="GLuint"/> <param name="size" type="GLint"/> <param name="type" type="GLenum"/> @@ -330,9 +330,9 @@ <param name="w" type="GLuint"/> </function> - <function name="VertexAttribI1iv"> + <function name="VertexAttribI1iv" exec="dynamic"> <param name="index" type="GLuint"/> - <param name="v" type="const GLint *"/> + <param name="v" type="const GLint *" count="1"/> </function> <function name="VertexAttribI2iv" alias="VertexAttribI2ivEXT"> @@ -350,9 +350,9 @@ <param name="v" type="const GLint *"/> </function> - <function name="VertexAttribI1uiv"> + <function name="VertexAttribI1uiv" exec="dynamic"> <param name="index" type="GLuint"/> - <param name="v" type="const GLuint *"/> + <param name="v" type="const GLuint *" count="1"/> </function> <function name="VertexAttribI2uiv" alias="VertexAttribI2uivEXT"> @@ -370,24 +370,24 @@ <param name="v" type="const GLuint *"/> </function> - <function name="VertexAttribI4bv"> + <function name="VertexAttribI4bv" exec="dynamic"> <param name="index" type="GLuint"/> - <param name="v" type="const GLbyte *"/> + <param name="v" type="const GLbyte *" count="4"/> </function> - <function name="VertexAttribI4sv"> + <function name="VertexAttribI4sv" exec="dynamic"> <param name="index" type="GLuint"/> - <param name="v" type="const GLshort *"/> + <param name="v" type="const GLshort *" count="4"/> </function> - <function name="VertexAttribI4ubv"> + <function name="VertexAttribI4ubv" exec="dynamic"> <param name="index" type="GLuint"/> - <param name="v" type="const GLubyte *"/> + <param name="v" type="const GLubyte *" count="4"/> </function> - <function name="VertexAttribI4usv"> + <function name="VertexAttribI4usv" exec="dynamic"> <param name="index" type="GLuint"/> - <param name="v" type="const GLushort *"/> + <param name="v" type="const GLushort *" count="4"/> </function> <function name="GetUniformuiv" es2="3.0"> @@ -451,13 +451,13 @@ <function name="TexParameterIiv" es2="3.2"> <param name="target" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="params" type="const GLint *"/> + <param name="params" type="const GLint *" count="_mesa_tex_param_enum_to_count(pname)"/> </function> <function name="TexParameterIuiv" es2="3.2"> <param name="target" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="params" type="const GLuint *"/> + <param name="params" type="const GLuint *" count="_mesa_tex_param_enum_to_count(pname)"/> </function> <function name="GetTexParameterIiv" es2="3.2"> @@ -563,7 +563,8 @@ <param name="buffer" type="GLuint"/> </function> - <function name="PrimitiveRestartIndex" no_error="true"> + <function name="PrimitiveRestartIndex" no_error="true" + marshal_call_after="_mesa_glthread_PrimitiveRestartIndex(ctx, index);"> <param name="index" type="GLuint"/> </function> @@ -625,7 +626,8 @@ <enum name="TEXTURE_SWIZZLE_A" value="0x8E45"/> <enum name="TEXTURE_SWIZZLE_RGBA" value="0x8E46"/> - <function name="VertexAttribDivisor" es2="3.0" no_error="true"> + <function name="VertexAttribDivisor" es2="3.0" no_error="true" + marshal_call_after="if (COMPAT) _mesa_glthread_AttribDivisor(ctx, NULL, VERT_ATTRIB_GENERIC(index), divisor);"> <param name="index" type="GLuint"/> <param name="divisor" type="GLuint"/> </function> diff --git a/lib/mesa/src/mapi/glapi/gen/NV_alpha_to_coverage_dither_control.xml b/lib/mesa/src/mapi/glapi/gen/NV_alpha_to_coverage_dither_control.xml new file mode 100644 index 000000000..0ddc7b83a --- /dev/null +++ b/lib/mesa/src/mapi/glapi/gen/NV_alpha_to_coverage_dither_control.xml @@ -0,0 +1,20 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd"> + +<OpenGLAPI> + +<category name="GL_NV_alpha_to_coverage_dither_control" number="500" no_error="true"> + + <enum name="ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV" value="0x934D" /> + <enum name="ALPHA_TO_COVERAGE_DITHER_ENABLE_NV" value="0x934E" /> + <enum name="ALPHA_TO_COVERAGE_DITHER_DISABLE_NV" value="0x934F" /> + + <enum name="ALPHA_TO_COVERAGE_DITHER_MODE_NV" value="0x92BF"/> + + <function name="AlphaToCoverageDitherControlNV"> + <param name="mode" type="GLenum"/> + </function> + +</category> + +</OpenGLAPI> diff --git a/lib/mesa/src/mapi/glapi/gen/NV_copy_image.xml b/lib/mesa/src/mapi/glapi/gen/NV_copy_image.xml new file mode 100644 index 000000000..9fe144cde --- /dev/null +++ b/lib/mesa/src/mapi/glapi/gen/NV_copy_image.xml @@ -0,0 +1,27 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd"> + +<OpenGLAPI> + +<category name="GL_NV_copy_image" number="376" no_error="true"> + <function name="CopyImageSubDataNV"> + <param name="srcName" type="GLuint"/> + <param name="srcTarget" type="GLenum"/> + <param name="srcLevel" type="GLint"/> + <param name="srcX" type="GLint"/> + <param name="srcY" type="GLint"/> + <param name="srcZ" type="GLint"/> + <param name="dstName" type="GLuint"/> + <param name="dstTarget" type="GLenum"/> + <param name="dstLevel" type="GLint"/> + <param name="dstX" type="GLint"/> + <param name="dstY" type="GLint"/> + <param name="dstZ" type="GLint"/> + <param name="width" type="GLsizei"/> + <param name="height" type="GLsizei"/> + <param name="depth" type="GLsizei"/> + </function> + +</category> + +</OpenGLAPI> diff --git a/lib/mesa/src/mapi/glapi/gen/NV_viewport_swizzle.xml b/lib/mesa/src/mapi/glapi/gen/NV_viewport_swizzle.xml new file mode 100644 index 000000000..bf405b6dc --- /dev/null +++ b/lib/mesa/src/mapi/glapi/gen/NV_viewport_swizzle.xml @@ -0,0 +1,34 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd"> + +<!-- Note: no GLX protocol info yet. --> + +<OpenGLAPI> + +<category name="GL_NV_viewport_swizzle" number="483"> + + <function name="ViewportSwizzleNV" no_error="true" es2="3.1"> + <param name="index" type="GLuint"/> + <param name="swizzlex" type="GLenum"/> + <param name="swizzley" type="GLenum"/> + <param name="swizzlez" type="GLenum"/> + <param name="swizzlew" type="GLenum"/> + </function> + + <enum name="VIEWPORT_SWIZZLE_POSITIVE_X_NV" value="0x9350"/> + <enum name="VIEWPORT_SWIZZLE_NEGATIVE_X_NV" value="0x9351"/> + <enum name="VIEWPORT_SWIZZLE_POSITIVE_Y_NV" value="0x9352"/> + <enum name="VIEWPORT_SWIZZLE_NEGATIVE_Y_NV" value="0x9353"/> + <enum name="VIEWPORT_SWIZZLE_POSITIVE_Z_NV" value="0x9354"/> + <enum name="VIEWPORT_SWIZZLE_NEGATIVE_Z_NV" value="0x9355"/> + <enum name="VIEWPORT_SWIZZLE_POSITIVE_W_NV" value="0x9356"/> + <enum name="VIEWPORT_SWIZZLE_NEGATIVE_W_NV" value="0x9357"/> + + <enum name="VIEWPORT_SWIZZLE_X_NV" value="0x9358"/> + <enum name="VIEWPORT_SWIZZLE_Y_NV" value="0x9359"/> + <enum name="VIEWPORT_SWIZZLE_Z_NV" value="0x935A"/> + <enum name="VIEWPORT_SWIZZLE_W_NV" value="0x935B"/> + +</category> + +</OpenGLAPI> diff --git a/lib/mesa/src/mapi/glapi/gen/SConscript b/lib/mesa/src/mapi/glapi/gen/SConscript deleted file mode 100644 index b9cdbbf36..000000000 --- a/lib/mesa/src/mapi/glapi/gen/SConscript +++ /dev/null @@ -1,63 +0,0 @@ -Import('*') - -from sys import executable as python_cmd - - -# Be conservative and depend on all XML files here. Missing dependencies means -# broken builds, whereas extraneous dependencies merely means regenerate the -# .[ch] files -- scons should not recompile them though. -sources = ['gl_and_es_API.xml'] + env.Glob('*.xml') - - -# Generate the GL API headers that are used by various parts of the -# Mesa and GLX tree. Other .c and .h files are generated elsewhere -# if they're only used in one place. - -env.CodeGenerate( - target = '../../../mesa/main/dispatch.h', - script = 'gl_table.py', - source = sources, - command = python_cmd + ' $SCRIPT -m remap_table -f $SOURCE > $TARGET', - ) - -env.CodeGenerate( - target = '../../../mapi/glapi/glapitable.h', - script = 'gl_table.py', - source = sources, - command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET' - ) - -env.CodeGenerate( - target = '../../../mapi/glapi/glapitemp.h', - script = 'gl_apitemp.py', - source = sources, - command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET' - ) - -env.CodeGenerate( - target = '../../../mapi/glapi/glprocs.h', - script = 'gl_procs.py', - source = sources, - command = python_cmd + ' $SCRIPT -c -f $SOURCE > $TARGET' - ) - -env.CodeGenerate( - target = '../../../mesa/main/remap_helper.h', - script = 'remap_helper.py', - source = sources, - command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET' - ) - -env.CodeGenerate( - target = '../../../mesa/main/enums.c', - script = 'gl_enums.py', - source = sources, - command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET' - ) - -env.CodeGenerate( - target = '../../../mesa/main/api_exec.c', - script = 'gl_genexec.py', - source = sources, - command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET' - ) diff --git a/lib/mesa/src/mapi/glapi/gen/es_EXT.xml b/lib/mesa/src/mapi/glapi/gen/es_EXT.xml index adbcba1ed..929b40bbd 100644 --- a/lib/mesa/src/mapi/glapi/gen/es_EXT.xml +++ b/lib/mesa/src/mapi/glapi/gen/es_EXT.xml @@ -319,7 +319,8 @@ <enum name="POINT_SIZE_ARRAY_BUFFER_BINDING_OES" value="0x8B9F"/> <function name="PointSizePointerOES" es1="1.0" desktop="false" - no_error="true"> + no_error="true" marshal="async" + marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_POINT_SIZE, 1, type, stride, pointer);"> <param name="type" type="GLenum"/> <param name="stride" type="GLsizei"/> <param name="pointer" type="const GLvoid *"/> @@ -818,6 +819,11 @@ <xi:include href="EXT_multisampled_render_to_texture.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> +<!-- 110. GL_ANGLE_pack_reverse_row_order --> +<category name="GL_ANGLE_pack_reverse_row_order" number="110"> + <enum name="PACK_REVERSE_ROW_ORDER_ANGLE" value="0x93A4"/> +</category> + <!-- 111. GL_ANGLE_texture_compression_dxt --> <category name="GL_ANGLE_texture_compression_dxt" number="111"> <enum name="COMPRESSED_RGBA_S3TC_DXT3_ANGLE" value="0x83F2"/> @@ -1070,7 +1076,7 @@ <category name="GL_EXT_draw_elements_base_vertex" number="204"> <function name="DrawElementsBaseVertexEXT" alias="DrawElementsBaseVertex" - es2="2.0" exec="dynamic"> + es2="2.0"> <param name="mode" type="GLenum"/> <param name="count" type="GLsizei"/> <param name="type" type="GLenum"/> @@ -1079,7 +1085,7 @@ </function> <function name="DrawRangeElementsBaseVertexEXT" alias="DrawRangeElementsBaseVertex" - es2="3.0" exec="dynamic"> + es2="3.0"> <param name="mode" type="GLenum"/> <param name="start" type="GLuint"/> <param name="end" type="GLuint"/> @@ -1090,7 +1096,7 @@ </function> <function name="MultiDrawElementsBaseVertexEXT" alias="MultiDrawElementsBaseVertex" - es2="2.0" exec="dynamic"> + es2="2.0"> <param name="mode" type="GLenum"/> <param name="count" type="const GLsizei *"/> <param name="type" type="GLenum"/> @@ -1100,7 +1106,7 @@ </function> <function name="DrawElementsInstancedBaseVertexEXT" alias="DrawElementsInstancedBaseVertex" - es2="3.0" exec="dynamic"> + es2="3.0"> <param name="mode" type="GLenum"/> <param name="count" type="GLsizei"/> <param name="type" type="GLenum"/> @@ -1222,7 +1228,7 @@ <category name="GL_OES_draw_elements_base_vertex" number="219"> <function name="DrawElementsBaseVertexOES" alias="DrawElementsBaseVertex" - es2="2.0" exec="dynamic"> + es2="2.0"> <param name="mode" type="GLenum"/> <param name="count" type="GLsizei"/> <param name="type" type="GLenum"/> @@ -1231,7 +1237,7 @@ </function> <function name="DrawRangeElementsBaseVertexOES" alias="DrawRangeElementsBaseVertex" - es2="3.0" exec="dynamic"> + es2="3.0"> <param name="mode" type="GLenum"/> <param name="start" type="GLuint"/> <param name="end" type="GLuint"/> @@ -1242,7 +1248,7 @@ </function> <function name="DrawElementsInstancedBaseVertexOES" alias="DrawElementsInstancedBaseVertex" - es2="3.0" exec="dynamic"> + es2="3.0"> <param name="mode" type="GLenum"/> <param name="count" type="GLsizei"/> <param name="type" type="GLenum"/> @@ -1463,7 +1469,7 @@ <function name="DepthRangeArrayfvOES" es2="3.1" desktop="false"> <param name="first" type="GLuint"/> <param name="count" type="GLsizei"/> - <param name="v" type="const GLfloat *"/> + <param name="v" type="const GLfloat *" count="(2 * count)"/> </function> <function name="DepthRangeIndexedfOES" es2="3.1" desktop="false"> <param name="index" type="GLuint"/> diff --git a/lib/mesa/src/mapi/glapi/gen/glX_proto_send.py b/lib/mesa/src/mapi/glapi/gen/glX_proto_send.py index a269ff206..a55c737d0 100644 --- a/lib/mesa/src/mapi/glapi/gen/glX_proto_send.py +++ b/lib/mesa/src/mapi/glapi/gen/glX_proto_send.py @@ -441,10 +441,8 @@ __indirect_get_proc_address(const char *name) print('#define %s %d' % (func.opcode_vendor_name(name), func.glx_vendorpriv)) print('%s gl%s(%s)' % (func.return_type, func_name, func.get_parameter_string())) print('{') - print(' struct glx_context * const gc = __glXGetCurrentContext();') - print('') print('#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)') - print(' if (gc->isDirect) {') + print(' if (((struct glx_context *)__glXGetCurrentContext())->isDirect) {') print(' const _glapi_proc *const disp_table = (_glapi_proc *)GET_DISPATCH();') print(' PFNGL%sPROC p =' % (name.upper())) print(' (PFNGL%sPROC) disp_table[%d];' % (name.upper(), func.offset)) diff --git a/lib/mesa/src/mapi/glapi/gen/gl_API.dtd b/lib/mesa/src/mapi/glapi/gen/gl_API.dtd index b46425077..3d1801ad2 100644 --- a/lib/mesa/src/mapi/glapi/gen/gl_API.dtd +++ b/lib/mesa/src/mapi/glapi/gen/gl_API.dtd @@ -40,7 +40,9 @@ exec NMTOKEN #IMPLIED desktop (true | false) "true" marshal NMTOKEN #IMPLIED - marshal_fail CDATA #IMPLIED> + marshal_sync CDATA #IMPLIED> + marshal_count CDATA #IMPLIED> + marshal_call_after CDATA #IMPLIED> <!ATTLIST size name NMTOKEN #REQUIRED count NMTOKEN #IMPLIED mode (get | set) "set"> @@ -122,18 +124,17 @@ 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 + marshal - One of "sync", "async", 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). - marshal_fail - an expression that, if it evaluates true, causes glthread - to switch back to the Mesa implementation and call it directly. Used - to disable glthread for GL compatibility interactions that we don't - want to track state for. + marshal_sync - an expression that, if it evaluates true, causes glthread + to sync and execute the call directly. + marshal_count - same as count, but variable_param is ignored. Used by + glthread. + marshal_call_after - insert the string at the end of the marshal function glx: rop - Opcode value for "render" commands diff --git a/lib/mesa/src/mapi/glapi/gen/gl_API.xml b/lib/mesa/src/mapi/glapi/gen/gl_API.xml index 1cee28f31..f0496a142 100644 --- a/lib/mesa/src/mapi/glapi/gen/gl_API.xml +++ b/lib/mesa/src/mapi/glapi/gen/gl_API.xml @@ -1088,6 +1088,7 @@ <type name="double" size="8" float="true" glx_name="FLOAT64"/> <type name="clampd" size="8" float="true" glx_name="FLOAT64"/> + <type name="halfNV" size="2" float="true" glx_name="FLOAT16"/> <type name="float" size="4" float="true" glx_name="FLOAT32"/> <type name="clampf" size="4" float="true" glx_name="FLOAT32"/> @@ -1109,29 +1110,35 @@ <type name="DEBUGPROCARB" size="4" pointer="true"/> <type name="DEBUGPROC" size="4" pointer="true"/> - <function name="NewList" deprecated="3.1" marshal_fail="true"> + <function name="NewList" deprecated="3.1" + marshal_call_after="_mesa_glthread_NewList(ctx, list, mode);"> <param name="list" type="GLuint"/> <param name="mode" type="GLenum"/> <glx sop="101"/> </function> - <function name="EndList" deprecated="3.1"> + <function name="EndList" deprecated="3.1" + marshal_call_after="_mesa_glthread_EndList(ctx);"> <glx sop="102"/> </function> - <function name="CallList" deprecated="3.1"> + <function name="CallList" deprecated="3.1" + marshal_call_after="_mesa_glthread_CallList(ctx, list);"> <param name="list" type="GLuint"/> <glx rop="1"/> </function> - <function name="CallLists" deprecated="3.1"> + <function name="CallLists" deprecated="3.1" + marshal_call_after="_mesa_glthread_CallLists(ctx, n, type, lists);"> <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> - <function name="DeleteLists" deprecated="3.1"> + <function name="DeleteLists" deprecated="3.1" + marshal_call_after="_mesa_glthread_DeleteLists(ctx, range);"> <param name="list" type="GLuint"/> <param name="range" type="GLsizei"/> <glx sop="103"/> @@ -1143,7 +1150,8 @@ <glx sop="104"/> </function> - <function name="ListBase" deprecated="3.1"> + <function name="ListBase" deprecated="3.1" + marshal_call_after="_mesa_glthread_ListBase(ctx, base);"> <param name="base" type="GLuint"/> <glx rop="3"/> </function> @@ -1153,7 +1161,8 @@ <glx rop="4"/> </function> - <function name="Bitmap" deprecated="3.1"> + <function name="Bitmap" deprecated="3.1" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="width" type="GLsizei"/> <param name="height" type="GLsizei"/> <param name="xorig" type="GLfloat"/> @@ -1164,24 +1173,24 @@ <glx rop="5" large="true"/> </function> - <function name="Color3b" vectorequiv="Color3bv" deprecated="3.1"> + <function name="Color3b" vectorequiv="Color3bv" deprecated="3.1" exec="dynamic"> <param name="red" type="GLbyte"/> <param name="green" type="GLbyte"/> <param name="blue" type="GLbyte"/> </function> - <function name="Color3bv" deprecated="3.1"> + <function name="Color3bv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLbyte *" count="3"/> <glx rop="6"/> </function> - <function name="Color3d" vectorequiv="Color3dv" deprecated="3.1"> + <function name="Color3d" vectorequiv="Color3dv" deprecated="3.1" exec="dynamic"> <param name="red" type="GLdouble"/> <param name="green" type="GLdouble"/> <param name="blue" type="GLdouble"/> </function> - <function name="Color3dv" deprecated="3.1"> + <function name="Color3dv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLdouble *" count="3"/> <glx rop="7"/> </function> @@ -1198,81 +1207,81 @@ <glx rop="8"/> </function> - <function name="Color3i" vectorequiv="Color3iv" deprecated="3.1"> + <function name="Color3i" vectorequiv="Color3iv" deprecated="3.1" exec="dynamic"> <param name="red" type="GLint"/> <param name="green" type="GLint"/> <param name="blue" type="GLint"/> </function> - <function name="Color3iv" deprecated="3.1"> + <function name="Color3iv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLint *" count="3"/> <glx rop="9"/> </function> - <function name="Color3s" vectorequiv="Color3sv" deprecated="3.1"> + <function name="Color3s" vectorequiv="Color3sv" deprecated="3.1" exec="dynamic"> <param name="red" type="GLshort"/> <param name="green" type="GLshort"/> <param name="blue" type="GLshort"/> </function> - <function name="Color3sv" deprecated="3.1"> + <function name="Color3sv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLshort *" count="3"/> <glx rop="10"/> </function> - <function name="Color3ub" vectorequiv="Color3ubv" deprecated="3.1"> + <function name="Color3ub" vectorequiv="Color3ubv" deprecated="3.1" exec="dynamic"> <param name="red" type="GLubyte"/> <param name="green" type="GLubyte"/> <param name="blue" type="GLubyte"/> </function> - <function name="Color3ubv" deprecated="3.1"> + <function name="Color3ubv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLubyte *" count="3"/> <glx rop="11"/> </function> - <function name="Color3ui" vectorequiv="Color3uiv" deprecated="3.1"> + <function name="Color3ui" vectorequiv="Color3uiv" deprecated="3.1" exec="dynamic"> <param name="red" type="GLuint"/> <param name="green" type="GLuint"/> <param name="blue" type="GLuint"/> </function> - <function name="Color3uiv" deprecated="3.1"> + <function name="Color3uiv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLuint *" count="3"/> <glx rop="12"/> </function> - <function name="Color3us" vectorequiv="Color3usv" deprecated="3.1"> + <function name="Color3us" vectorequiv="Color3usv" deprecated="3.1" exec="dynamic"> <param name="red" type="GLushort"/> <param name="green" type="GLushort"/> <param name="blue" type="GLushort"/> </function> - <function name="Color3usv" deprecated="3.1"> + <function name="Color3usv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLushort *" count="3"/> <glx rop="13"/> </function> - <function name="Color4b" vectorequiv="Color4bv" deprecated="3.1"> + <function name="Color4b" vectorequiv="Color4bv" deprecated="3.1" exec="dynamic"> <param name="red" type="GLbyte"/> <param name="green" type="GLbyte"/> <param name="blue" type="GLbyte"/> <param name="alpha" type="GLbyte"/> </function> - <function name="Color4bv" deprecated="3.1"> + <function name="Color4bv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLbyte *" count="4"/> <glx rop="14"/> </function> - <function name="Color4d" vectorequiv="Color4dv" deprecated="3.1"> + <function name="Color4d" vectorequiv="Color4dv" deprecated="3.1" exec="dynamic"> <param name="red" type="GLdouble"/> <param name="green" type="GLdouble"/> <param name="blue" type="GLdouble"/> <param name="alpha" type="GLdouble"/> </function> - <function name="Color4dv" deprecated="3.1"> + <function name="Color4dv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLdouble *" count="4"/> <glx rop="15"/> </function> @@ -1290,31 +1299,31 @@ <glx rop="16"/> </function> - <function name="Color4i" vectorequiv="Color4iv" deprecated="3.1"> + <function name="Color4i" vectorequiv="Color4iv" deprecated="3.1" exec="dynamic"> <param name="red" type="GLint"/> <param name="green" type="GLint"/> <param name="blue" type="GLint"/> <param name="alpha" type="GLint"/> </function> - <function name="Color4iv" deprecated="3.1"> + <function name="Color4iv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLint *" count="4"/> <glx rop="17"/> </function> - <function name="Color4s" vectorequiv="Color4sv" deprecated="3.1"> + <function name="Color4s" vectorequiv="Color4sv" deprecated="3.1" exec="dynamic"> <param name="red" type="GLshort"/> <param name="green" type="GLshort"/> <param name="blue" type="GLshort"/> <param name="alpha" type="GLshort"/> </function> - <function name="Color4sv" deprecated="3.1"> + <function name="Color4sv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLshort *" count="4"/> <glx rop="18"/> </function> - <function name="Color4ub" vectorequiv="Color4ubv" es1="1.1" + <function name="Color4ub" vectorequiv="Color4ubv" es1="1.1" exec="dynamic" deprecated="3.1"> <param name="red" type="GLubyte"/> <param name="green" type="GLubyte"/> @@ -1322,31 +1331,31 @@ <param name="alpha" type="GLubyte"/> </function> - <function name="Color4ubv" deprecated="3.1"> + <function name="Color4ubv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLubyte *" count="4"/> <glx rop="19"/> </function> - <function name="Color4ui" vectorequiv="Color4uiv" deprecated="3.1"> + <function name="Color4ui" vectorequiv="Color4uiv" deprecated="3.1" exec="dynamic"> <param name="red" type="GLuint"/> <param name="green" type="GLuint"/> <param name="blue" type="GLuint"/> <param name="alpha" type="GLuint"/> </function> - <function name="Color4uiv" deprecated="3.1"> + <function name="Color4uiv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLuint *" count="4"/> <glx rop="20"/> </function> - <function name="Color4us" vectorequiv="Color4usv" deprecated="3.1"> + <function name="Color4us" vectorequiv="Color4usv" deprecated="3.1" exec="dynamic"> <param name="red" type="GLushort"/> <param name="green" type="GLushort"/> <param name="blue" type="GLushort"/> <param name="alpha" type="GLushort"/> </function> - <function name="Color4usv" deprecated="3.1"> + <function name="Color4usv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLushort *" count="4"/> <glx rop="21"/> </function> @@ -1356,7 +1365,7 @@ <param name="flag" type="GLboolean"/> </function> - <function name="EdgeFlagv" deprecated="3.1"> + <function name="EdgeFlagv" deprecated="3.1" exec="dynamic"> <param name="flag" type="const GLboolean *" count="1"/> <glx rop="22"/> </function> @@ -1365,11 +1374,11 @@ <glx rop="23"/> </function> - <function name="Indexd" vectorequiv="Indexdv" deprecated="3.1"> + <function name="Indexd" vectorequiv="Indexdv" deprecated="3.1" exec="dynamic"> <param name="c" type="GLdouble"/> </function> - <function name="Indexdv" deprecated="3.1"> + <function name="Indexdv" deprecated="3.1" exec="dynamic"> <param name="c" type="const GLdouble *" count="1"/> <glx rop="24"/> </function> @@ -1384,42 +1393,42 @@ <glx rop="25"/> </function> - <function name="Indexi" vectorequiv="Indexiv" deprecated="3.1"> + <function name="Indexi" vectorequiv="Indexiv" deprecated="3.1" exec="dynamic"> <param name="c" type="GLint"/> </function> - <function name="Indexiv" deprecated="3.1"> + <function name="Indexiv" deprecated="3.1" exec="dynamic"> <param name="c" type="const GLint *" count="1"/> <glx rop="26"/> </function> - <function name="Indexs" vectorequiv="Indexsv" deprecated="3.1"> + <function name="Indexs" vectorequiv="Indexsv" deprecated="3.1" exec="dynamic"> <param name="c" type="GLshort"/> </function> - <function name="Indexsv" deprecated="3.1"> + <function name="Indexsv" deprecated="3.1" exec="dynamic"> <param name="c" type="const GLshort *" count="1"/> <glx rop="27"/> </function> - <function name="Normal3b" vectorequiv="Normal3bv" deprecated="3.1"> + <function name="Normal3b" vectorequiv="Normal3bv" deprecated="3.1" exec="dynamic"> <param name="nx" type="GLbyte"/> <param name="ny" type="GLbyte"/> <param name="nz" type="GLbyte"/> </function> - <function name="Normal3bv" deprecated="3.1"> + <function name="Normal3bv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLbyte *" count="3"/> <glx rop="28"/> </function> - <function name="Normal3d" vectorequiv="Normal3dv" deprecated="3.1"> + <function name="Normal3d" vectorequiv="Normal3dv" deprecated="3.1" exec="dynamic"> <param name="nx" type="GLdouble"/> <param name="ny" type="GLdouble"/> <param name="nz" type="GLdouble"/> </function> - <function name="Normal3dv" deprecated="3.1"> + <function name="Normal3dv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLdouble *" count="3"/> <glx rop="29"/> </function> @@ -1436,24 +1445,24 @@ <glx rop="30"/> </function> - <function name="Normal3i" vectorequiv="Normal3iv" deprecated="3.1"> + <function name="Normal3i" vectorequiv="Normal3iv" deprecated="3.1" exec="dynamic"> <param name="nx" type="GLint"/> <param name="ny" type="GLint"/> <param name="nz" type="GLint"/> </function> - <function name="Normal3iv" deprecated="3.1"> + <function name="Normal3iv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLint *" count="3"/> <glx rop="31"/> </function> - <function name="Normal3s" vectorequiv="Normal3sv" deprecated="3.1"> + <function name="Normal3s" vectorequiv="Normal3sv" deprecated="3.1" exec="dynamic"> <param name="nx" type="GLshort"/> <param name="ny" type="GLshort"/> <param name="nz" type="GLshort"/> </function> - <function name="Normal3sv" deprecated="3.1"> + <function name="Normal3sv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLshort *" count="3"/> <glx rop="32"/> </function> @@ -1603,7 +1612,7 @@ <glx rop="45"/> </function> - <function name="Rectf" vectorequiv="Rectfv" deprecated="3.1" exec="dynamic"> + <function name="Rectf" vectorequiv="Rectfv" deprecated="3.1"> <param name="x1" type="GLfloat"/> <param name="y1" type="GLfloat"/> <param name="x2" type="GLfloat"/> @@ -1642,11 +1651,11 @@ <glx rop="48"/> </function> - <function name="TexCoord1d" vectorequiv="TexCoord1dv" deprecated="3.1"> + <function name="TexCoord1d" vectorequiv="TexCoord1dv" deprecated="3.1" exec="dynamic"> <param name="s" type="GLdouble"/> </function> - <function name="TexCoord1dv" deprecated="3.1"> + <function name="TexCoord1dv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLdouble *" count="1"/> <glx rop="49"/> </function> @@ -1661,30 +1670,30 @@ <glx rop="50"/> </function> - <function name="TexCoord1i" vectorequiv="TexCoord1iv" deprecated="3.1"> + <function name="TexCoord1i" vectorequiv="TexCoord1iv" deprecated="3.1" exec="dynamic"> <param name="s" type="GLint"/> </function> - <function name="TexCoord1iv" deprecated="3.1"> + <function name="TexCoord1iv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLint *" count="1"/> <glx rop="51"/> </function> - <function name="TexCoord1s" vectorequiv="TexCoord1sv" deprecated="3.1"> + <function name="TexCoord1s" vectorequiv="TexCoord1sv" deprecated="3.1" exec="dynamic"> <param name="s" type="GLshort"/> </function> - <function name="TexCoord1sv" deprecated="3.1"> + <function name="TexCoord1sv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLshort *" count="1"/> <glx rop="52"/> </function> - <function name="TexCoord2d" vectorequiv="TexCoord2dv" deprecated="3.1"> + <function name="TexCoord2d" vectorequiv="TexCoord2dv" deprecated="3.1" exec="dynamic"> <param name="s" type="GLdouble"/> <param name="t" type="GLdouble"/> </function> - <function name="TexCoord2dv" deprecated="3.1"> + <function name="TexCoord2dv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLdouble *" count="2"/> <glx rop="53"/> </function> @@ -1700,33 +1709,33 @@ <glx rop="54"/> </function> - <function name="TexCoord2i" vectorequiv="TexCoord2iv" deprecated="3.1"> + <function name="TexCoord2i" vectorequiv="TexCoord2iv" deprecated="3.1" exec="dynamic"> <param name="s" type="GLint"/> <param name="t" type="GLint"/> </function> - <function name="TexCoord2iv" deprecated="3.1"> + <function name="TexCoord2iv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLint *" count="2"/> <glx rop="55"/> </function> - <function name="TexCoord2s" vectorequiv="TexCoord2sv" deprecated="3.1"> + <function name="TexCoord2s" vectorequiv="TexCoord2sv" deprecated="3.1" exec="dynamic"> <param name="s" type="GLshort"/> <param name="t" type="GLshort"/> </function> - <function name="TexCoord2sv" deprecated="3.1"> + <function name="TexCoord2sv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLshort *" count="2"/> <glx rop="56"/> </function> - <function name="TexCoord3d" vectorequiv="TexCoord3dv" deprecated="3.1"> + <function name="TexCoord3d" vectorequiv="TexCoord3dv" deprecated="3.1" exec="dynamic"> <param name="s" type="GLdouble"/> <param name="t" type="GLdouble"/> <param name="r" type="GLdouble"/> </function> - <function name="TexCoord3dv" deprecated="3.1"> + <function name="TexCoord3dv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLdouble *" count="3"/> <glx rop="57"/> </function> @@ -1743,36 +1752,36 @@ <glx rop="58"/> </function> - <function name="TexCoord3i" vectorequiv="TexCoord3iv" deprecated="3.1"> + <function name="TexCoord3i" vectorequiv="TexCoord3iv" deprecated="3.1" exec="dynamic"> <param name="s" type="GLint"/> <param name="t" type="GLint"/> <param name="r" type="GLint"/> </function> - <function name="TexCoord3iv" deprecated="3.1"> + <function name="TexCoord3iv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLint *" count="3"/> <glx rop="59"/> </function> - <function name="TexCoord3s" vectorequiv="TexCoord3sv" deprecated="3.1"> + <function name="TexCoord3s" vectorequiv="TexCoord3sv" deprecated="3.1" exec="dynamic"> <param name="s" type="GLshort"/> <param name="t" type="GLshort"/> <param name="r" type="GLshort"/> </function> - <function name="TexCoord3sv" deprecated="3.1"> + <function name="TexCoord3sv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLshort *" count="3"/> <glx rop="60"/> </function> - <function name="TexCoord4d" vectorequiv="TexCoord4dv" deprecated="3.1"> + <function name="TexCoord4d" vectorequiv="TexCoord4dv" deprecated="3.1" exec="dynamic"> <param name="s" type="GLdouble"/> <param name="t" type="GLdouble"/> <param name="r" type="GLdouble"/> <param name="q" type="GLdouble"/> </function> - <function name="TexCoord4dv" deprecated="3.1"> + <function name="TexCoord4dv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLdouble *" count="4"/> <glx rop="61"/> </function> @@ -1790,36 +1799,36 @@ <glx rop="62"/> </function> - <function name="TexCoord4i" vectorequiv="TexCoord4iv" deprecated="3.1"> + <function name="TexCoord4i" vectorequiv="TexCoord4iv" deprecated="3.1" exec="dynamic"> <param name="s" type="GLint"/> <param name="t" type="GLint"/> <param name="r" type="GLint"/> <param name="q" type="GLint"/> </function> - <function name="TexCoord4iv" deprecated="3.1"> + <function name="TexCoord4iv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLint *" count="4"/> <glx rop="63"/> </function> - <function name="TexCoord4s" vectorequiv="TexCoord4sv" deprecated="3.1"> + <function name="TexCoord4s" vectorequiv="TexCoord4sv" deprecated="3.1" exec="dynamic"> <param name="s" type="GLshort"/> <param name="t" type="GLshort"/> <param name="r" type="GLshort"/> <param name="q" type="GLshort"/> </function> - <function name="TexCoord4sv" deprecated="3.1"> + <function name="TexCoord4sv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLshort *" count="4"/> <glx rop="64"/> </function> - <function name="Vertex2d" vectorequiv="Vertex2dv" deprecated="3.1"> + <function name="Vertex2d" vectorequiv="Vertex2dv" deprecated="3.1" exec="dynamic"> <param name="x" type="GLdouble"/> <param name="y" type="GLdouble"/> </function> - <function name="Vertex2dv" deprecated="3.1"> + <function name="Vertex2dv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLdouble *" count="2"/> <glx rop="65"/> </function> @@ -1835,33 +1844,33 @@ <glx rop="66"/> </function> - <function name="Vertex2i" vectorequiv="Vertex2iv" deprecated="3.1"> + <function name="Vertex2i" vectorequiv="Vertex2iv" deprecated="3.1" exec="dynamic"> <param name="x" type="GLint"/> <param name="y" type="GLint"/> </function> - <function name="Vertex2iv" deprecated="3.1"> + <function name="Vertex2iv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLint *" count="2"/> <glx rop="67"/> </function> - <function name="Vertex2s" vectorequiv="Vertex2sv" deprecated="3.1"> + <function name="Vertex2s" vectorequiv="Vertex2sv" deprecated="3.1" exec="dynamic"> <param name="x" type="GLshort"/> <param name="y" type="GLshort"/> </function> - <function name="Vertex2sv" deprecated="3.1"> + <function name="Vertex2sv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLshort *" count="2"/> <glx rop="68"/> </function> - <function name="Vertex3d" vectorequiv="Vertex3dv" deprecated="3.1"> + <function name="Vertex3d" vectorequiv="Vertex3dv" deprecated="3.1" exec="dynamic"> <param name="x" type="GLdouble"/> <param name="y" type="GLdouble"/> <param name="z" type="GLdouble"/> </function> - <function name="Vertex3dv" deprecated="3.1"> + <function name="Vertex3dv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLdouble *" count="3"/> <glx rop="69"/> </function> @@ -1878,36 +1887,36 @@ <glx rop="70"/> </function> - <function name="Vertex3i" vectorequiv="Vertex3iv" deprecated="3.1"> + <function name="Vertex3i" vectorequiv="Vertex3iv" deprecated="3.1" exec="dynamic"> <param name="x" type="GLint"/> <param name="y" type="GLint"/> <param name="z" type="GLint"/> </function> - <function name="Vertex3iv" deprecated="3.1"> + <function name="Vertex3iv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLint *" count="3"/> <glx rop="71"/> </function> - <function name="Vertex3s" vectorequiv="Vertex3sv" deprecated="3.1"> + <function name="Vertex3s" vectorequiv="Vertex3sv" deprecated="3.1" exec="dynamic"> <param name="x" type="GLshort"/> <param name="y" type="GLshort"/> <param name="z" type="GLshort"/> </function> - <function name="Vertex3sv" deprecated="3.1"> + <function name="Vertex3sv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLshort *" count="3"/> <glx rop="72"/> </function> - <function name="Vertex4d" vectorequiv="Vertex4dv" deprecated="3.1"> + <function name="Vertex4d" vectorequiv="Vertex4dv" deprecated="3.1" exec="dynamic"> <param name="x" type="GLdouble"/> <param name="y" type="GLdouble"/> <param name="z" type="GLdouble"/> <param name="w" type="GLdouble"/> </function> - <function name="Vertex4dv" deprecated="3.1"> + <function name="Vertex4dv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLdouble *" count="4"/> <glx rop="73"/> </function> @@ -1925,26 +1934,26 @@ <glx rop="74"/> </function> - <function name="Vertex4i" vectorequiv="Vertex4iv" deprecated="3.1"> + <function name="Vertex4i" vectorequiv="Vertex4iv" deprecated="3.1" exec="dynamic"> <param name="x" type="GLint"/> <param name="y" type="GLint"/> <param name="z" type="GLint"/> <param name="w" type="GLint"/> </function> - <function name="Vertex4iv" deprecated="3.1"> + <function name="Vertex4iv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLint *" count="4"/> <glx rop="75"/> </function> - <function name="Vertex4s" vectorequiv="Vertex4sv" deprecated="3.1"> + <function name="Vertex4s" vectorequiv="Vertex4sv" deprecated="3.1" exec="dynamic"> <param name="x" type="GLshort"/> <param name="y" type="GLshort"/> <param name="z" type="GLshort"/> <param name="w" type="GLshort"/> </function> - <function name="Vertex4sv" deprecated="3.1"> + <function name="Vertex4sv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLshort *" count="4"/> <glx rop="76"/> </function> @@ -1974,7 +1983,8 @@ <function name="Fogfv" es1="1.0" deprecated="3.1"> <param name="pname" type="GLenum"/> - <param name="params" type="const GLfloat *" variable_param="pname"/> + <param name="params" type="const GLfloat *" variable_param="pname" + marshal_count="_mesa_fog_enum_to_count(pname)"/> <glx rop="81"/> </function> @@ -1986,7 +1996,8 @@ <function name="Fogiv" deprecated="3.1"> <param name="pname" type="GLenum"/> - <param name="params" type="const GLint *" variable_param="pname"/> + <param name="params" type="const GLint *" variable_param="pname" + marshal_count="_mesa_fog_enum_to_count(pname)"/> <glx rop="83"/> </function> @@ -2011,7 +2022,8 @@ <function name="Lightfv" es1="1.0" deprecated="3.1"> <param name="light" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="params" type="const GLfloat *" variable_param="pname"/> + <param name="params" type="const GLfloat *" variable_param="pname" + marshal_count="_mesa_light_enum_to_count(pname)"/> <glx rop="87"/> </function> @@ -2025,7 +2037,8 @@ <function name="Lightiv" deprecated="3.1"> <param name="light" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="params" type="const GLint *" variable_param="pname"/> + <param name="params" type="const GLint *" variable_param="pname" + marshal_count="_mesa_light_enum_to_count(pname)"/> <glx rop="89"/> </function> @@ -2037,7 +2050,8 @@ <function name="LightModelfv" es1="1.0" deprecated="3.1"> <param name="pname" type="GLenum"/> - <param name="params" type="const GLfloat *" variable_param="pname"/> + <param name="params" type="const GLfloat *" variable_param="pname" + marshal_count="_mesa_light_model_enum_to_count(pname)"/> <glx rop="91"/> </function> @@ -2049,7 +2063,8 @@ <function name="LightModeliv" deprecated="3.1"> <param name="pname" type="GLenum"/> - <param name="params" type="const GLint *" variable_param="pname"/> + <param name="params" type="const GLint *" variable_param="pname" + marshal_count="_mesa_light_model_enum_to_count(pname)"/> <glx rop="93"/> </function> @@ -2064,7 +2079,7 @@ <glx rop="95"/> </function> - <function name="Materialf" es1="1.0" deprecated="3.1"> + <function name="Materialf" es1="1.0" deprecated="3.1" exec="dynamic"> <param name="face" type="GLenum"/> <param name="pname" type="GLenum"/> <param name="param" type="GLfloat"/> @@ -2074,21 +2089,23 @@ <function name="Materialfv" es1="1.0" deprecated="3.1" exec="dynamic"> <param name="face" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="params" type="const GLfloat *" variable_param="pname"/> + <param name="params" type="const GLfloat *" variable_param="pname" + marshal_count="_mesa_material_enum_to_count(pname)"/> <glx rop="97"/> </function> - <function name="Materiali" deprecated="3.1"> + <function name="Materiali" deprecated="3.1" exec="dynamic"> <param name="face" type="GLenum"/> <param name="pname" type="GLenum"/> <param name="param" type="GLint"/> <glx rop="98"/> </function> - <function name="Materialiv" deprecated="3.1"> + <function name="Materialiv" deprecated="3.1" exec="dynamic"> <param name="face" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="params" type="const GLint *" variable_param="pname"/> + <param name="params" type="const GLint *" variable_param="pname" + marshal_count="_mesa_material_enum_to_count(pname)"/> <glx rop="99"/> </function> @@ -2103,7 +2120,8 @@ <glx rop="101"/> </function> - <function name="PolygonStipple" deprecated="3.1"> + <function name="PolygonStipple" deprecated="3.1" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="mask" type="const GLubyte *" img_width="32" img_height="32" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP" img_target="0" img_pad_dimensions="false"/> <glx rop="102"/> </function> @@ -2131,7 +2149,8 @@ <function name="TexParameterfv" es1="1.1" es2="2.0"> <param name="target" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="params" type="const GLfloat *" variable_param="pname"/> + <param name="params" type="const GLfloat *" variable_param="pname" + marshal_count="_mesa_tex_param_enum_to_count(pname)"/> <glx rop="106"/> </function> @@ -2145,11 +2164,13 @@ <function name="TexParameteriv" es1="1.1" es2="2.0"> <param name="target" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="params" type="const GLint *" variable_param="pname"/> + <param name="params" type="const GLint *" variable_param="pname" + marshal_count="_mesa_tex_param_enum_to_count(pname)"/> <glx rop="108"/> </function> - <function name="TexImage1D" no_error="true"> + <function name="TexImage1D" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="target" type="GLenum"/> <param name="level" type="GLint"/> <param name="internalformat" type="GLint"/> @@ -2161,7 +2182,8 @@ <glx rop="109" large="true"/> </function> - <function name="TexImage2D" es1="1.0" es2="2.0" no_error="true"> + <function name="TexImage2D" es1="1.0" es2="2.0" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="target" type="GLenum"/> <param name="level" type="GLint"/> <param name="internalformat" type="GLint"/> @@ -2184,7 +2206,8 @@ <function name="TexEnvfv" es1="1.0" deprecated="3.1"> <param name="target" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="params" type="const GLfloat *" variable_param="pname"/> + <param name="params" type="const GLfloat *" variable_param="pname" + marshal_count="_mesa_texenv_enum_to_count(pname)"/> <glx rop="112"/> </function> @@ -2198,7 +2221,8 @@ <function name="TexEnviv" es1="1.1" deprecated="3.1"> <param name="target" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="params" type="const GLint *" variable_param="pname"/> + <param name="params" type="const GLint *" variable_param="pname" + marshal_count="_mesa_texenv_enum_to_count(pname)"/> <glx rop="114"/> </function> @@ -2212,7 +2236,8 @@ <function name="TexGendv" deprecated="3.1"> <param name="coord" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="params" type="const GLdouble *" variable_param="pname"/> + <param name="params" type="const GLdouble *" variable_param="pname" + marshal_count="_mesa_texgen_enum_to_count(pname)"/> <glx rop="116"/> </function> @@ -2226,7 +2251,8 @@ <function name="TexGenfv" deprecated="3.1"> <param name="coord" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="params" type="const GLfloat *" variable_param="pname"/> + <param name="params" type="const GLfloat *" variable_param="pname" + marshal_count="_mesa_texgen_enum_to_count(pname)"/> <glx rop="118"/> </function> @@ -2240,7 +2266,8 @@ <function name="TexGeniv" deprecated="3.1"> <param name="coord" type="GLenum"/> <param name="pname" type="GLenum"/> - <param name="params" type="const GLint *" variable_param="pname"/> + <param name="params" type="const GLint *" variable_param="pname" + marshal_count="_mesa_texgen_enum_to_count(pname)"/> <glx rop="120"/> </function> @@ -2356,12 +2383,14 @@ <glx rop="137"/> </function> - <function name="Disable" es1="1.0" es2="2.0"> + <function name="Disable" es1="1.0" es2="2.0" + marshal_call_after="_mesa_glthread_Disable(ctx, cap);"> <param name="cap" type="GLenum"/> <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='_mesa_glthread_Enable(ctx, cap);'> <param name="cap" type="GLenum"/> <glx rop="139" handcode="client"/> </function> @@ -2370,22 +2399,24 @@ <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. + <!-- Shared contexts have to wait for glthread to finish execution after glFlush, + so that other contexts can see the effect of previous GL calls when glFlush returns. + This is harmless if the contexts run on different threads, because we only stall + 1 thread that's asynchronous anyway. It's worse when the contexts run on the same + thread, but that's not a good use of multiple contexts. --> - <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); if (ctx->Shared->RefCount > 1) _mesa_glthread_finish(ctx);"> <glx sop="142" handcode="true"/> </function> - <function name="PopAttrib" deprecated="3.1"> + <function name="PopAttrib" deprecated="3.1" + marshal_call_after="_mesa_glthread_PopAttrib(ctx);"> <glx rop="141"/> </function> - <function name="PushAttrib" deprecated="3.1"> + <function name="PushAttrib" deprecated="3.1" + marshal_call_after="_mesa_glthread_PushAttrib(ctx, mask);"> <param name="mask" type="GLbitfield"/> <glx rop="142"/> </function> @@ -2472,11 +2503,11 @@ <glx rop="150"/> </function> - <function name="EvalCoord1d" vectorequiv="EvalCoord1dv" deprecated="3.1"> + <function name="EvalCoord1d" vectorequiv="EvalCoord1dv" deprecated="3.1" exec="dynamic"> <param name="u" type="GLdouble"/> </function> - <function name="EvalCoord1dv" deprecated="3.1"> + <function name="EvalCoord1dv" deprecated="3.1" exec="dynamic"> <param name="u" type="const GLdouble *" count="1"/> <glx rop="151"/> </function> @@ -2486,17 +2517,17 @@ <param name="u" type="GLfloat"/> </function> - <function name="EvalCoord1fv" deprecated="3.1"> + <function name="EvalCoord1fv" deprecated="3.1" exec="dynamic"> <param name="u" type="const GLfloat *" count="1"/> <glx rop="152"/> </function> - <function name="EvalCoord2d" vectorequiv="EvalCoord2dv" deprecated="3.1"> + <function name="EvalCoord2d" vectorequiv="EvalCoord2dv" deprecated="3.1" exec="dynamic"> <param name="u" type="GLdouble"/> <param name="v" type="GLdouble"/> </function> - <function name="EvalCoord2dv" deprecated="3.1"> + <function name="EvalCoord2dv" deprecated="3.1" exec="dynamic"> <param name="u" type="const GLdouble *" count="2"/> <glx rop="153"/> </function> @@ -2507,12 +2538,12 @@ <param name="v" type="GLfloat"/> </function> - <function name="EvalCoord2fv" deprecated="3.1"> + <function name="EvalCoord2fv" deprecated="3.1" exec="dynamic"> <param name="u" type="const GLfloat *" count="2"/> <glx rop="154"/> </function> - <function name="EvalMesh1" deprecated="3.1" exec="dynamic"> + <function name="EvalMesh1" deprecated="3.1"> <param name="mode" type="GLenum"/> <param name="i1" type="GLint"/> <param name="i2" type="GLint"/> @@ -2524,7 +2555,7 @@ <glx rop="156"/> </function> - <function name="EvalMesh2" deprecated="3.1" exec="dynamic"> + <function name="EvalMesh2" deprecated="3.1"> <param name="mode" type="GLenum"/> <param name="i1" type="GLint"/> <param name="i2" type="GLint"/> @@ -2605,21 +2636,24 @@ <glx sop="110" handcode="client"/> </function> - <function name="PixelMapfv" deprecated="3.1" marshal="sync"> + <function name="PixelMapfv" deprecated="3.1" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <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" marshal="sync"> + <function name="PixelMapuiv" deprecated="3.1" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <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" marshal="sync"> + <function name="PixelMapusv" deprecated="3.1" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="map" type="GLenum"/> <param name="mapsize" type="GLsizei" counter="true"/> <param name="values" type="const GLushort *" count="mapsize"/> @@ -2640,7 +2674,8 @@ <glx rop="172"/> </function> - <function name="ReadPixels" es1="1.0" es2="2.0" no_error="true"> + <function name="ReadPixels" es1="1.0" es2="2.0" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)"> <param name="x" type="GLint"/> <param name="y" type="GLint"/> <param name="width" type="GLsizei"/> @@ -2651,7 +2686,8 @@ <glx sop="111"/> </function> - <function name="DrawPixels" deprecated="3.1"> + <function name="DrawPixels" deprecated="3.1" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="width" type="GLsizei"/> <param name="height" type="GLsizei"/> <param name="format" type="GLenum"/> @@ -2689,7 +2725,7 @@ <glx sop="116" handcode="client"/> </function> - <function name="GetIntegerv" es1="1.0" es2="2.0"> + <function name="GetIntegerv" es1="1.0" es2="2.0" marshal="custom"> <param name="pname" type="GLenum"/> <param name="params" type="GLint *" output="true" variable_param="pname"/> <glx sop="117" handcode="client"/> @@ -2744,25 +2780,29 @@ <glx sop="124"/> </function> - <function name="GetPixelMapfv" deprecated="3.1"> + <function name="GetPixelMapfv" deprecated="3.1" + marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)"> <param name="map" type="GLenum"/> <param name="values" type="GLfloat *" output="true" variable_param="map"/> <glx sop="125"/> </function> - <function name="GetPixelMapuiv" deprecated="3.1"> + <function name="GetPixelMapuiv" deprecated="3.1" + marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)"> <param name="map" type="GLenum"/> <param name="values" type="GLuint *" output="true" variable_param="map"/> <glx sop="126"/> </function> - <function name="GetPixelMapusv" deprecated="3.1"> + <function name="GetPixelMapusv" deprecated="3.1" + marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)"> <param name="map" type="GLenum"/> <param name="values" type="GLushort *" output="true" variable_param="map"/> <glx sop="127"/> </function> - <function name="GetPolygonStipple" deprecated="3.1"> + <function name="GetPolygonStipple" deprecated="3.1" + marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)"> <param name="mask" type="GLubyte *" output="true" img_width="32" img_height="32" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP"/> <glx sop="128"/> </function> @@ -2808,7 +2848,8 @@ <glx sop="134"/> </function> - <function name="GetTexImage"> + <function name="GetTexImage" + marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)"> <param name="target" type="GLenum"/> <param name="level" type="GLint"/> <param name="format" type="GLenum"/> @@ -2889,7 +2930,8 @@ <glx rop="178"/> </function> - <function name="MatrixMode" es1="1.0" deprecated="3.1"> + <function name="MatrixMode" es1="1.0" deprecated="3.1" + marshal_call_after="_mesa_glthread_MatrixMode(ctx, mode);"> <param name="mode" type="GLenum"/> <glx rop="179"/> </function> @@ -2914,11 +2956,13 @@ <glx rop="182"/> </function> - <function name="PopMatrix" es1="1.0" deprecated="3.1"> + <function name="PopMatrix" es1="1.0" deprecated="3.1" + marshal_call_after="_mesa_glthread_PopMatrix(ctx);"> <glx rop="183"/> </function> - <function name="PushMatrix" es1="1.0" deprecated="3.1"> + <function name="PushMatrix" es1="1.0" deprecated="3.1" + marshal_call_after="_mesa_glthread_PushMatrix(ctx);"> <glx rop="184"/> </function> @@ -3148,14 +3192,14 @@ <enum name="CLIENT_VERTEX_ARRAY_BIT" value="0x00000002"/> <enum name="CLIENT_ALL_ATTRIB_BITS" value="0xFFFFFFFF"/> - <function name="ArrayElement" deprecated="3.1" exec="dynamic" marshal="draw"> + <function name="ArrayElement" deprecated="3.1" exec="dynamic"> <param name="i" type="GLint"/> <glx 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="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_COLOR0, size, type, stride, pointer);"> <param name="size" type="GLint"/> <param name="type" type="GLenum"/> <param name="stride" type="GLsizei"/> @@ -3163,20 +3207,20 @@ <glx handcode="true"/> </function> - <function name="DisableClientState" es1="1.0" deprecated="3.1"> + <function name="DisableClientState" es1="1.0" deprecated="3.1" + marshal_call_after="if (COMPAT) _mesa_glthread_ClientState(ctx, NULL, _mesa_array_to_attrib(ctx, array), false);"> <param name="array" type="GLenum"/> <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" marshal="custom"> <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" marshal="draw" - marshal_fail="_mesa_glthread_is_non_vbo_draw_elements(ctx)"> + <function name="DrawElements" es1="1.0" es2="2.0" marshal="custom"> <param name="mode" type="GLenum"/> <param name="count" type="GLsizei"/> <param name="type" type="GLenum"/> @@ -3186,13 +3230,14 @@ <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="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_EDGEFLAG, 1, GL_UNSIGNED_BYTE, stride, pointer);"> <param name="stride" type="GLsizei"/> <param name="pointer" type="const GLvoid *"/> <glx handcode="true"/> </function> - <function name="EnableClientState" es1="1.0" deprecated="3.1"> + <function name="EnableClientState" es1="1.0" deprecated="3.1" + marshal_call_after="if (COMPAT) _mesa_glthread_ClientState(ctx, NULL, _mesa_array_to_attrib(ctx, array), true);"> <param name="array" type="GLenum"/> <glx handcode="true"/> </function> @@ -3205,14 +3250,15 @@ <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="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_COLOR_INDEX, 1, type, stride, pointer);"> <param name="type" type="GLenum"/> <param name="stride" type="GLsizei"/> <param name="pointer" type="const GLvoid *"/> <glx handcode="true"/> </function> - <function name="InterleavedArrays" deprecated="3.1"> + <function name="InterleavedArrays" deprecated="3.1" marshal="async" + marshal_call_after="_mesa_glthread_InterleavedArrays(ctx, format, stride, pointer);"> <param name="format" type="GLenum"/> <param name="stride" type="GLsizei"/> <param name="pointer" type="const GLvoid *"/> @@ -3221,7 +3267,7 @@ <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="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_NORMAL, 3, type, stride, pointer);"> <param name="type" type="GLenum"/> <param name="stride" type="GLsizei"/> <param name="pointer" type="const GLvoid *"/> @@ -3230,7 +3276,7 @@ <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="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_TEX(ctx->GLThread.ClientActiveTexture), size, type, stride, pointer);"> <param name="size" type="GLint"/> <param name="type" type="GLenum"/> <param name="stride" type="GLsizei"/> @@ -3240,7 +3286,7 @@ <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="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_POS, size, type, stride, pointer);"> <param name="size" type="GLint"/> <param name="type" type="GLenum"/> <param name="stride" type="GLsizei"/> @@ -3299,7 +3345,8 @@ <glx rop="4122"/> </function> - <function name="TexSubImage1D" no_error="true"> + <function name="TexSubImage1D" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="target" type="GLenum"/> <param name="level" type="GLint"/> <param name="xoffset" type="GLint"/> @@ -3311,7 +3358,8 @@ <glx rop="4099" large="true"/> </function> - <function name="TexSubImage2D" es1="1.0" es2="2.0" no_error="true"> + <function name="TexSubImage2D" es1="1.0" es2="2.0" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="target" type="GLenum"/> <param name="level" type="GLint"/> <param name="xoffset" type="GLint"/> @@ -3364,20 +3412,22 @@ <glx rop="4118"/> </function> - <function name="Indexub" vectorequiv="Indexubv" deprecated="3.1"> + <function name="Indexub" vectorequiv="Indexubv" deprecated="3.1" exec="dynamic"> <param name="c" type="GLubyte"/> </function> - <function name="Indexubv" deprecated="3.1"> + <function name="Indexubv" deprecated="3.1" exec="dynamic"> <param name="c" type="const GLubyte *" count="1"/> <glx rop="194"/> </function> - <function name="PopClientAttrib" deprecated="3.1"> + <function name="PopClientAttrib" deprecated="3.1" + marshal_call_after="_mesa_glthread_PopClientAttrib(ctx);"> <glx handcode="true"/> </function> - <function name="PushClientAttrib" deprecated="3.1"> + <function name="PushClientAttrib" deprecated="3.1" + marshal_call_after="_mesa_glthread_PushClientAttrib(ctx, mask, false);"> <param name="mask" type="GLbitfield"/> <glx handcode="true"/> </function> @@ -3743,8 +3793,7 @@ <glx rop="4097"/> </function> - <function name="DrawRangeElements" es2="3.0" exec="dynamic" marshal="draw" - marshal_fail="_mesa_glthread_is_non_vbo_draw_elements(ctx)"> + <function name="DrawRangeElements" es2="3.0" marshal="custom"> <param name="mode" type="GLenum"/> <param name="start" type="GLuint"/> <param name="end" type="GLuint"/> @@ -4011,7 +4060,8 @@ <glx rop="4113"/> </function> - <function name="TexImage3D" es2="3.0" no_error="true"> + <function name="TexImage3D" es2="3.0" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="target" type="GLenum"/> <param name="level" type="GLint"/> <param name="internalformat" type="GLint"/> @@ -4025,7 +4075,8 @@ <glx rop="4114" large="true"/> </function> - <function name="TexSubImage3D" es2="3.0" no_error="true"> + <function name="TexSubImage3D" es2="3.0" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="target" type="GLenum"/> <param name="level" type="GLint"/> <param name="xoffset" type="GLint"/> @@ -4268,22 +4319,24 @@ <enum name="DOT3_RGB" value="0x86AE"/> <enum name="DOT3_RGBA" value="0x86AF"/> - <function name="ActiveTexture" es1="1.0" es2="2.0" no_error="true"> + <function name="ActiveTexture" es1="1.0" es2="2.0" no_error="true" + marshal_call_after="ctx->GLThread.ActiveTexture = texture - GL_TEXTURE0; if (ctx->GLThread.MatrixMode == GL_TEXTURE) ctx->GLThread.MatrixIndex = _mesa_get_matrix_index(ctx, texture);"> <param name="texture" type="GLenum"/> <glx rop="197"/> </function> - <function name="ClientActiveTexture" es1="1.0" deprecated="3.1"> + <function name="ClientActiveTexture" es1="1.0" deprecated="3.1" + marshal_call_after="ctx->GLThread.ClientActiveTexture = texture - GL_TEXTURE0;"> <param name="texture" type="GLenum"/> <glx handcode="true"/> </function> - <function name="MultiTexCoord1d" deprecated="3.1"> + <function name="MultiTexCoord1d" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="s" type="GLdouble"/> </function> - <function name="MultiTexCoord1dv" deprecated="3.1"> + <function name="MultiTexCoord1dv" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="v" type="const GLdouble *" count="1"/> <glx rop="198"/> @@ -4300,35 +4353,35 @@ <param name="v" type="const GLfloat *"/> </function> - <function name="MultiTexCoord1i" deprecated="3.1"> + <function name="MultiTexCoord1i" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="s" type="GLint"/> </function> - <function name="MultiTexCoord1iv" deprecated="3.1"> + <function name="MultiTexCoord1iv" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="v" type="const GLint *" count="1"/> <glx rop="200"/> </function> - <function name="MultiTexCoord1s" deprecated="3.1"> + <function name="MultiTexCoord1s" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="s" type="GLshort"/> </function> - <function name="MultiTexCoord1sv" deprecated="3.1"> + <function name="MultiTexCoord1sv" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="v" type="const GLshort *" count="1"/> <glx rop="201"/> </function> - <function name="MultiTexCoord2d" deprecated="3.1"> + <function name="MultiTexCoord2d" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="s" type="GLdouble"/> <param name="t" type="GLdouble"/> </function> - <function name="MultiTexCoord2dv" deprecated="3.1"> + <function name="MultiTexCoord2dv" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="v" type="const GLdouble *" count="2"/> <glx rop="202"/> @@ -4347,38 +4400,38 @@ <param name="v" type="const GLfloat *"/> </function> - <function name="MultiTexCoord2i" deprecated="3.1"> + <function name="MultiTexCoord2i" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="s" type="GLint"/> <param name="t" type="GLint"/> </function> - <function name="MultiTexCoord2iv" deprecated="3.1"> + <function name="MultiTexCoord2iv" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="v" type="const GLint *" count="2"/> <glx rop="204"/> </function> - <function name="MultiTexCoord2s" deprecated="3.1"> + <function name="MultiTexCoord2s" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="s" type="GLshort"/> <param name="t" type="GLshort"/> </function> - <function name="MultiTexCoord2sv" deprecated="3.1"> + <function name="MultiTexCoord2sv" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="v" type="const GLshort *" count="2"/> <glx rop="205"/> </function> - <function name="MultiTexCoord3d" deprecated="3.1"> + <function name="MultiTexCoord3d" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="s" type="GLdouble"/> <param name="t" type="GLdouble"/> <param name="r" type="GLdouble"/> </function> - <function name="MultiTexCoord3dv" deprecated="3.1"> + <function name="MultiTexCoord3dv" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="v" type="const GLdouble *" count="3"/> <glx rop="206"/> @@ -4398,33 +4451,33 @@ <param name="v" type="const GLfloat *"/> </function> - <function name="MultiTexCoord3i" deprecated="3.1"> + <function name="MultiTexCoord3i" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="s" type="GLint"/> <param name="t" type="GLint"/> <param name="r" type="GLint"/> </function> - <function name="MultiTexCoord3iv" deprecated="3.1"> + <function name="MultiTexCoord3iv" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="v" type="const GLint *" count="3"/> <glx rop="208"/> </function> - <function name="MultiTexCoord3s" deprecated="3.1"> + <function name="MultiTexCoord3s" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="s" type="GLshort"/> <param name="t" type="GLshort"/> <param name="r" type="GLshort"/> </function> - <function name="MultiTexCoord3sv" deprecated="3.1"> + <function name="MultiTexCoord3sv" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="v" type="const GLshort *" count="3"/> <glx rop="209"/> </function> - <function name="MultiTexCoord4d" deprecated="3.1"> + <function name="MultiTexCoord4d" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="s" type="GLdouble"/> <param name="t" type="GLdouble"/> @@ -4432,7 +4485,7 @@ <param name="q" type="GLdouble"/> </function> - <function name="MultiTexCoord4dv" deprecated="3.1"> + <function name="MultiTexCoord4dv" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="v" type="const GLdouble *" count="4"/> <glx rop="210"/> @@ -4453,7 +4506,7 @@ <param name="v" type="const GLfloat *"/> </function> - <function name="MultiTexCoord4i" deprecated="3.1"> + <function name="MultiTexCoord4i" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="s" type="GLint"/> <param name="t" type="GLint"/> @@ -4461,13 +4514,13 @@ <param name="q" type="GLint"/> </function> - <function name="MultiTexCoord4iv" deprecated="3.1"> + <function name="MultiTexCoord4iv" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="v" type="const GLint *" count="4"/> <glx rop="212"/> </function> - <function name="MultiTexCoord4s" deprecated="3.1"> + <function name="MultiTexCoord4s" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="s" type="GLshort"/> <param name="t" type="GLshort"/> @@ -4475,29 +4528,29 @@ <param name="q" type="GLshort"/> </function> - <function name="MultiTexCoord4sv" deprecated="3.1"> + <function name="MultiTexCoord4sv" deprecated="3.1" exec="dynamic"> <param name="target" type="GLenum"/> <param name="v" type="const GLshort *" count="4"/> <glx rop="213"/> </function> <function name="LoadTransposeMatrixf" deprecated="3.1"> - <param name="m" type="const GLfloat *"/> + <param name="m" type="const GLfloat *" count="16"/> <glx handcode="true"/> </function> <function name="LoadTransposeMatrixd" deprecated="3.1"> - <param name="m" type="const GLdouble *"/> + <param name="m" type="const GLdouble *" count="16"/> <glx handcode="true"/> </function> <function name="MultTransposeMatrixf" deprecated="3.1"> - <param name="m" type="const GLfloat *"/> + <param name="m" type="const GLfloat *" count="16"/> <glx handcode="true"/> </function> <function name="MultTransposeMatrixd" deprecated="3.1"> - <param name="m" type="const GLdouble *"/> + <param name="m" type="const GLdouble *" count="16"/> <glx handcode="true"/> </function> @@ -4507,8 +4560,8 @@ <glx rop="229"/> </function> - <function name="CompressedTexImage3D" es2="3.0" marshal="sync" - no_error="true"> + <function name="CompressedTexImage3D" es2="3.0" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="target" type="GLenum"/> <param name="level" type="GLint"/> <param name="internalformat" type="GLenum"/> @@ -4521,8 +4574,8 @@ <glx rop="216" handcode="client"/> </function> - <function name="CompressedTexImage2D" es1="1.0" es2="2.0" marshal="sync" - no_error="true"> + <function name="CompressedTexImage2D" es1="1.0" es2="2.0" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="target" type="GLenum"/> <param name="level" type="GLint"/> <param name="internalformat" type="GLenum"/> @@ -4534,7 +4587,8 @@ <glx rop="215" handcode="client"/> </function> - <function name="CompressedTexImage1D" marshal="sync" no_error="true"> + <function name="CompressedTexImage1D" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="target" type="GLenum"/> <param name="level" type="GLint"/> <param name="internalformat" type="GLenum"/> @@ -4545,8 +4599,8 @@ <glx rop="214" handcode="client"/> </function> - <function name="CompressedTexSubImage3D" es2="3.0" marshal="sync" - no_error="true"> + <function name="CompressedTexSubImage3D" es2="3.0" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="target" type="GLenum"/> <param name="level" type="GLint"/> <param name="xoffset" type="GLint"/> @@ -4561,8 +4615,8 @@ <glx rop="219" handcode="client"/> </function> - <function name="CompressedTexSubImage2D" es1="1.0" es2="2.0" marshal="sync" - no_error="true"> + <function name="CompressedTexSubImage2D" es1="1.0" es2="2.0" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="target" type="GLenum"/> <param name="level" type="GLint"/> <param name="xoffset" type="GLint"/> @@ -4575,7 +4629,8 @@ <glx rop="218" handcode="client"/> </function> - <function name="CompressedTexSubImage1D" marshal="sync" no_error="true"> + <function name="CompressedTexSubImage1D" no_error="true" + marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)"> <param name="target" type="GLenum"/> <param name="level" type="GLint"/> <param name="xoffset" type="GLint"/> @@ -4586,7 +4641,8 @@ <glx rop="217" handcode="client"/> </function> - <function name="GetCompressedTexImage"> + <function name="GetCompressedTexImage" + marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)"> <param name="target" type="GLenum"/> <param name="level" type="GLint"/> <param name="img" type="GLvoid *" output="true"/> @@ -4725,28 +4781,28 @@ <param name="coord" type="const GLfloat *"/> </function> - <function name="FogCoordd" deprecated="3.1"> + <function name="FogCoordd" deprecated="3.1" exec="dynamic"> <param name="coord" type="GLdouble"/> </function> - <function name="FogCoorddv" deprecated="3.1"> + <function name="FogCoorddv" deprecated="3.1" exec="dynamic"> <param name="coord" type="const GLdouble *" count="1"/> <glx rop="4125"/> </function> <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="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_FOG, 1, type, stride, pointer);"> <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="custom"> <param name="mode" type="GLenum"/> - <param name="first" type="const GLint *"/> - <param name="count" type="const GLsizei *"/> + <param name="first" type="const GLint *" count="primcount"/> + <param name="count" type="const GLsizei *" count="primcount"/> <param name="primcount" type="GLsizei"/> <glx handcode="true"/> </function> @@ -4767,7 +4823,8 @@ <function name="PointParameterfv" es1="1.1"> <param name="pname" type="GLenum"/> - <param name="params" type="const GLfloat *" variable_param="pname"/> + <param name="params" type="const GLfloat *" variable_param="pname" + marshal_count="_mesa_point_param_enum_to_count(pname)"/> <glx rop="2066"/> </function> @@ -4779,28 +4836,29 @@ <function name="PointParameteriv"> <param name="pname" type="GLenum"/> - <param name="params" type="const GLint *" variable_param="pname"/> + <param name="params" type="const GLint *" variable_param="pname" + marshal_count="_mesa_point_param_enum_to_count(pname)"/> <glx rop="4222"/> </function> - <function name="SecondaryColor3b" deprecated="3.1"> + <function name="SecondaryColor3b" deprecated="3.1" exec="dynamic"> <param name="red" type="GLbyte"/> <param name="green" type="GLbyte"/> <param name="blue" type="GLbyte"/> </function> - <function name="SecondaryColor3bv" deprecated="3.1"> + <function name="SecondaryColor3bv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLbyte *" count="3"/> <glx rop="4126"/> </function> - <function name="SecondaryColor3d" deprecated="3.1"> + <function name="SecondaryColor3d" deprecated="3.1" exec="dynamic"> <param name="red" type="GLdouble"/> <param name="green" type="GLdouble"/> <param name="blue" type="GLdouble"/> </function> - <function name="SecondaryColor3dv" deprecated="3.1"> + <function name="SecondaryColor3dv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLdouble *" count="3"/> <glx rop="4130"/> </function> @@ -4817,64 +4875,64 @@ <param name="v" type="const GLfloat *"/> </function> - <function name="SecondaryColor3i" deprecated="3.1"> + <function name="SecondaryColor3i" deprecated="3.1" exec="dynamic"> <param name="red" type="GLint"/> <param name="green" type="GLint"/> <param name="blue" type="GLint"/> </function> - <function name="SecondaryColor3iv" deprecated="3.1"> + <function name="SecondaryColor3iv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLint *" count="3"/> <glx rop="4128"/> </function> - <function name="SecondaryColor3s" deprecated="3.1"> + <function name="SecondaryColor3s" deprecated="3.1" exec="dynamic"> <param name="red" type="GLshort"/> <param name="green" type="GLshort"/> <param name="blue" type="GLshort"/> </function> - <function name="SecondaryColor3sv" deprecated="3.1"> + <function name="SecondaryColor3sv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLshort *" count="3"/> <glx rop="4127"/> </function> - <function name="SecondaryColor3ub" deprecated="3.1"> + <function name="SecondaryColor3ub" deprecated="3.1" exec="dynamic"> <param name="red" type="GLubyte"/> <param name="green" type="GLubyte"/> <param name="blue" type="GLubyte"/> </function> - <function name="SecondaryColor3ubv" deprecated="3.1"> + <function name="SecondaryColor3ubv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLubyte *" count="3"/> <glx rop="4131"/> </function> - <function name="SecondaryColor3ui" deprecated="3.1"> + <function name="SecondaryColor3ui" deprecated="3.1" exec="dynamic"> <param name="red" type="GLuint"/> <param name="green" type="GLuint"/> <param name="blue" type="GLuint"/> </function> - <function name="SecondaryColor3uiv" deprecated="3.1"> + <function name="SecondaryColor3uiv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLuint *" count="3"/> <glx rop="4133"/> </function> - <function name="SecondaryColor3us" deprecated="3.1"> + <function name="SecondaryColor3us" deprecated="3.1" exec="dynamic"> <param name="red" type="GLushort"/> <param name="green" type="GLushort"/> <param name="blue" type="GLushort"/> </function> - <function name="SecondaryColor3usv" deprecated="3.1"> + <function name="SecondaryColor3usv" deprecated="3.1" exec="dynamic"> <param name="v" type="const GLushort *" count="3"/> <glx rop="4132"/> </function> <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="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_COLOR1, size, type, stride, pointer);"> <param name="size" type="GLint"/> <param name="type" type="GLenum"/> <param name="stride" type="GLsizei"/> @@ -4889,7 +4947,7 @@ </function> <function name="WindowPos2dv" deprecated="3.1"> - <param name="v" type="const GLdouble *"/> + <param name="v" type="const GLdouble *" count="2"/> <glx handcode="true"/> </function> @@ -4900,7 +4958,7 @@ </function> <function name="WindowPos2fv" deprecated="3.1"> - <param name="v" type="const GLfloat *"/> + <param name="v" type="const GLfloat *" count="2"/> <glx handcode="true"/> </function> @@ -4911,7 +4969,7 @@ </function> <function name="WindowPos2iv" deprecated="3.1"> - <param name="v" type="const GLint *"/> + <param name="v" type="const GLint *" count="2"/> <glx handcode="true"/> </function> @@ -4922,7 +4980,7 @@ </function> <function name="WindowPos2sv" deprecated="3.1"> - <param name="v" type="const GLshort *"/> + <param name="v" type="const GLshort *" count="2"/> <glx handcode="true"/> </function> @@ -4934,7 +4992,7 @@ </function> <function name="WindowPos3dv" deprecated="3.1"> - <param name="v" type="const GLdouble *"/> + <param name="v" type="const GLdouble *" count="3"/> <glx handcode="true"/> </function> @@ -4957,7 +5015,7 @@ </function> <function name="WindowPos3iv" deprecated="3.1"> - <param name="v" type="const GLint *"/> + <param name="v" type="const GLint *" count="3"/> <glx handcode="true"/> </function> @@ -4969,7 +5027,7 @@ </function> <function name="WindowPos3sv" deprecated="3.1"> - <param name="v" type="const GLshort *"/> + <param name="v" type="const GLshort *" count="3"/> <glx handcode="true"/> </function> </category> @@ -5039,7 +5097,8 @@ <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="if (COMPAT) _mesa_glthread_BindBuffer(ctx, target, buffer);"> <param name="target" type="GLenum"/> <param name="buffer" type="GLuint"/> <glx ignore="true"/> @@ -5062,7 +5121,8 @@ <glx ignore="true"/> </function> - <function name="DeleteBuffers" es1="1.1" es2="2.0" no_error="true"> + <function name="DeleteBuffers" es1="1.1" es2="2.0" no_error="true" + marshal_call_after="if (COMPAT) _mesa_glthread_DeleteBuffers(ctx, n, buffer);"> <param name="n" type="GLsizei" counter="true"/> <param name="buffer" type="const GLuint *" count="n"/> <glx ignore="true"/> @@ -5109,7 +5169,7 @@ <glx ignore="true"/> </function> - <function name="UnmapBuffer" es2="3.0" no_error="true"> + <function name="UnmapBuffer" es2="3.0" no_error="true" marshal="async"> <param name="target" type="GLenum"/> <return type="GLboolean"/> <glx ignore="true"/> @@ -5304,7 +5364,7 @@ <function name="BindAttribLocation" es2="2.0" no_error="true"> <param name="program" type="GLuint"/> <param name="index" type="GLuint"/> - <param name="name" type="const GLchar *"/> + <param name="name" type="const GLchar *" count="(strlen(name) + 1)"/> <glx ignore="true"/> </function> @@ -5324,7 +5384,8 @@ <glx ignore="true"/> </function> - <function name="DeleteProgram" es2="2.0"> + <function name="DeleteProgram" es2="2.0" + marshal_call_after="_mesa_glthread_ProgramChanged(ctx);"> <param name="program" type="GLuint"/> <glx ignore="true"/> </function> @@ -5340,13 +5401,15 @@ <glx ignore="true"/> </function> - <function name="DisableVertexAttribArray" es2="2.0" no_error="true"> + <function name="DisableVertexAttribArray" es2="2.0" no_error="true" + marshal_call_after="if (COMPAT) _mesa_glthread_ClientState(ctx, NULL, VERT_ATTRIB_GENERIC(index), false);"> <param name="index" type="GLuint"/> <glx ignore="true"/> <glx handcode="true"/> </function> - <function name="EnableVertexAttribArray" es2="2.0" no_error="true"> + <function name="EnableVertexAttribArray" es2="2.0" no_error="true" + marshal_call_after="if (COMPAT) _mesa_glthread_ClientState(ctx, NULL, VERT_ATTRIB_GENERIC(index), true);"> <param name="index" type="GLuint"/> <glx ignore="true"/> <glx handcode="true"/> @@ -5363,7 +5426,7 @@ <glx ignore="true"/> </function> - <function name="GetActiveUniform" es2="2.0"> + <function name="GetActiveUniform" es2="2.0" marshal="custom"> <param name="program" type="GLuint"/> <param name="index" type="GLuint"/> <param name="bufSize" type="GLsizei"/> @@ -5492,7 +5555,8 @@ <glx ignore="true"/> </function> - <function name="LinkProgram" es2="2.0" no_error="true"> + <function name="LinkProgram" es2="2.0" no_error="true" + marshal_call_after="_mesa_glthread_ProgramChanged(ctx);"> <param name="program" type="GLuint"/> <glx ignore="true"/> </function> @@ -5641,11 +5705,11 @@ <glx ignore="true"/> </function> - <function name="VertexAttrib1d"> + <function name="VertexAttrib1d" exec="dynamic"> <param name="index" type="GLuint"/> <param name="x" type="GLdouble"/> </function> - <function name="VertexAttrib1dv"> + <function name="VertexAttrib1dv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLdouble *" count="1"/> <glx rop="4197" doubles_in_order="true"/> @@ -5658,22 +5722,22 @@ <param name="index" type="GLuint"/> <param name="v" type="const GLfloat *"/> </function> - <function name="VertexAttrib1s"> + <function name="VertexAttrib1s" exec="dynamic"> <param name="index" type="GLuint"/> <param name="x" type="GLshort"/> </function> - <function name="VertexAttrib1sv"> + <function name="VertexAttrib1sv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLshort *" count="1"/> <glx rop="4189"/> </function> - <function name="VertexAttrib2d"> + <function name="VertexAttrib2d" exec="dynamic"> <param name="index" type="GLuint"/> <param name="x" type="GLdouble"/> <param name="y" type="GLdouble"/> </function> - <function name="VertexAttrib2dv"> + <function name="VertexAttrib2dv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLdouble *" count="2"/> <glx rop="4198" doubles_in_order="true"/> @@ -5687,24 +5751,24 @@ <param name="index" type="GLuint"/> <param name="v" type="const GLfloat *"/> </function> - <function name="VertexAttrib2s"> + <function name="VertexAttrib2s" exec="dynamic"> <param name="index" type="GLuint"/> <param name="x" type="GLshort"/> <param name="y" type="GLshort"/> </function> - <function name="VertexAttrib2sv"> + <function name="VertexAttrib2sv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLshort *" count="2"/> <glx rop="4190"/> </function> - <function name="VertexAttrib3d"> + <function name="VertexAttrib3d" exec="dynamic"> <param name="index" type="GLuint"/> <param name="x" type="GLdouble"/> <param name="y" type="GLdouble"/> <param name="z" type="GLdouble"/> </function> - <function name="VertexAttrib3dv"> + <function name="VertexAttrib3dv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLdouble *" count="3"/> <glx rop="4199" doubles_in_order="true"/> @@ -5719,68 +5783,68 @@ <param name="index" type="GLuint"/> <param name="v" type="const GLfloat *"/> </function> - <function name="VertexAttrib3s"> + <function name="VertexAttrib3s" exec="dynamic"> <param name="index" type="GLuint"/> <param name="x" type="GLshort"/> <param name="y" type="GLshort"/> <param name="z" type="GLshort"/> </function> - <function name="VertexAttrib3sv"> + <function name="VertexAttrib3sv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLshort *" count="3"/> <glx rop="4191"/> </function> - <function name="VertexAttrib4Nbv"> + <function name="VertexAttrib4Nbv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLbyte *" count="4"/> <glx rop="4235"/> </function> - <function name="VertexAttrib4Niv"> + <function name="VertexAttrib4Niv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLint *" count="4"/> <glx rop="4237"/> </function> - <function name="VertexAttrib4Nsv"> + <function name="VertexAttrib4Nsv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLshort *" count="4"/> <glx rop="4236"/> </function> - <function name="VertexAttrib4Nub"> + <function name="VertexAttrib4Nub" exec="dynamic"> <param name="index" type="GLuint"/> <param name="x" type="GLubyte"/> <param name="y" type="GLubyte"/> <param name="z" type="GLubyte"/> <param name="w" type="GLubyte"/> </function> - <function name="VertexAttrib4Nubv"> + <function name="VertexAttrib4Nubv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLubyte *" count="4"/> <glx rop="4201"/> </function> - <function name="VertexAttrib4Nuiv"> + <function name="VertexAttrib4Nuiv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLuint *" count="4"/> <glx rop="4239"/> </function> - <function name="VertexAttrib4Nusv"> + <function name="VertexAttrib4Nusv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLushort *" count="4"/> <glx rop="4238"/> </function> - <function name="VertexAttrib4bv"> + <function name="VertexAttrib4bv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLbyte *" count="4"/> <glx rop="4230"/> </function> - <function name="VertexAttrib4d"> + <function name="VertexAttrib4d" exec="dynamic"> <param name="index" type="GLuint"/> <param name="x" type="GLdouble"/> <param name="y" type="GLdouble"/> <param name="z" type="GLdouble"/> <param name="w" type="GLdouble"/> </function> - <function name="VertexAttrib4dv"> + <function name="VertexAttrib4dv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLdouble *" count="4"/> <glx rop="4200" doubles_in_order="true"/> @@ -5796,34 +5860,34 @@ <param name="index" type="GLuint"/> <param name="v" type="const GLfloat *"/> </function> - <function name="VertexAttrib4iv"> + <function name="VertexAttrib4iv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLint *" count="4"/> <glx rop="4231"/> </function> - <function name="VertexAttrib4s"> + <function name="VertexAttrib4s" exec="dynamic"> <param name="index" type="GLuint"/> <param name="x" type="GLshort"/> <param name="y" type="GLshort"/> <param name="z" type="GLshort"/> <param name="w" type="GLshort"/> </function> - <function name="VertexAttrib4sv"> + <function name="VertexAttrib4sv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLshort *" count="4"/> <glx rop="4192"/> </function> - <function name="VertexAttrib4ubv"> + <function name="VertexAttrib4ubv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLubyte *" count="4"/> <glx rop="4232"/> </function> - <function name="VertexAttrib4uiv"> + <function name="VertexAttrib4uiv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLuint *" count="4"/> <glx rop="4234"/> </function> - <function name="VertexAttrib4usv"> + <function name="VertexAttrib4usv" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLushort *" count="4"/> <glx rop="4233"/> @@ -5831,7 +5895,7 @@ <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="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_GENERIC(index), size, type, stride, pointer);"> <param name="index" type="GLuint"/> <param name="size" type="GLint"/> <param name="type" type="GLenum"/> @@ -7670,7 +7734,8 @@ <type name="charARB" size="1" glx_name="CARD8"/> <type name="handleARB" size="4" glx_name="CARD32"/> - <function name="DeleteObjectARB"> + <function name="DeleteObjectARB" + marshal_call_after="_mesa_glthread_ProgramChanged(ctx);"> <param name="obj" type="GLhandleARB"/> <glx ignore="true"/> </function> @@ -8122,7 +8187,7 @@ <enum name="MAX_TRANSFORM_FEEDBACK_BUFFERS" value="0x8E70"/> <enum name="MAX_VERTEX_STREAMS" value="0x8E71"/> - <function name="DrawTransformFeedbackStream" exec="dynamic" marshal="draw"> + <function name="DrawTransformFeedbackStream"> <param name="mode" type="GLenum"/> <param name="id" type="GLuint"/> <param name="stream" type="GLuint"/> @@ -8170,13 +8235,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" marshal="draw"> + <function name="DrawTransformFeedbackInstanced"> <param name="mode" type="GLenum"/> <param name="id" type="GLuint"/> <param name="primcount" type="GLsizei"/> </function> - <function name="DrawTransformFeedbackStreamInstanced" exec="dynamic" marshal="draw"> + <function name="DrawTransformFeedbackStreamInstanced"> <param name="mode" type="GLenum"/> <param name="id" type="GLuint"/> <param name="stream" type="GLuint"/> @@ -9229,7 +9294,7 @@ </function> <function name="ColorPointerEXT" deprecated="3.1" marshal="async" - marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)"> + marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_COLOR0, size, type, stride, pointer);"> <param name="size" type="GLint"/> <param name="type" type="GLenum"/> <param name="stride" type="GLsizei"/> @@ -9245,7 +9310,7 @@ </function> <function name="EdgeFlagPointerEXT" deprecated="3.1" marshal="async" - marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)"> + marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_EDGEFLAG, 1, GL_UNSIGNED_BYTE, stride, pointer);"> <param name="stride" type="GLsizei"/> <param name="count" type="GLsizei"/> <param name="pointer" type="const GLboolean *"/> @@ -9258,7 +9323,7 @@ </function> <function name="IndexPointerEXT" deprecated="3.1" marshal="async" - marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)"> + marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_COLOR_INDEX, 1, type, stride, pointer);"> <param name="type" type="GLenum"/> <param name="stride" type="GLsizei"/> <param name="count" type="GLsizei"/> @@ -9267,7 +9332,7 @@ </function> <function name="NormalPointerEXT" deprecated="3.1" marshal="async" - marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)"> + marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_NORMAL, 3, type, stride, pointer);"> <param name="type" type="GLenum"/> <param name="stride" type="GLsizei"/> <param name="count" type="GLsizei"/> @@ -9276,7 +9341,7 @@ </function> <function name="TexCoordPointerEXT" deprecated="3.1" marshal="async" - marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)"> + marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_TEX(ctx->GLThread.ClientActiveTexture), size, type, stride, pointer);"> <param name="size" type="GLint"/> <param name="type" type="GLenum"/> <param name="stride" type="GLsizei"/> @@ -9286,7 +9351,7 @@ </function> <function name="VertexPointerEXT" deprecated="3.1" marshal="async" - marshal_fail="_mesa_glthread_is_non_vbo_vertex_attrib_pointer(ctx)"> + marshal_call_after="if (COMPAT) _mesa_glthread_AttribPointer(ctx, VERT_ATTRIB_POS, size, type, stride, pointer);"> <param name="size" type="GLint"/> <param name="type" type="GLenum"/> <param name="stride" type="GLsizei"/> @@ -10254,19 +10319,18 @@ </category> <category name="GL_EXT_multi_draw_arrays" number="148"> - <function name="MultiDrawArraysEXT" es1="1.0" es2="2.0" exec="dynamic" alias="MultiDrawArrays"> + <function name="MultiDrawArraysEXT" es1="1.0" es2="2.0" alias="MultiDrawArrays"> <param name="mode" type="GLenum"/> <param name="first" type="const GLint *"/> <param name="count" type="const GLsizei *"/> <param name="primcount" 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)"> + <function name="MultiDrawElementsEXT" es1="1.0" es2="2.0" marshal="custom"> <param name="mode" type="GLenum"/> - <param name="count" type="const GLsizei *"/> + <param name="count" type="const GLsizei *" count="primcount"/> <param name="type" type="GLenum"/> - <param name="indices" type="const GLvoid * const *"/> + <param name="indices" type="const GLvoid * const *" count="(sizeof(GLvoid *) * primcount)"/> <param name="primcount" type="GLsizei"/> <glx handcode="true"/> </function> @@ -10945,14 +11009,14 @@ <param name="target" type="GLenum"/> <param name="start" type="GLuint"/> <param name="count" type="GLsizei"/> - <param name="v" type="const GLfloat *"/> + <param name="v" type="const GLfloat *" count="(2 * count)"/> </function> <function name="NamedFramebufferSampleLocationsfvARB" no_error="true"> <param name="framebuffer" type="GLuint"/> <param name="start" type="GLuint"/> <param name="count" type="GLsizei"/> - <param name="v" type="const GLfloat *"/> + <param name="v" type="const GLfloat *" count="(2 * count)"/> </function> <function name="EvaluateDepthValuesARB"/> @@ -11324,7 +11388,7 @@ </function> <function name="WindowPos4dvMESA" deprecated="3.1"> - <param name="v" type="const GLdouble *"/> + <param name="v" type="const GLdouble *" count="4"/> <glx ignore="true"/> </function> @@ -11337,7 +11401,7 @@ </function> <function name="WindowPos4fvMESA" deprecated="3.1"> - <param name="v" type="const GLfloat *"/> + <param name="v" type="const GLfloat *" count="4"/> <glx ignore="true"/> </function> @@ -11350,7 +11414,7 @@ </function> <function name="WindowPos4ivMESA" deprecated="3.1"> - <param name="v" type="const GLint *"/> + <param name="v" type="const GLint *" count="4"/> <glx ignore="true"/> </function> @@ -11363,7 +11427,7 @@ </function> <function name="WindowPos4svMESA" deprecated="3.1"> - <param name="v" type="const GLshort *"/> + <param name="v" type="const GLshort *" count="4"/> <glx ignore="true"/> </function> </category> @@ -11376,21 +11440,22 @@ </category> <category name="GL_IBM_multimode_draw_arrays" number="200"> - <function name="MultiModeDrawArraysIBM" marshal="draw"> - <param name="mode" type="const GLenum *"/> - <param name="first" type="const GLint *"/> - <param name="count" type="const GLsizei *"/> + <function name="MultiModeDrawArraysIBM" + marshal_sync="_mesa_glthread_has_non_vbo_vertices(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"/> <param name="primcount" type="GLsizei"/> <param name="modestride" type="GLint"/> <glx handcode="true" ignore="true"/> </function> - <function name="MultiModeDrawElementsIBM" marshal="draw" - marshal_fail="_mesa_glthread_is_non_vbo_draw_elements(ctx)"> - <param name="mode" type="const GLenum *"/> - <param name="count" type="const GLsizei *"/> + <function name="MultiModeDrawElementsIBM" + marshal_sync="_mesa_glthread_has_non_vbo_vertices_or_indices(ctx)"> + <param name="mode" type="const GLenum *" count="primcount"/> + <param name="count" type="const GLsizei *" count="primcount"/> <param name="type" type="GLenum"/> - <param name="indices" type="const GLvoid * const *"/> + <param name="indices" type="const GLvoid * const *" count="(sizeof(GLvoid *) * primcount)"/> <param name="primcount" type="GLsizei"/> <param name="modestride" type="GLint"/> <glx handcode="true" ignore="true"/> @@ -11968,32 +12033,32 @@ <glx handcode="true"/> </function> - <function name="VertexAttrib1sNV" + <function name="VertexAttrib1sNV" exec="dynamic" vectorequiv="VertexAttrib1svNV" deprecated="3.1"> <param name="index" type="GLuint"/> <param name="x" type="GLshort"/> </function> - <function name="VertexAttrib1svNV" deprecated="3.1"> + <function name="VertexAttrib1svNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLshort *" count="1"/> <glx rop="4265"/> </function> - <function name="VertexAttrib2sNV" + <function name="VertexAttrib2sNV" exec="dynamic" vectorequiv="VertexAttrib2svNV" deprecated="3.1"> <param name="index" type="GLuint"/> <param name="x" type="GLshort"/> <param name="y" type="GLshort"/> </function> - <function name="VertexAttrib2svNV" deprecated="3.1"> + <function name="VertexAttrib2svNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLshort *" count="2"/> <glx rop="4266"/> </function> - <function name="VertexAttrib3sNV" + <function name="VertexAttrib3sNV" exec="dynamic" vectorequiv="VertexAttrib3svNV" deprecated="3.1"> <param name="index" type="GLuint"/> <param name="x" type="GLshort"/> @@ -12001,13 +12066,13 @@ <param name="z" type="GLshort"/> </function> - <function name="VertexAttrib3svNV" deprecated="3.1"> + <function name="VertexAttrib3svNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLshort *" count="3"/> <glx rop="4267"/> </function> - <function name="VertexAttrib4sNV" + <function name="VertexAttrib4sNV" exec="dynamic" vectorequiv="VertexAttrib4svNV" deprecated="3.1"> <param name="index" type="GLuint"/> <param name="x" type="GLshort"/> @@ -12016,7 +12081,7 @@ <param name="w" type="GLshort"/> </function> - <function name="VertexAttrib4svNV" deprecated="3.1"> + <function name="VertexAttrib4svNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLshort *" count="4"/> <glx rop="4268"/> @@ -12076,32 +12141,32 @@ <glx rop="4272"/> </function> - <function name="VertexAttrib1dNV" + <function name="VertexAttrib1dNV" exec="dynamic" vectorequiv="VertexAttrib1dvNV" deprecated="3.1"> <param name="index" type="GLuint"/> <param name="x" type="GLdouble"/> </function> - <function name="VertexAttrib1dvNV" deprecated="3.1"> + <function name="VertexAttrib1dvNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLdouble *" count="1"/> <glx rop="4273" doubles_in_order="true"/> </function> - <function name="VertexAttrib2dNV" + <function name="VertexAttrib2dNV" exec="dynamic" vectorequiv="VertexAttrib2dvNV" deprecated="3.1"> <param name="index" type="GLuint"/> <param name="x" type="GLdouble"/> <param name="y" type="GLdouble"/> </function> - <function name="VertexAttrib2dvNV" deprecated="3.1"> + <function name="VertexAttrib2dvNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLdouble *" count="2"/> <glx rop="4274" doubles_in_order="true"/> </function> - <function name="VertexAttrib3dNV" + <function name="VertexAttrib3dNV" exec="dynamic" vectorequiv="VertexAttrib3dvNV" deprecated="3.1"> <param name="index" type="GLuint"/> <param name="x" type="GLdouble"/> @@ -12109,13 +12174,13 @@ <param name="z" type="GLdouble"/> </function> - <function name="VertexAttrib3dvNV" deprecated="3.1"> + <function name="VertexAttrib3dvNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLdouble *" count="3"/> <glx rop="4275" doubles_in_order="true"/> </function> - <function name="VertexAttrib4dNV" + <function name="VertexAttrib4dNV" exec="dynamic" vectorequiv="VertexAttrib4dvNV" deprecated="3.1"> <param name="index" type="GLuint"/> <param name="x" type="GLdouble"/> @@ -12124,13 +12189,13 @@ <param name="w" type="GLdouble"/> </function> - <function name="VertexAttrib4dvNV" deprecated="3.1"> + <function name="VertexAttrib4dvNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLdouble *" count="4"/> <glx rop="4276" doubles_in_order="true"/> </function> - <function name="VertexAttrib4ubNV" + <function name="VertexAttrib4ubNV" exec="dynamic" vectorequiv="VertexAttrib4ubvNV" deprecated="3.1"> <param name="index" type="GLuint"/> <param name="x" type="GLubyte"/> @@ -12139,97 +12204,97 @@ <param name="w" type="GLubyte"/> </function> - <function name="VertexAttrib4ubvNV" deprecated="3.1"> + <function name="VertexAttrib4ubvNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="v" type="const GLubyte *" count="4"/> <glx rop="4277"/> </function> - <function name="VertexAttribs1svNV" deprecated="3.1"> + <function name="VertexAttribs1svNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="n" type="GLsizei" counter="true"/> <param name="v" type="const GLshort *" count="n"/> <glx rop="4202"/> </function> - <function name="VertexAttribs2svNV" deprecated="3.1"> + <function name="VertexAttribs2svNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="n" type="GLsizei" counter="true"/> <param name="v" type="const GLshort *" count="n" count_scale="2"/> <glx rop="4203"/> </function> - <function name="VertexAttribs3svNV" deprecated="3.1"> + <function name="VertexAttribs3svNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="n" type="GLsizei" counter="true"/> <param name="v" type="const GLshort *" count="n" count_scale="3"/> <glx rop="4204"/> </function> - <function name="VertexAttribs4svNV" deprecated="3.1"> + <function name="VertexAttribs4svNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="n" type="GLsizei" counter="true"/> <param name="v" type="const GLshort *" count="n" count_scale="4"/> <glx rop="4205"/> </function> - <function name="VertexAttribs1fvNV" deprecated="3.1"> + <function name="VertexAttribs1fvNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="n" type="GLsizei" counter="true"/> <param name="v" type="const GLfloat *" count="n"/> <glx rop="4206"/> </function> - <function name="VertexAttribs2fvNV" deprecated="3.1"> + <function name="VertexAttribs2fvNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="n" type="GLsizei" counter="true"/> <param name="v" type="const GLfloat *" count="n" count_scale="2"/> <glx rop="4207"/> </function> - <function name="VertexAttribs3fvNV" deprecated="3.1"> + <function name="VertexAttribs3fvNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="n" type="GLsizei" counter="true"/> <param name="v" type="const GLfloat *" count="n" count_scale="3"/> <glx rop="4208"/> </function> - <function name="VertexAttribs4fvNV" deprecated="3.1"> + <function name="VertexAttribs4fvNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="n" type="GLsizei" counter="true"/> <param name="v" type="const GLfloat *" count="n" count_scale="4"/> <glx rop="4209"/> </function> - <function name="VertexAttribs1dvNV" deprecated="3.1"> + <function name="VertexAttribs1dvNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="n" type="GLsizei" counter="true"/> <param name="v" type="const GLdouble *" count="n"/> <glx rop="4210" doubles_in_order="true"/> </function> - <function name="VertexAttribs2dvNV" deprecated="3.1"> + <function name="VertexAttribs2dvNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="n" type="GLsizei" counter="true"/> <param name="v" type="const GLdouble *" count="n" count_scale="2"/> <glx rop="4211" doubles_in_order="true"/> </function> - <function name="VertexAttribs3dvNV" deprecated="3.1"> + <function name="VertexAttribs3dvNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="n" type="GLsizei" counter="true"/> <param name="v" type="const GLdouble *" count="n" count_scale="3"/> <glx rop="4212" doubles_in_order="true"/> </function> - <function name="VertexAttribs4dvNV" deprecated="3.1"> + <function name="VertexAttribs4dvNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="n" type="GLsizei" counter="true"/> <param name="v" type="const GLdouble *" count="n" count_scale="4"/> <glx rop="4213" doubles_in_order="true"/> </function> - <function name="VertexAttribs4ubvNV" deprecated="3.1"> + <function name="VertexAttribs4ubvNV" deprecated="3.1" exec="dynamic"> <param name="index" type="GLuint"/> <param name="n" type="GLsizei" counter="true"/> <param name="v" type="const GLubyte *" count="n" count_scale="4"/> @@ -12553,7 +12618,7 @@ <function name="SetFragmentShaderConstantATI" deprecated="3.1"> <param name="dst" type="GLuint"/> - <param name="value" type="const GLfloat *"/> + <param name="value" type="const GLfloat *" count="4"/> <glx ignore="true"/> </function> </category> @@ -12964,6 +13029,8 @@ <xi:include href="EXT_separate_shader_objects.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> +<xi:include href="NV_copy_image.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + <xi:include href="EXT_vertex_attrib_64bit.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> <xi:include href="AMD_depth_clamp_separate.xml" @@ -13052,6 +13119,8 @@ <xi:include href="INTEL_performance_query.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> +<xi:include href="NV_alpha_to_coverage_dither_control.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + <category name="GL_EXT_polygon_offset_clamp" number="460"> <enum name="POLYGON_OFFSET_CLAMP_EXT" value="0x8E1B"> <size name="Get" mode="get"/> @@ -13141,14 +13210,14 @@ <param name="target" type="GLenum"/> <param name="index" type="GLuint"/> <param name="count" type="GLsizei"/> - <param name="params" type="const GLfloat *"/> + <param name="params" type="const GLfloat *" count="4"/> </function> <function name="ProgramLocalParameters4fvEXT" deprecated="3.1"> <param name="target" type="GLenum"/> <param name="index" type="GLuint"/> <param name="count" type="GLsizei"/> - <param name="params" type="const GLfloat *"/> + <param name="params" type="const GLfloat *" count="4"/> </function> </category> @@ -13259,6 +13328,24 @@ </function> </category> +<category name="GL_MESA_internal_functions"> + <!-- Internal function for glthread to implement BufferSubData as a GPU copy. --> + <function name="InternalBufferSubDataCopyMESA" es2="2.0"> + <param name="srcBuffer" type="GLintptr"/> <!-- "struct gl_buffer_object *" really --> + <param name="srcOffset" type="GLuint"/> + <param name="dstTargetOrName" type="GLuint"/> + <param name="dstOffset" type="GLintptr"/> + <param name="size" type="GLsizeiptr"/> + <param name="named" type="GLboolean"/> + <param name="ext_dsa" type="GLboolean"/> + </function> + + <!-- Set a GL error. Used by glthread to set errors without syncing. --> + <function name="InternalSetError" es2="2.0"> + <param name="error" type="GLenum"/> + </function> +</category> + <xi:include href="OES_EGL_image.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> <xi:include href="EXT_EGL_image_storage.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> @@ -13280,6 +13367,9 @@ <xi:include href="EXT_external_objects.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> <xi:include href="EXT_external_objects_fd.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> +<xi:include href="NV_viewport_swizzle.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + +<xi:include href="NV_half_float.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> <xi:include href="GL4x.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> </OpenGLAPI> diff --git a/lib/mesa/src/mapi/glapi/gen/gl_XML.py b/lib/mesa/src/mapi/glapi/gen/gl_XML.py index 1e8859c98..da80ea1b8 100644 --- a/lib/mesa/src/mapi/glapi/gen/gl_XML.py +++ b/lib/mesa/src/mapi/glapi/gen/gl_XML.py @@ -431,6 +431,7 @@ class gl_parameter(object): self.count = 0 self.counter = c + self.marshal_count = element.get("marshal_count") self.count_scale = int(element.get( "count_scale", "1" )) elements = (count * self.count_scale) @@ -493,7 +494,7 @@ class gl_parameter(object): def is_variable_length(self): - return len(self.count_parameter_list) or self.counter + return len(self.count_parameter_list) or self.counter or self.marshal_count def is_64_bit(self): @@ -564,7 +565,7 @@ class gl_parameter(object): return c - def size_string(self, use_parens = 1): + def size_string(self, use_parens = 1, marshal = 0): base_size_str = "" count = self.get_element_count() @@ -573,10 +574,12 @@ class gl_parameter(object): base_size_str += "sizeof(%s)" % ( self.get_base_type_string() ) - if self.counter or self.count_parameter_list: + if self.counter or self.count_parameter_list or (self.marshal_count and marshal): list = [ "compsize" ] - if self.counter and self.count_parameter_list: + if self.marshal_count and marshal: + list = [ self.marshal_count ] + elif self.counter and self.count_parameter_list: list.append( self.counter ) elif self.counter: list = [ self.counter ] @@ -650,6 +653,12 @@ class gl_function( gl_item ): name = element.get( "name" ) alias = element.get( "alias" ) + # marshal isn't allowed with alias + assert not alias or not element.get('marshal') + assert not alias or not element.get('marshal_count') + assert not alias or not element.get('marshal_sync') + assert not alias or not element.get('marshal_call_after') + if name in static_data.functions: self.static_entry_points.append(name) diff --git a/lib/mesa/src/mapi/glapi/gen/gl_apitemp.py b/lib/mesa/src/mapi/glapi/gen/gl_apitemp.py index d0583f48e..f4870be03 100644 --- a/lib/mesa/src/mapi/glapi/gen/gl_apitemp.py +++ b/lib/mesa/src/mapi/glapi/gen/gl_apitemp.py @@ -166,6 +166,10 @@ class PrintGlOffsets(gl_XML.gl_print_base): #error RETURN_DISPATCH must be defined #endif +#ifdef MemoryBarrier +#undef MemoryBarrier +#endif + """) return diff --git a/lib/mesa/src/mapi/glapi/gen/gl_enums.py b/lib/mesa/src/mapi/glapi/gen/gl_enums.py index 00f8134ba..1e4d5a3b3 100644 --- a/lib/mesa/src/mapi/glapi/gen/gl_enums.py +++ b/lib/mesa/src/mapi/glapi/gen/gl_enums.py @@ -2,7 +2,7 @@ # (C) Copyright Zack Rusin 2005. All Rights Reserved. # Copyright (C) 2015 Intel Corporation # Copyright (C) 2015 Broadcom Corporation -# +# # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation @@ -50,9 +50,9 @@ class PrintGlEnums(gl_XML.gl_print_base): def printRealHeader(self): + print('#include <stdio.h>') print('#include "main/glheader.h"') print('#include "main/enums.h"') - print('#include "main/imports.h"') print('#include "main/mtypes.h"') print('') print('typedef struct PACKED {') @@ -103,7 +103,7 @@ _mesa_enum_to_string(int nr) } else { /* this is not re-entrant safe, no big deal here */ - _mesa_snprintf(token_tmp, sizeof(token_tmp) - 1, "0x%x", nr); + snprintf(token_tmp, sizeof(token_tmp) - 1, "0x%x", nr); token_tmp[sizeof(token_tmp) - 1] = '\\0'; return token_tmp; } diff --git a/lib/mesa/src/mapi/glapi/gen/gl_genexec.py b/lib/mesa/src/mapi/glapi/gen/gl_genexec.py index bd14bff4f..8bca9ed69 100644 --- a/lib/mesa/src/mapi/glapi/gen/gl_genexec.py +++ b/lib/mesa/src/mapi/glapi/gen/gl_genexec.py @@ -48,7 +48,6 @@ header = """/** #include "main/accum.h" -#include "main/api_loopback.h" #include "main/api_exec.h" #include "main/arbprogram.h" #include "main/atifragshader.h" @@ -89,7 +88,6 @@ header = """/** #include "main/genmipmap.h" #include "main/hint.h" #include "main/histogram.h" -#include "main/imports.h" #include "main/light.h" #include "main/lines.h" #include "main/matrix.h" @@ -151,8 +149,6 @@ _mesa_initialize_exec_table(struct gl_context *ctx) assert(exec != NULL); assert(ctx->Version > 0); - - _mesa_initialize_exec_dispatch(ctx, exec); """ diff --git a/lib/mesa/src/mapi/glapi/gen/gl_marshal.py b/lib/mesa/src/mapi/glapi/gen/gl_marshal.py index 4fd2bc2a5..df4309755 100644 --- a/lib/mesa/src/mapi/glapi/gen/gl_marshal.py +++ b/lib/mesa/src/mapi/glapi/gen/gl_marshal.py @@ -31,14 +31,24 @@ import sys header = """ #include "api_exec.h" -#include "context.h" +#include "glthread_marshal.h" +#include "bufferobj.h" #include "dispatch.h" -#include "glthread.h" -#include "marshal.h" -#include "marshal_generated.h" + +#define COMPAT (ctx->API != API_OPENGL_CORE) + +UNUSED static inline int safe_mul(int a, int b) +{ + if (a < 0 || b < 0) return -1; + if (a == 0 || b == 0) return 0; + if (a > INT_MAX / b) return -1; + return a * b; +} """ +file_index = 0 +file_count = 1 current_indent = 0 @@ -67,39 +77,29 @@ class PrintCode(gl_XML.gl_print_base): def printRealHeader(self): print(header) - print('static inline int safe_mul(int a, int b)') - print('{') - print(' if (a < 0 || b < 0) return -1;') - print(' if (a == 0 || b == 0) return 0;') - print(' if (a > INT_MAX / b) return -1;') - print(' return a * b;') - print('}') - print() def printRealFooter(self): pass - def print_sync_call(self, func): + def print_sync_call(self, func, unmarshal = 0): call = 'CALL_{0}(ctx->CurrentServerDispatch, ({1}))'.format( func.name, func.get_called_parameter_string()) - if func.return_type == 'void': + if func.return_type == 'void' or unmarshal: out('{0};'.format(call)) + if func.marshal_call_after and not unmarshal: + out(func.marshal_call_after); else: out('return {0};'.format(call)) - - def print_sync_dispatch(self, func): - out('debug_print_sync_fallback("{0}");'.format(func.name)) - self.print_sync_call(func) + assert not func.marshal_call_after def print_sync_body(self, func): out('/* {0}: marshalled synchronously */'.format(func.name)) - out('static {0} GLAPIENTRY'.format(func.return_type)) + out('{0} GLAPIENTRY'.format(func.return_type)) out('_mesa_marshal_{0}({1})'.format(func.name, func.get_parameter_string())) out('{') with indent(): out('GET_CURRENT_CONTEXT(ctx);') - out('_mesa_glthread_finish(ctx);') - out('debug_print_sync("{0}");'.format(func.name)) + out('_mesa_glthread_finish_before(ctx, "{0}");'.format(func.name)) self.print_sync_call(func) out('}') out('') @@ -108,71 +108,142 @@ class PrintCode(gl_XML.gl_print_base): def print_async_dispatch(self, func): out('cmd = _mesa_glthread_allocate_command(ctx, ' 'DISPATCH_CMD_{0}, cmd_size);'.format(func.name)) - for p in func.fixed_params: + + # We want glthread to ignore variable-sized parameters if the only thing + # we want is to pass the pointer parameter as-is, e.g. when a PBO is bound. + # Making it conditional on marshal_sync is kinda hacky, but it's the easiest + # path towards handling PBOs in glthread, which use marshal_sync to check whether + # a PBO is bound. + if func.marshal_sync: + fixed_params = func.fixed_params + func.variable_params + variable_params = [] + else: + fixed_params = func.fixed_params + variable_params = func.variable_params + + for p in fixed_params: if p.count: out('memcpy(cmd->{0}, {0}, {1});'.format( p.name, p.size_string())) else: out('cmd->{0} = {0};'.format(p.name)) - if func.variable_params: + if variable_params: out('char *variable_data = (char *) (cmd + 1);') - for p in func.variable_params: + i = 1 + for p in variable_params: if p.img_null_flag: out('cmd->{0}_null = !{0};'.format(p.name)) out('if (!cmd->{0}_null) {{'.format(p.name)) with indent(): - out(('memcpy(variable_data, {0}, {1});').format( - p.name, p.size_string(False))) - out('variable_data += {0};'.format( - p.size_string(False))) + out(('memcpy(variable_data, {0}, {0}_size);').format(p.name)) + if i < len(variable_params): + out('variable_data += {0}_size;'.format(p.name)) out('}') else: - out(('memcpy(variable_data, {0}, {1});').format( - p.name, p.size_string(False))) - out('variable_data += {0};'.format( - p.size_string(False))) - - if not func.fixed_params and not func.variable_params: - out('(void) cmd;\n') - out('_mesa_post_marshal_hook(ctx);') + out(('memcpy(variable_data, {0}, {0}_size);').format(p.name)) + if i < len(variable_params): + out('variable_data += {0}_size;'.format(p.name)) + i += 1 + + if not fixed_params and not variable_params: + out('(void) cmd;') + + if func.marshal_call_after: + out(func.marshal_call_after); + + # Uncomment this if you want to call _mesa_glthread_finish for debugging + #out('_mesa_glthread_finish(ctx);') + + def get_type_size(self, str): + if str.find('*') != -1: + return 8; + + mapping = { + 'GLboolean': 1, + 'GLbyte': 1, + 'GLubyte': 1, + 'GLshort': 2, + 'GLushort': 2, + 'GLhalfNV': 2, + 'GLenum': 4, + 'GLint': 4, + 'GLuint': 4, + 'GLbitfield': 4, + 'GLsizei': 4, + 'GLfloat': 4, + 'GLclampf': 4, + 'GLfixed': 4, + 'GLclampx': 4, + 'GLhandleARB': 4, + 'int': 4, + 'float': 4, + 'GLdouble': 8, + 'GLclampd': 8, + 'GLintptr': 8, + 'GLsizeiptr': 8, + 'GLint64': 8, + 'GLuint64': 8, + 'GLuint64EXT': 8, + 'GLsync': 8, + } + val = mapping.get(str, 9999) + if val == 9999: + print('Unhandled type in gl_marshal.py.get_type_size: ' + str, file=sys.stderr) + return val def print_async_struct(self, func): + if func.marshal_sync: + fixed_params = func.fixed_params + func.variable_params + variable_params = [] + else: + fixed_params = func.fixed_params + variable_params = func.variable_params + out('struct marshal_cmd_{0}'.format(func.name)) out('{') with indent(): out('struct marshal_cmd_base cmd_base;') - for p in func.fixed_params: + + # Sort the parameters according to their size to pack the structure optimally + for p in sorted(fixed_params, key=lambda p: self.get_type_size(p.type_string())): if p.count: out('{0} {1}[{2}];'.format( p.get_base_type_string(), p.name, p.count)) else: out('{0} {1};'.format(p.type_string(), p.name)) - for p in func.variable_params: + for p in variable_params: if p.img_null_flag: out('bool {0}_null; /* If set, no data follows ' 'for "{0}" */'.format(p.name)) - for p in func.variable_params: + for p in variable_params: if p.count_scale != 1: out(('/* Next {0} bytes are ' '{1} {2}[{3}][{4}] */').format( - p.size_string(), p.get_base_type_string(), + p.size_string(marshal = 1), p.get_base_type_string(), p.name, p.counter, p.count_scale)) else: out(('/* Next {0} bytes are ' '{1} {2}[{3}] */').format( - p.size_string(), p.get_base_type_string(), + p.size_string(marshal = 1), p.get_base_type_string(), p.name, p.counter)) out('};') def print_async_unmarshal(self, func): - out('static inline void') + if func.marshal_sync: + fixed_params = func.fixed_params + func.variable_params + variable_params = [] + else: + fixed_params = func.fixed_params + variable_params = func.variable_params + + out('void') out(('_mesa_unmarshal_{0}(struct gl_context *ctx, ' 'const struct marshal_cmd_{0} *cmd)').format(func.name)) out('{') with indent(): - for p in func.fixed_params: + for p in fixed_params: if p.count: p_decl = '{0} * {1} = cmd->{1};'.format( p.get_base_type_string(), p.name) @@ -180,93 +251,95 @@ class PrintCode(gl_XML.gl_print_base): p_decl = '{0} {1} = cmd->{1};'.format( p.type_string(), p.name) - if not p_decl.startswith('const '): + if not p_decl.startswith('const ') and p.count: # Declare all local function variables as const, even if # the original parameter is not const. p_decl = 'const ' + p_decl out(p_decl) - if func.variable_params: - for p in func.variable_params: - out('const {0} * {1};'.format( + if variable_params: + for p in variable_params: + out('{0} * {1};'.format( p.get_base_type_string(), p.name)) out('const char *variable_data = (const char *) (cmd + 1);') - for p in func.variable_params: - out('{0} = (const {1} *) variable_data;'.format( + i = 1 + for p in variable_params: + out('{0} = ({1} *) variable_data;'.format( p.name, p.get_base_type_string())) if p.img_null_flag: out('if (cmd->{0}_null)'.format(p.name)) with indent(): out('{0} = NULL;'.format(p.name)) - out('else') - with indent(): - out('variable_data += {0};'.format(p.size_string(False))) - else: - out('variable_data += {0};'.format(p.size_string(False))) - - self.print_sync_call(func) + if i < len(variable_params): + out('else') + with indent(): + out('variable_data += {0};'.format(p.size_string(False, marshal = 1))) + elif i < len(variable_params): + out('variable_data += {0};'.format(p.size_string(False, marshal = 1))) + i += 1 + + self.print_sync_call(func, unmarshal = 1) out('}') def validate_count_or_fallback(self, func): # Check that any counts for variable-length arguments might be < 0, in # which case the command alloc or the memcpy would blow up before we # get to the validation in Mesa core. + list = [] for p in func.parameters: if p.is_variable_length(): - out('if (unlikely({0} < 0)) {{'.format(p.size_string())) - with indent(): - out('goto fallback_to_sync;') - out('}') - return True - return False + list.append('{0}_size < 0'.format(p.name)) + list.append('({0}_size > 0 && !{0})'.format(p.name)) + + if len(list) == 0: + return + list.append('(unsigned)cmd_size > MARSHAL_MAX_CMD_SIZE') + + out('if (unlikely({0})) {{'.format(' || '.join(list))) + with indent(): + out('_mesa_glthread_finish_before(ctx, "{0}");'.format(func.name)) + self.print_sync_call(func) + out('return;') + out('}') def print_async_marshal(self, func): - need_fallback_sync = False - out('static void GLAPIENTRY') + out('{0} GLAPIENTRY'.format(func.return_type)) out('_mesa_marshal_{0}({1})'.format( func.name, func.get_parameter_string())) out('{') with indent(): out('GET_CURRENT_CONTEXT(ctx);') + if not func.marshal_sync: + for p in func.variable_params: + out('int {0}_size = {1};'.format(p.name, p.size_string(marshal = 1))) + struct = 'struct marshal_cmd_{0}'.format(func.name) size_terms = ['sizeof({0})'.format(struct)] - for p in func.variable_params: - size = p.size_string() - if p.img_null_flag: - size = '({0} ? {1} : 0)'.format(p.name, size) - size_terms.append(size) - out('size_t cmd_size = {0};'.format(' + '.join(size_terms))) + if not func.marshal_sync: + for p in func.variable_params: + if p.img_null_flag: + size_terms.append('({0} ? {0}_size : 0)'.format(p.name)) + else: + size_terms.append('{0}_size'.format(p.name)) + out('int cmd_size = {0};'.format(' + '.join(size_terms))) out('{0} *cmd;'.format(struct)) - out('debug_print_marshal("{0}");'.format(func.name)) - - need_fallback_sync = self.validate_count_or_fallback(func) - - if func.marshal_fail: - out('if ({0}) {{'.format(func.marshal_fail)) + if func.marshal_sync: + out('if ({0}) {{'.format(func.marshal_sync)) with indent(): - out('_mesa_glthread_finish(ctx);') - out('_mesa_glthread_restore_dispatch(ctx, __func__);') - self.print_sync_dispatch(func) + out('_mesa_glthread_finish_before(ctx, "{0}");'.format(func.name)) + self.print_sync_call(func) out('return;') out('}') + else: + self.validate_count_or_fallback(func) - out('if (cmd_size <= MARSHAL_MAX_CMD_SIZE) {') - with indent(): - self.print_async_dispatch(func) - out('return;') - out('}') - - out('') - if need_fallback_sync: - out('fallback_to_sync:') - with indent(): - out('_mesa_glthread_finish(ctx);') - self.print_sync_dispatch(func) - + self.print_async_dispatch(func) + if func.return_type == 'GLboolean': + out('return GL_TRUE;') # for glUnmapBuffer out('}') def print_async_body(self, func): @@ -278,35 +351,22 @@ class PrintCode(gl_XML.gl_print_base): out('') def print_unmarshal_dispatch_cmd(self, api): - out('size_t') - out('_mesa_unmarshal_dispatch_cmd(struct gl_context *ctx, ' - 'const void *cmd)') - out('{') + out('const _mesa_unmarshal_func _mesa_unmarshal_dispatch[NUM_DISPATCH_CMD] = {') with indent(): - out('const struct marshal_cmd_base *cmd_base = cmd;') - out('switch (cmd_base->cmd_id) {') for func in api.functionIterateAll(): flavor = func.marshal_flavor() if flavor in ('skip', 'sync'): continue - out('case DISPATCH_CMD_{0}:'.format(func.name)) - with indent(): - out('debug_print_unmarshal("{0}");'.format(func.name)) - out(('_mesa_unmarshal_{0}(ctx, (const struct marshal_cmd_{0} *)' - ' cmd);').format(func.name)) - out('break;') - out('default:') - with indent(): - out('assert(!"Unrecognized command ID");') - out('break;') - out('}') - out('') - out('return cmd_base->cmd_size;') - out('}') + out('[DISPATCH_CMD_{0}] = (_mesa_unmarshal_func)_mesa_unmarshal_{0},'.format(func.name)) + out('};') out('') out('') def print_create_marshal_table(self, api): + out('/* _mesa_create_marshal_table takes a long time to compile with -O2 */') + out('#if defined(__GNUC__) && !defined(__clang__)') + out('__attribute__((optimize("O1")))') + out('#endif') out('struct _glapi_table *') out('_mesa_create_marshal_table(const struct gl_context *ctx)') out('{') @@ -321,7 +381,11 @@ class PrintCode(gl_XML.gl_print_base): for func in api.functionIterateAll(): if func.marshal_flavor() == 'skip': continue - out('SET_{0}(table, _mesa_marshal_{0});'.format(func.name)) + # Don't use the SET_* functions, because they increase compile time + # by 20 seconds (on Ryzen 1700X). + out('if (_gloffset_{0} >= 0)'.format(func.name)) + out(' ((_glapi_proc *)(table))[_gloffset_{0}] = (_glapi_proc)_mesa_marshal_{0};' + .format(func.name)) out('') out('return table;') out('}') @@ -329,18 +393,27 @@ class PrintCode(gl_XML.gl_print_base): out('') def printBody(self, api): - async_funcs = [] + # The first file only contains the dispatch tables + if file_index == 0: + self.print_unmarshal_dispatch_cmd(api) + self.print_create_marshal_table(api) + return + + # The remaining files contain the marshal and unmarshal functions + func_per_file = (len(api.functionIterateAll()) // (file_count - 1)) + 1 + i = -1 for func in api.functionIterateAll(): + i += 1 + if i // func_per_file != (file_index - 1): + continue + flavor = func.marshal_flavor() if flavor in ('skip', 'custom'): continue elif flavor == 'async': self.print_async_body(func) - async_funcs.append(func) elif flavor == 'sync': self.print_sync_body(func) - self.print_unmarshal_dispatch_cmd(api) - self.print_create_marshal_table(api) def show_usage(): @@ -352,14 +425,19 @@ if __name__ == '__main__': file_name = 'gl_API.xml' try: - (args, trail) = getopt.getopt(sys.argv[1:], 'm:f:') + (args, trail) = getopt.getopt(sys.argv[1:], 'm:f:i:n:') except Exception: show_usage() for (arg,val) in args: if arg == '-f': file_name = val + elif arg == '-i': + file_index = int(val) + elif arg == '-n': + file_count = int(val) + assert file_index < file_count printer = PrintCode() api = gl_XML.parse_GL_API(file_name, marshal_XML.marshal_item_factory()) diff --git a/lib/mesa/src/mapi/glapi/gen/gl_marshal_h.py b/lib/mesa/src/mapi/glapi/gen/gl_marshal_h.py index a7a9eda57..729103b45 100644 --- a/lib/mesa/src/mapi/glapi/gen/gl_marshal_h.py +++ b/lib/mesa/src/mapi/glapi/gen/gl_marshal_h.py @@ -30,12 +30,12 @@ import sys header = """ -#ifndef MARSHAL_GENERATABLE_H -#define MARSHAL_GENERATABLE_H +#ifndef MARSHAL_GENERATED_H +#define MARSHAL_GENERATED_H """ footer = """ -#endif /* MARSHAL_GENERATABLE_H */ +#endif /* MARSHAL_GENERATED_H */ """ @@ -54,6 +54,8 @@ class PrintCode(gl_XML.gl_print_base): print(footer) def printBody(self, api): + print('#include "GL/gl.h"') + print('') print('enum marshal_dispatch_cmd_id') print('{') for func in api.functionIterateAll(): @@ -61,7 +63,19 @@ class PrintCode(gl_XML.gl_print_base): if flavor in ('skip', 'sync'): continue print(' DISPATCH_CMD_{0},'.format(func.name)) + print(' NUM_DISPATCH_CMD,') print('};') + print('') + + for func in api.functionIterateAll(): + flavor = func.marshal_flavor() + if flavor in ('custom', 'async'): + print('struct marshal_cmd_{0};'.format(func.name)) + print(('void _mesa_unmarshal_{0}(struct gl_context *ctx, ' + 'const struct marshal_cmd_{0} *cmd);').format(func.name)) + print('{0} GLAPIENTRY _mesa_marshal_{1}({2});'.format(func.return_type, func.name, func.get_parameter_string())) + elif flavor == 'sync': + print('{0} GLAPIENTRY _mesa_marshal_{1}({2});'.format(func.return_type, func.name, func.get_parameter_string())) def show_usage(): diff --git a/lib/mesa/src/mapi/glapi/gen/gl_table.py b/lib/mesa/src/mapi/glapi/gen/gl_table.py index 4b89ef8a8..e32139e6a 100644 --- a/lib/mesa/src/mapi/glapi/gen/gl_table.py +++ b/lib/mesa/src/mapi/glapi/gen/gl_table.py @@ -64,6 +64,10 @@ class PrintGlTable(gl_XML.gl_print_base): print('extern "C" {') print('#endif') print('') + print('#ifdef MemoryBarrier') + print('#undef MemoryBarrier') + print('#endif') + print('') print('struct _glapi_table') print('{') return @@ -100,7 +104,10 @@ class PrintRemapTable(gl_XML.gl_print_base): * can SET_FuncName, are used to get and set the dispatch pointer for the * named function in the specified dispatch table. */ + +#include "main/glheader.h" """) + print('#include "main/glheader.h"') return diff --git a/lib/mesa/src/mapi/glapi/gen/marshal_XML.py b/lib/mesa/src/mapi/glapi/gen/marshal_XML.py index d761e58ce..d1c0bca79 100644 --- a/lib/mesa/src/mapi/glapi/gen/marshal_XML.py +++ b/lib/mesa/src/mapi/glapi/gen/marshal_XML.py @@ -57,14 +57,15 @@ class marshal_function(gl_XML.gl_function): # Store the "marshal" attribute, if present. self.marshal = element.get('marshal') - self.marshal_fail = element.get('marshal_fail') + self.marshal_sync = element.get('marshal_sync') + self.marshal_call_after = element.get('marshal_call_after') def marshal_flavor(self): """Find out how this function should be marshalled between client and server threads.""" # If a "marshal" attribute was present, that overrides any # determination that would otherwise be made by this function. - if self.marshal not in (None, 'draw'): + if self.marshal is not None: return self.marshal if self.exec_flavor == 'skip': @@ -77,9 +78,9 @@ class marshal_function(gl_XML.gl_function): for p in self.parameters: if p.is_output: return 'sync' - if p.is_pointer() and not (p.count or p.counter) and not (self.marshal == 'draw' and p.name == 'indices'): + if (p.is_pointer() and not (p.count or p.counter or p.marshal_count)): return 'sync' - if p.count_parameter_list: + if p.count_parameter_list and not p.marshal_count: # Parameter size is determined by enums; haven't # written logic to handle this yet. TODO: fix. return 'sync' diff --git a/lib/mesa/src/mapi/glapi/gen/static_data.py b/lib/mesa/src/mapi/glapi/gen/static_data.py index d2a9c66b4..6accff1b2 100644 --- a/lib/mesa/src/mapi/glapi/gen/static_data.py +++ b/lib/mesa/src/mapi/glapi/gen/static_data.py @@ -1640,6 +1640,55 @@ offsets = { "GetNamedStringivARB": 1604, "EGLImageTargetTexStorageEXT" : 1605, "EGLImageTargetTextureStorageEXT" : 1606, + "CopyImageSubDataNV": 1607, + "ViewportSwizzleNV": 1608, + "AlphaToCoverageDitherControlNV": 1609, + "InternalBufferSubDataCopyMESA": 1610, + "Vertex2hNV": 1611, + "Vertex2hvNV": 1612, + "Vertex3hNV": 1613, + "Vertex3hvNV": 1614, + "Vertex4hNV": 1615, + "Vertex4hvNV": 1616, + "Normal3hNV": 1617, + "Normal3hvNV": 1618, + "Color3hNV": 1619, + "Color3hvNV": 1620, + "Color4hNV": 1621, + "Color4hvNV": 1622, + "TexCoord1hNV": 1623, + "TexCoord1hvNV": 1624, + "TexCoord2hNV": 1625, + "TexCoord2hvNV": 1626, + "TexCoord3hNV": 1627, + "TexCoord3hvNV": 1628, + "TexCoord4hNV": 1629, + "TexCoord4hvNV": 1630, + "MultiTexCoord1hNV": 1631, + "MultiTexCoord1hvNV": 1632, + "MultiTexCoord2hNV": 1633, + "MultiTexCoord2hvNV": 1634, + "MultiTexCoord3hNV": 1635, + "MultiTexCoord3hvNV": 1636, + "MultiTexCoord4hNV": 1637, + "MultiTexCoord4hvNV": 1638, + "FogCoordhNV": 1639, + "FogCoordhvNV": 1640, + "SecondaryColor3hNV": 1641, + "SecondaryColor3hvNV": 1642, + "InternalSetError": 1643, + "VertexAttrib1hNV": 1644, + "VertexAttrib1hvNV": 1645, + "VertexAttrib2hNV": 1646, + "VertexAttrib2hvNV": 1647, + "VertexAttrib3hNV": 1648, + "VertexAttrib3hvNV": 1649, + "VertexAttrib4hNV": 1650, + "VertexAttrib4hvNV": 1651, + "VertexAttribs1hvNV": 1652, + "VertexAttribs2hvNV": 1653, + "VertexAttribs3hvNV": 1654, + "VertexAttribs4hvNV": 1655, } functions = [ |