aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2020-02-24 19:26:12 -0500
committerMarge Bot <[email protected]>2020-03-06 01:06:14 +0000
commit93b2ee18a1c00f8b60a60e34cee3743dca45bd47 (patch)
tree87069e2c165a9d34303e77540627f4809d67fb3e
parent85276e2c1b8dfdf090a656a7fa1b5613d373515e (diff)
glthread: replace custom glBindBuffer marshalling with generated one
Reviewed-by: Timothy Arceri <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3948>
-rw-r--r--src/mapi/glapi/gen/gl_API.xml3
-rw-r--r--src/mesa/main/marshal.c54
-rw-r--r--src/mesa/main/marshal.h7
3 files changed, 5 insertions, 59 deletions
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index fd21297d721..19b2dea4821 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -5054,7 +5054,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="_mesa_glthread_BindBuffer(ctx, target, buffer);">
<param name="target" type="GLenum"/>
<param name="buffer" type="GLuint"/>
<glx ignore="true"/>
diff --git a/src/mesa/main/marshal.c b/src/mesa/main/marshal.c
index ce91d6a8f66..f8eabf1b53c 100644
--- a/src/mesa/main/marshal.c
+++ b/src/mesa/main/marshal.c
@@ -136,15 +136,6 @@ _mesa_marshal_ShaderSource(GLuint shader, GLsizei count,
}
-/* BindBufferBase: marshalled asynchronously */
-struct marshal_cmd_BindBufferBase
-{
- struct marshal_cmd_base cmd_base;
- GLenum target;
- GLuint index;
- GLuint buffer;
-};
-
/** Tracks the current bindings for the vertex array and index array buffers.
*
* This is part of what we need to enable glthread on compat-GL contexts that
@@ -168,8 +159,8 @@ struct marshal_cmd_BindBufferBase
* feature that if you pass a bad name, it just gens a buffer object for you,
* so we escape without having to know if things are valid or not.
*/
-static void
-track_vbo_binding(struct gl_context *ctx, GLenum target, GLuint buffer)
+void
+_mesa_glthread_BindBuffer(struct gl_context *ctx, GLenum target, GLuint buffer)
{
struct glthread_state *glthread = ctx->GLThread;
@@ -191,47 +182,6 @@ track_vbo_binding(struct gl_context *ctx, GLenum target, GLuint buffer)
}
-struct marshal_cmd_BindBuffer
-{
- struct marshal_cmd_base cmd_base;
- GLenum target;
- GLuint buffer;
-};
-
-/**
- * This is just like the code-generated glBindBuffer() support, except that we
- * call track_vbo_binding().
- */
-void
-_mesa_unmarshal_BindBuffer(struct gl_context *ctx,
- const struct marshal_cmd_BindBuffer *cmd)
-{
- const GLenum target = cmd->target;
- const GLuint buffer = cmd->buffer;
- CALL_BindBuffer(ctx->CurrentServerDispatch, (target, buffer));
-}
-void GLAPIENTRY
-_mesa_marshal_BindBuffer(GLenum target, GLuint buffer)
-{
- GET_CURRENT_CONTEXT(ctx);
- size_t cmd_size = sizeof(struct marshal_cmd_BindBuffer);
- struct marshal_cmd_BindBuffer *cmd;
- debug_print_marshal("BindBuffer");
-
- track_vbo_binding(ctx, target, buffer);
-
- if (cmd_size <= MARSHAL_MAX_CMD_SIZE) {
- cmd = _mesa_glthread_allocate_command(ctx, DISPATCH_CMD_BindBuffer,
- cmd_size);
- cmd->target = target;
- cmd->buffer = buffer;
- _mesa_post_marshal_hook(ctx);
- } else {
- _mesa_glthread_finish(ctx);
- CALL_BindBuffer(ctx->CurrentServerDispatch, (target, buffer));
- }
-}
-
/* BufferData: marshalled asynchronously */
struct marshal_cmd_BufferData
{
diff --git a/src/mesa/main/marshal.h b/src/mesa/main/marshal.h
index c53c060f593..b75613b9a3e 100644
--- a/src/mesa/main/marshal.h
+++ b/src/mesa/main/marshal.h
@@ -151,7 +151,6 @@ struct _glapi_table *
_mesa_create_marshal_table(const struct gl_context *ctx);
struct marshal_cmd_ShaderSource;
-struct marshal_cmd_BindBuffer;
struct marshal_cmd_BufferData;
struct marshal_cmd_BufferSubData;
struct marshal_cmd_NamedBufferData;
@@ -165,12 +164,8 @@ void
_mesa_unmarshal_ShaderSource(struct gl_context *ctx,
const struct marshal_cmd_ShaderSource *cmd);
-void GLAPIENTRY
-_mesa_marshal_BindBuffer(GLenum target, GLuint buffer);
-
void
-_mesa_unmarshal_BindBuffer(struct gl_context *ctx,
- const struct marshal_cmd_BindBuffer *cmd);
+_mesa_glthread_BindBuffer(struct gl_context *ctx, GLenum target, GLuint buffer);
void
_mesa_unmarshal_BufferData(struct gl_context *ctx,