Module: Mesa
Branch: main
Commit: 162c890614f579f47cce347da99757baeae80d8f
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=162c890614f579f47cce347da99757baeae80d8f

Author: Marek Olšák <[email protected]>
Date:   Mon Nov 27 22:12:29 2023 -0500

glthread: use autogenerated marshal structures for custom functions

Reviewed-by: Timothy Arceri <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26548>

---

 src/mapi/glapi/gen/ARB_base_instance.xml           |   6 +-
 .../glapi/gen/ARB_draw_elements_base_vertex.xml    |   3 +-
 src/mapi/glapi/gen/ARB_draw_indirect.xml           |  12 ++-
 src/mapi/glapi/gen/ARB_draw_instanced.xml          |   3 +-
 src/mapi/glapi/gen/ARB_indirect_parameters.xml     |   6 +-
 src/mapi/glapi/gen/gl_API.xml                      |   5 +-
 src/mesa/main/glthread_draw.c                      | 110 ---------------------
 src/mesa/main/glthread_draw_unroll.c               |   2 +-
 src/mesa/main/glthread_marshal.h                   |   4 +-
 9 files changed, 27 insertions(+), 124 deletions(-)

diff --git a/src/mapi/glapi/gen/ARB_base_instance.xml 
b/src/mapi/glapi/gen/ARB_base_instance.xml
index b57be7ad78b..5dbf895a4dd 100644
--- a/src/mapi/glapi/gen/ARB_base_instance.xml
+++ b/src/mapi/glapi/gen/ARB_base_instance.xml
@@ -8,7 +8,8 @@
 
 <category name="GL_ARB_base_instance" number="107">
 
-  <function name="DrawArraysInstancedBaseInstance" marshal="custom" 
exec="dlist">
+  <function name="DrawArraysInstancedBaseInstance" marshal="custom" 
exec="dlist"
+            marshal_struct="public">
     <param name="mode" type="GLenum"/>
     <param name="first" type="GLint"/>
     <param name="count" type="GLsizei"/>
@@ -25,7 +26,8 @@
     <param name="baseinstance" type="GLuint"/>
   </function>
 
-  <function name="DrawElementsInstancedBaseVertexBaseInstance" 
marshal="custom" exec="dlist">
+  <function name="DrawElementsInstancedBaseVertexBaseInstance" 
marshal="custom" exec="dlist"
+            marshal_struct="public">
     <param name="mode" type="GLenum"/>
     <param name="count" type="GLsizei"/>
     <param name="type" type="GLenum"/>
diff --git a/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml 
b/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml
index 2666d56a7aa..736eda82e4a 100644
--- a/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml
+++ b/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml
@@ -8,7 +8,8 @@
 
 <category name="GL_ARB_draw_elements_base_vertex" number="62">
 
-    <function name="DrawElementsBaseVertex" es2="3.2" marshal="custom" 
exec="dlist">
+    <function name="DrawElementsBaseVertex" es2="3.2" marshal="custom" 
exec="dlist"
+              marshal_struct="public">
         <param name="mode" type="GLenum"/>
         <param name="count" type="GLsizei"/>
         <param name="type" type="GLenum"/>
diff --git a/src/mapi/glapi/gen/ARB_draw_indirect.xml 
b/src/mapi/glapi/gen/ARB_draw_indirect.xml
index 398720e0b19..11802b5a072 100644
--- a/src/mapi/glapi/gen/ARB_draw_indirect.xml
+++ b/src/mapi/glapi/gen/ARB_draw_indirect.xml
@@ -8,12 +8,14 @@
     <enum name="DRAW_INDIRECT_BUFFER"                   value="0x8F3F"/>
     <enum name="DRAW_INDIRECT_BUFFER_BINDING"           value="0x8F43"/>
 
-    <function name="DrawArraysIndirect" es2="3.1" exec="dlist" 
marshal="custom">
+    <function name="DrawArraysIndirect" es2="3.1" exec="dlist" marshal="custom"
+              marshal_struct="public">
         <param name="mode" type="GLenum"/>
         <param name="indirect" type="const GLvoid *"/>
     </function>
 
-    <function name="DrawElementsIndirect" es2="3.1" exec="dlist" 
marshal="custom">
+    <function name="DrawElementsIndirect" es2="3.1" exec="dlist" 
marshal="custom"
+              marshal_struct="public">
         <param name="mode" type="GLenum"/>
         <param name="type" type="GLenum"/>
         <param name="indirect" type="const GLvoid *"/>
