diff options
author | Marek Olšák <[email protected]> | 2020-02-24 19:26:12 -0500 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-03-06 01:06:14 +0000 |
commit | 93b2ee18a1c00f8b60a60e34cee3743dca45bd47 (patch) | |
tree | 87069e2c165a9d34303e77540627f4809d67fb3e | |
parent | 85276e2c1b8dfdf090a656a7fa1b5613d373515e (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.xml | 3 | ||||
-rw-r--r-- | src/mesa/main/marshal.c | 54 | ||||
-rw-r--r-- | src/mesa/main/marshal.h | 7 |
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, |