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 <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5303>
This commit is contained in:
Marek Olšák
2020-05-30 17:42:46 -04:00
committed by Marge Bot
parent 66c2c9c6a9
commit a2d7f4fe5a
6 changed files with 443 additions and 46 deletions
+16 -8
View File
@@ -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" />
@@ -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"/>