@@ -24,14 +26,16 @@
 
 <category name="GL_ARB_multi_draw_indirect" number="133">
 
-    <function name="MultiDrawArraysIndirect" marshal="custom" exec="dlist">
+    <function name="MultiDrawArraysIndirect" marshal="custom" exec="dlist"
+              marshal_struct="public">
         <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="custom" exec="dlist">
+    <function name="MultiDrawElementsIndirect" marshal="custom" exec="dlist"
+              marshal_struct="public">
         <param name="mode" type="GLenum"/>
         <param name="type" type="GLenum"/>
         <param name="indirect" type="const GLvoid *"/>
diff --git a/src/mapi/glapi/gen/ARB_draw_instanced.xml 
b/src/mapi/glapi/gen/ARB_draw_instanced.xml
index 9427a086ef1..9ff2a56cc0a 100644
--- a/src/mapi/glapi/gen/ARB_draw_instanced.xml
+++ b/src/mapi/glapi/gen/ARB_draw_instanced.xml
@@ -15,7 +15,8 @@
     <param name="primcount" type="GLsizei"/>
   </function>
 
-  <function name="DrawElementsInstanced" marshal="custom" exec="dlist" 
es2="2.0">
+  <function name="DrawElementsInstanced" marshal="custom" exec="dlist" 
es2="2.0"
+            marshal_struct="public">
     <param name="mode" type="GLenum"/>
     <param name="count" type="GLsizei"/>
     <param name="type" type="GLenum"/>
diff --git a/src/mapi/glapi/gen/ARB_indirect_parameters.xml 
b/src/mapi/glapi/gen/ARB_indirect_parameters.xml
index 89250abab1d..f5807d3a9eb 100644
--- a/src/mapi/glapi/gen/ARB_indirect_parameters.xml
+++ b/src/mapi/glapi/gen/ARB_indirect_parameters.xml
@@ -8,7 +8,8 @@
     <enum name="PARAMETER_BUFFER_ARB"                   value="0x80EE"/>
     <enum name="PARAMETER_BUFFER_BINDING_ARB"           value="0x80EF"/>
 
-    <function name="MultiDrawArraysIndirectCountARB" marshal="custom">
+    <function name="MultiDrawArraysIndirectCountARB" marshal="custom"
+              marshal_struct="public">
         <param name="mode" type="GLenum"/>
         <param name="indirect" type="GLintptr"/>
         <param name="drawcount" type="GLintptr"/>
@@ -17,7 +18,8 @@
     </function>
 
     <!-- Use "...has_non_vbo_vertices", because indices always come from a 
buffer object. -->
-    <function name="MultiDrawElementsIndirectCountARB" marshal="custom">
+    <function name="MultiDrawElementsIndirectCountARB" marshal="custom"
+              marshal_struct="public">
         <param name="mode" type="GLenum"/>
         <param name="type" type="GLenum"/>
         <param name="indirect" type="GLintptr"/>
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index 99c8232d358..5e99f4cd73a 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -2959,7 +2959,7 @@
     </function>
 
     <function name="PushMatrix" es1="1.0" deprecated="3.1" exec="dlist"
-              marshal="custom">
+              marshal="custom" marshal_struct="public">
         <glx rop="184"/>
     </function>
 
@@ -3210,7 +3210,8 @@
         <glx handcode="true"/>
     </function>
 
-    <function name="DrawArrays" es1="1.0" es2="2.0" marshal="custom" 
exec="dlist">
+    <function name="DrawArrays" es1="1.0" es2="2.0" marshal="custom" 
exec="dlist"
+              marshal_struct="public">
         <param name="mode" type="GLenum"/>
         <param name="first" type="GLint"/>
         <param name="count" type="GLsizei"/>
diff --git a/src/mesa/main/glthread_draw.c b/src/mesa/main/glthread_draw.c
index 48e9fa59f93..746aa6860d9 100644
--- a/src/mesa/main/glthread_draw.c
+++ b/src/mesa/main/glthread_draw.c
@@ -282,14 +282,6 @@ upload_vertices(struct gl_context *ctx, unsigned 
user_buffer_mask,
 }
 
 /* DrawArrays without user buffers. */
-struct marshal_cmd_DrawArrays
-{
-   struct marshal_cmd_base cmd_base;
-   GLenum mode;
-   GLint first;
-   GLsizei count;
-};
-
 uint32_t
 _mesa_unmarshal_DrawArrays(struct gl_context *ctx,
                            const struct marshal_cmd_DrawArrays *restrict cmd)
