aboutsummaryrefslogtreecommitdiffstats
path: root/src/mapi
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2020-05-30 17:42:46 -0400
committerMarge Bot <[email protected]>2020-06-23 06:41:37 +0000
commita2d7f4fe5a52d2968f8d0fbbf879368a6e7044aa (patch)
treea4a72666446fd255a9577339c668315834e4d51c /src/mapi
parent66c2c9c6a957c55effc29ad4e1e7461bb8c85508 (diff)
glthread: handle ARB_vertex_attrib_binding
This handles ARB_vertex_attrib_binding for vertex uploads correctly. Before this, the extension might have led to crashes if non-VBO vertex attribs were present. Acked-by: Pierre-Eric Pelloux-Prayer <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5303>
Diffstat (limited to 'src/mapi')
-rw-r--r--src/mapi/glapi/gen/ARB_direct_state_access.xml24
-rw-r--r--src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml36
2 files changed, 40 insertions, 20 deletions
diff --git a/src/mapi/glapi/gen/ARB_direct_state_access.xml b/src/mapi/glapi/gen/ARB_direct_state_access.xml
index cd0f51c4327..f06adc4cfc2 100644
--- a/src/mapi/glapi/gen/ARB_direct_state_access.xml
+++ b/src/mapi/glapi/gen/ARB_direct_state_access.xml
@@ -597,12 +597,14 @@
<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" />
@@ -610,7 +612,8 @@
<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" />
@@ -619,7 +622,8 @@
<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" />
@@ -628,7 +632,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" />
@@ -636,7 +641,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" />
@@ -644,13 +650,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/src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml b/src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml
index ca9dd5a75c2..056cc345430 100644
--- a/src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml
+++ b/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">
+ <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,13 +89,15 @@
<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="bindingindex" type="GLuint"/>
<param name="divisor" type="GLuint"/>