glthread: convert (Multi)DrawIndirect into direct if user buffers are present

so that user buffers are uploaded without syncing.

Now glthread fully handles non-VBO uploads, so that we can disable user
buffer codepaths in st/mesa.

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20624>
This commit is contained in:
Marek Olšák
2022-12-26 09:53:28 -05:00
parent 72b336dbdc
commit cabc08a184
4 changed files with 426 additions and 47 deletions
+4 -10
View File
@@ -8,16 +8,12 @@
<enum name="DRAW_INDIRECT_BUFFER" value="0x8F3F"/>
<enum name="DRAW_INDIRECT_BUFFER_BINDING" value="0x8F43"/>
<function name="DrawArraysIndirect" es2="3.1" exec="dlist"
marshal="async"
marshal_sync="_mesa_glthread_has_non_vbo_vertices_or_indirect(ctx)">
<function name="DrawArraysIndirect" es2="3.1" exec="dlist" marshal="custom">
<param name="mode" type="GLenum"/>
<param name="indirect" type="const GLvoid *"/>
</function>
<function name="DrawElementsIndirect" es2="3.1" exec="dlist"
marshal="async"
marshal_sync="_mesa_glthread_has_non_vbo_vertices_or_indices_or_indirect(ctx)">
<function name="DrawElementsIndirect" es2="3.1" exec="dlist" marshal="custom">
<param name="mode" type="GLenum"/>
<param name="type" type="GLenum"/>
<param name="indirect" type="const GLvoid *"/>
@@ -28,16 +24,14 @@
<category name="GL_ARB_multi_draw_indirect" number="133">
<function name="MultiDrawArraysIndirect" marshal="async" exec="dlist"
marshal_sync="_mesa_glthread_has_non_vbo_vertices_or_indirect(ctx)">
<function name="MultiDrawArraysIndirect" marshal="custom" exec="dlist">
<param name="mode" type="GLenum"/>
<param name="indirect" type="const GLvoid *"/>
<param name="primcount" type="GLsizei"/>
<param name="stride" type="GLsizei"/>
</function>
<function name="MultiDrawElementsIndirect" marshal="async" exec="dlist"
marshal_sync="_mesa_glthread_has_non_vbo_vertices_or_indices_or_indirect(ctx)">
<function name="MultiDrawElementsIndirect" marshal="custom" exec="dlist">
<param name="mode" type="GLenum"/>
<param name="type" type="GLenum"/>
<param name="indirect" type="const GLvoid *"/>
@@ -8,8 +8,7 @@
<enum name="PARAMETER_BUFFER_ARB" value="0x80EE"/>
<enum name="PARAMETER_BUFFER_BINDING_ARB" value="0x80EF"/>
<function name="MultiDrawArraysIndirectCountARB"
marshal_sync="_mesa_glthread_has_non_vbo_vertices(ctx)">
<function name="MultiDrawArraysIndirectCountARB" marshal="custom">
<param name="mode" type="GLenum"/>
<param name="indirect" type="GLintptr"/>
<param name="drawcount" type="GLintptr"/>
@@ -18,8 +17,7 @@
</function>
<!-- Use "...has_non_vbo_vertices", because indices always come from a buffer object. -->
<function name="MultiDrawElementsIndirectCountARB"
marshal_sync="_mesa_glthread_has_non_vbo_vertices(ctx)">
<function name="MultiDrawElementsIndirectCountARB" marshal="custom">
<param name="mode" type="GLenum"/>
<param name="type" type="GLenum"/>
<param name="indirect" type="GLintptr"/>