@@ -305,16 +297,6 @@ _mesa_unmarshal_DrawArrays(struct gl_context *ctx,
 }
 
 /* DrawArraysInstancedBaseInstance without user buffers. */
-struct marshal_cmd_DrawArraysInstancedBaseInstance
-{
-   struct marshal_cmd_base cmd_base;
-   GLenum mode;
-   GLint first;
-   GLsizei count;
-   GLsizei instance_count;
-   GLuint baseinstance;
-};
-
 uint32_t
 _mesa_unmarshal_DrawArraysInstancedBaseInstance(struct gl_context *ctx,
                                                 const struct 
marshal_cmd_DrawArraysInstancedBaseInstance *restrict cmd)
@@ -631,16 +613,6 @@ _mesa_marshal_MultiDrawArrays(GLenum mode, const GLint 
*first,
 }
 
 /* DrawElementsInstanced without user buffers. */
-struct marshal_cmd_DrawElementsInstanced
-{
-   struct marshal_cmd_base cmd_base;
-   GLenum16 mode;
-   GLenum16 type;
-   GLsizei count;
-   GLsizei instance_count;
-   const GLvoid *indices;
-};
-
 uint32_t
 _mesa_unmarshal_DrawElementsInstanced(struct gl_context *ctx,
                                       const struct 
marshal_cmd_DrawElementsInstanced *restrict cmd)
@@ -659,16 +631,6 @@ _mesa_unmarshal_DrawElementsInstanced(struct gl_context 
*ctx,
 }
 
 /* DrawElementsBaseVertex without user buffers. */
-struct marshal_cmd_DrawElementsBaseVertex
-{
-   struct marshal_cmd_base cmd_base;
-   GLenum16 mode;
-   GLenum16 type;
-   GLsizei count;
-   GLint basevertex;
-   const GLvoid *indices;
-};
-
 uint32_t
 _mesa_unmarshal_DrawElementsBaseVertex(struct gl_context *ctx,
                                        const struct 
marshal_cmd_DrawElementsBaseVertex *restrict cmd)
@@ -687,18 +649,6 @@ _mesa_unmarshal_DrawElementsBaseVertex(struct gl_context 
*ctx,
 }
 
 /* DrawElementsInstancedBaseVertexBaseInstance without user buffers. */
-struct marshal_cmd_DrawElementsInstancedBaseVertexBaseInstance
-{
-   struct marshal_cmd_base cmd_base;
-   GLenum16 mode;
-   GLenum16 type;
-   GLsizei count;
-   GLsizei instance_count;
-   GLint basevertex;
-   GLuint baseinstance;
-   const GLvoid *indices;
-};
-
 uint32_t
 _mesa_unmarshal_DrawElementsInstancedBaseVertexBaseInstance(struct gl_context 
*ctx,
                                                             const struct 
marshal_cmd_DrawElementsInstancedBaseVertexBaseInstance *restrict cmd)
@@ -1383,13 +1333,6 @@ draw_indirect_async_allowed(struct gl_context *ctx, 
unsigned user_buffer_mask)
           (ctx->GLThread.CurrentDrawIndirectBufferName && !user_buffer_mask);
 }
 
-struct marshal_cmd_DrawArraysIndirect
-{
-   struct marshal_cmd_base cmd_base;
-   GLenum16 mode;
-   const GLvoid * indirect;
-};
-
 uint32_t
 _mesa_unmarshal_DrawArraysIndirect(struct gl_context *ctx,
                                    const struct marshal_cmd_DrawArraysIndirect 
*cmd)
@@ -1427,14 +1370,6 @@ _mesa_marshal_DrawArraysIndirect(GLenum mode, const 
GLvoid *indirect)
    lower_draw_arrays_indirect(ctx, mode, (GLintptr)indirect, 0, 1);
 }
 
-struct marshal_cmd_DrawElementsIndirect
-{
-   struct marshal_cmd_base cmd_base;
-   GLenum16 mode;
-   GLenum16 type;
-   const GLvoid * indirect;
-};
-
 uint32_t
 _mesa_unmarshal_DrawElementsIndirect(struct gl_context *ctx,
                                      const struct 
marshal_cmd_DrawElementsIndirect *cmd)
@@ -1475,15 +1410,6 @@ _mesa_marshal_DrawElementsIndirect(GLenum mode, GLenum 
type, const GLvoid *indir
    lower_draw_elements_indirect(ctx, mode, type, (GLintptr)indirect, 0, 1);
 }
 
-struct marshal_cmd_MultiDrawArraysIndirect
-{
-   struct marshal_cmd_base cmd_base;
-   GLenum16 mode;
-   GLsizei primcount;
-   GLsizei stride;
-   const GLvoid * indirect;
-};
-
 uint32_t
 _mesa_unmarshal_MultiDrawArraysIndirect(struct gl_context *ctx,
                                         const struct 
marshal_cmd_MultiDrawArraysIndirect *cmd)
@@ -1530,16 +1456,6 @@ _mesa_marshal_MultiDrawArraysIndirect(GLenum mode, const 
GLvoid *indirect,
    lower_draw_arrays_indirect(ctx, mode, (GLintptr)indirect, stride, 
primcount);
 }
 
-struct marshal_cmd_MultiDrawElementsIndirect
-{
-   struct marshal_cmd_base cmd_base;
-   GLenum16 mode;
-   GLenum16 type;
-   GLsizei primcount;
-   GLsizei stride;
-   const GLvoid * indirect;
-};
-
 uint32_t
 _mesa_unmarshal_MultiDrawElementsIndirect(struct gl_context *ctx,
                                           const struct 
marshal_cmd_MultiDrawElementsIndirect *cmd)
@@ -1591,16 +1507,6 @@ _mesa_marshal_MultiDrawElementsIndirect(GLenum mode, 
GLenum type,
                                 primcount);
 }
 
-struct marshal_cmd_MultiDrawArraysIndirectCountARB
-{
-   struct marshal_cmd_base cmd_base;
-   GLenum16 mode;
-   GLsizei maxdrawcount;
-   GLsizei stride;
-   GLintptr indirect;
-   GLintptr drawcount;
-};
-
 uint32_t
 _mesa_unmarshal_MultiDrawArraysIndirectCountARB(struct gl_context *ctx,
                                                 const struct 
marshal_cmd_MultiDrawArraysIndirectCountARB *cmd)
@@ -1656,17 +1562,6 @@ _mesa_marshal_MultiDrawArraysIndirectCountARB(GLenum 
mode, GLintptr indirect,
                               read_draw_indirect_count(ctx, drawcount));
 }
 
-struct marshal_cmd_MultiDrawElementsIndirectCountARB
-{
-   struct marshal_cmd_base cmd_base;
-   GLenum16 mode;
-   GLenum16 type;
-   GLsizei maxdrawcount;
-   GLsizei stride;
-   GLintptr indirect;
-   GLintptr drawcount;
-};
-
 uint32_t
 _mesa_unmarshal_MultiDrawElementsIndirectCountARB(struct gl_context *ctx,
                                                   const struct 
marshal_cmd_MultiDrawElementsIndirectCountARB *cmd)
@@ -1968,11 +1863,6 @@ 
_mesa_DrawElementsInstancedBaseVertexBaseInstanceDrawID(void)
    unreachable("should never end up here");
 }
 
-struct marshal_cmd_PushMatrix
-{
-   struct marshal_cmd_base cmd_base;
-};
-
 uint32_t
 _mesa_unmarshal_PushMatrix(struct gl_context *ctx,
                            const struct marshal_cmd_PushMatrix *restrict cmd)
diff --git a/src/mesa/main/glthread_draw_unroll.c 
b/src/mesa/main/glthread_draw_unroll.c
index f57505fa266..5611843d92a 100644
--- a/src/mesa/main/glthread_draw_unroll.c
+++ b/src/mesa/main/glthread_draw_unroll.c
@@ -33,7 +33,7 @@
  */
 
 #include "context.h"
-#include "marshal_generated.h"
+#include "glthread_marshal.h"
 #include "vbo/vbo_util.h"
 #include "util/half_float.h"
 
diff --git a/src/mesa/main/glthread_marshal.h b/src/mesa/main/glthread_marshal.h
index ec3e9c2544b..512800020f6 100644
--- a/src/mesa/main/glthread_marshal.h
+++ b/src/mesa/main/glthread_marshal.h
@@ -34,7 +34,6 @@
 #include "main/context.h"
 #include "main/macros.h"
 #include "main/matrix.h"
-#include "marshal_generated.h"
 
 struct marshal_cmd_base
 {
@@ -49,6 +48,9 @@ struct marshal_cmd_base
    uint16_t cmd_size;
 };
 
+/* This must be included after "struct marshal_cmd_base" because it uses it. */
+#include "marshal_generated.h"
+
 typedef uint32_t (*_mesa_unmarshal_func)(struct gl_context *ctx,
                                          const void *restrict cmd);
 extern const _mesa_unmarshal_func _mesa_unmarshal_dispatch[NUM_DISPATCH_CMD];

Reply via email to