glthread: add a last parameter to unmarshal functions

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11493>
This commit is contained in:
Pierre-Eric Pelloux-Prayer
2021-06-17 21:41:33 +02:00
committed by Marge Bot
parent d53984ce97
commit 9a9860bd11
8 changed files with 44 additions and 27 deletions
+1 -1
View File
@@ -240,7 +240,7 @@ class PrintCode(gl_XML.gl_print_base):
out('void')
out(('_mesa_unmarshal_{0}(struct gl_context *ctx, '
'const struct marshal_cmd_{0} *cmd)').format(func.name))
'const struct marshal_cmd_{0} *cmd, const uint64_t *last)').format(func.name))
out('{')
with indent():
for p in fixed_params:
+1 -1
View File
@@ -72,7 +72,7 @@ class PrintCode(gl_XML.gl_print_base):
if flavor in ('custom', 'async'):
print('struct marshal_cmd_{0};'.format(func.name))
print(('void _mesa_unmarshal_{0}(struct gl_context *ctx, '
'const struct marshal_cmd_{0} *cmd);').format(func.name))
'const struct marshal_cmd_{0} *cmd, const uint64_t *last);').format(func.name))
print('{0} GLAPIENTRY _mesa_marshal_{1}({2});'.format(func.return_type, func.name, func.get_parameter_string()))
elif flavor == 'sync':
print('{0} GLAPIENTRY _mesa_marshal_{1}({2});'.format(func.return_type, func.name, func.get_parameter_string()))
+2 -1
View File
@@ -49,6 +49,7 @@ glthread_unmarshal_batch(void *job, void *gdata, int thread_index)
unsigned pos = 0;
unsigned used = batch->used;
uint64_t *buffer = batch->buffer;
const uint64_t *last = &buffer[used];
_glapi_set_dispatch(ctx->CurrentServerDispatch);
@@ -61,7 +62,7 @@ glthread_unmarshal_batch(void *job, void *gdata, int thread_index)
const struct marshal_cmd_base *cmd =
(const struct marshal_cmd_base *)&buffer[pos];
_mesa_unmarshal_dispatch[cmd->cmd_id](ctx, cmd);
_mesa_unmarshal_dispatch[cmd->cmd_id](ctx, cmd, last);
pos += cmd->cmd_size;
}
+12 -6
View File
@@ -239,7 +239,8 @@ struct marshal_cmd_BufferData
void
_mesa_unmarshal_BufferData(struct gl_context *ctx,
const struct marshal_cmd_BufferData *cmd)
const struct marshal_cmd_BufferData *cmd,
const uint64_t *last)
{
const GLuint target_or_name = cmd->target_or_name;
const GLsizei size = cmd->size;
@@ -267,14 +268,16 @@ _mesa_unmarshal_BufferData(struct gl_context *ctx,
void
_mesa_unmarshal_NamedBufferData(struct gl_context *ctx,
const struct marshal_cmd_NamedBufferData *cmd)
const struct marshal_cmd_NamedBufferData *cmd,
const uint64_t *last)
{
unreachable("never used - all BufferData variants use DISPATCH_CMD_BufferData");
}
void
_mesa_unmarshal_NamedBufferDataEXT(struct gl_context *ctx,
const struct marshal_cmd_NamedBufferDataEXT *cmd)
const struct marshal_cmd_NamedBufferDataEXT *cmd,
const uint64_t *last)
{
unreachable("never used - all BufferData variants use DISPATCH_CMD_BufferData");
}
@@ -360,7 +363,8 @@ struct marshal_cmd_BufferSubData
void
_mesa_unmarshal_BufferSubData(struct gl_context *ctx,
const struct marshal_cmd_BufferSubData *cmd)
const struct marshal_cmd_BufferSubData *cmd,
const uint64_t *last)
{
const GLenum target_or_name = cmd->target_or_name;
const GLintptr offset = cmd->offset;
@@ -381,14 +385,16 @@ _mesa_unmarshal_BufferSubData(struct gl_context *ctx,
void
_mesa_unmarshal_NamedBufferSubData(struct gl_context *ctx,
const struct marshal_cmd_NamedBufferSubData *cmd)
const struct marshal_cmd_NamedBufferSubData *cmd,
const uint64_t *last)
{
unreachable("never used - all BufferSubData variants use DISPATCH_CMD_BufferSubData");
}
void
_mesa_unmarshal_NamedBufferSubDataEXT(struct gl_context *ctx,
const struct marshal_cmd_NamedBufferSubDataEXT *cmd)
const struct marshal_cmd_NamedBufferSubDataEXT *cmd,
const uint64_t *last)
{
unreachable("never used - all BufferSubData variants use DISPATCH_CMD_BufferSubData");
}
+21 -14
View File
@@ -266,7 +266,8 @@ struct marshal_cmd_DrawArrays
void
_mesa_unmarshal_DrawArrays(struct gl_context *ctx,
const struct marshal_cmd_DrawArrays *cmd)
const struct marshal_cmd_DrawArrays *cmd,
const uint64_t *last)
{
/* Ignore the function name. We use DISPATCH_CMD_DrawArrays
* for all DrawArrays variants without user buffers, and
@@ -313,7 +314,8 @@ struct marshal_cmd_DrawArraysInstancedBaseInstance
void
_mesa_unmarshal_DrawArraysInstancedBaseInstance(struct gl_context *ctx,
const struct marshal_cmd_DrawArraysInstancedBaseInstance *cmd)
const struct marshal_cmd_DrawArraysInstancedBaseInstance *cmd,
const uint64_t *last)
{
/* Ignore the function name. We use DISPATCH_CMD_DrawArrays
* for all DrawArrays variants without user buffers, and
@@ -423,7 +425,8 @@ struct marshal_cmd_MultiDrawArrays
void
_mesa_unmarshal_MultiDrawArrays(struct gl_context *ctx,
const struct marshal_cmd_MultiDrawArrays *cmd)
const struct marshal_cmd_MultiDrawArrays *cmd,
const uint64_t *last)
{
const GLenum mode = cmd->mode;
const GLsizei draw_count = cmd->draw_count;
@@ -564,7 +567,8 @@ struct marshal_cmd_DrawElementsInstancedARB
void
_mesa_unmarshal_DrawElementsInstancedARB(struct gl_context *ctx,
const struct marshal_cmd_DrawElementsInstancedARB *cmd)
const struct marshal_cmd_DrawElementsInstancedARB *cmd,
const uint64_t *last)
{
/* Ignore the function name. We use DISPATCH_CMD_DrawElementsInstanced-
* BaseVertexBaseInstance for all DrawElements variants with user buffers,
@@ -600,7 +604,8 @@ struct marshal_cmd_DrawRangeElementsBaseVertex
void
_mesa_unmarshal_DrawRangeElementsBaseVertex(struct gl_context *ctx,
const struct marshal_cmd_DrawRangeElementsBaseVertex *cmd)
const struct marshal_cmd_DrawRangeElementsBaseVertex *cmd,
const uint64_t *last)
{
const GLenum mode = cmd->mode;
const GLsizei count = cmd->count;
@@ -667,7 +672,8 @@ struct marshal_cmd_DrawElementsInstancedBaseVertexBaseInstance
void
_mesa_unmarshal_DrawElementsInstancedBaseVertexBaseInstance(struct gl_context *ctx,
const struct marshal_cmd_DrawElementsInstancedBaseVertexBaseInstance *cmd)
const struct marshal_cmd_DrawElementsInstancedBaseVertexBaseInstance *cmd,
const uint64_t *last)
{
/* Ignore the function name. We use DISPATCH_CMD_DrawElementsInstanced-
* BaseVertexBaseInstance for all DrawElements variants with user buffers,
@@ -873,7 +879,8 @@ struct marshal_cmd_MultiDrawElementsBaseVertex
void
_mesa_unmarshal_MultiDrawElementsBaseVertex(struct gl_context *ctx,
const struct marshal_cmd_MultiDrawElementsBaseVertex *cmd)
const struct marshal_cmd_MultiDrawElementsBaseVertex *cmd,
const uint64_t *last)
{
const GLenum mode = cmd->mode;
const GLenum type = cmd->type;
@@ -1208,43 +1215,43 @@ _mesa_marshal_MultiDrawElementsEXT(GLenum mode, const GLsizei *count,
}
void
_mesa_unmarshal_DrawArraysInstancedARB(struct gl_context *ctx, const struct marshal_cmd_DrawArraysInstancedARB *cmd)
_mesa_unmarshal_DrawArraysInstancedARB(struct gl_context *ctx, const struct marshal_cmd_DrawArraysInstancedARB *cmd, const uint64_t *last)
{
unreachable("never used - DrawArraysInstancedBaseInstance is used instead");
}
void
_mesa_unmarshal_DrawElements(struct gl_context *ctx, const struct marshal_cmd_DrawElements *cmd)
_mesa_unmarshal_DrawElements(struct gl_context *ctx, const struct marshal_cmd_DrawElements *cmd, const uint64_t *last)
{
unreachable("never used - DrawElementsInstancedBaseVertexBaseInstance is used instead");
}
void
_mesa_unmarshal_DrawRangeElements(struct gl_context *ctx, const struct marshal_cmd_DrawRangeElements *cmd)
_mesa_unmarshal_DrawRangeElements(struct gl_context *ctx, const struct marshal_cmd_DrawRangeElements *cmd, const uint64_t *last)
{
unreachable("never used - DrawElementsInstancedBaseVertexBaseInstance is used instead");
}
void
_mesa_unmarshal_DrawElementsBaseVertex(struct gl_context *ctx, const struct marshal_cmd_DrawElementsBaseVertex *cmd)
_mesa_unmarshal_DrawElementsBaseVertex(struct gl_context *ctx, const struct marshal_cmd_DrawElementsBaseVertex *cmd, const uint64_t *last)
{
unreachable("never used - DrawElementsInstancedBaseVertexBaseInstance is used instead");
}
void
_mesa_unmarshal_DrawElementsInstancedBaseVertex(struct gl_context *ctx, const struct marshal_cmd_DrawElementsInstancedBaseVertex *cmd)
_mesa_unmarshal_DrawElementsInstancedBaseVertex(struct gl_context *ctx, const struct marshal_cmd_DrawElementsInstancedBaseVertex *cmd, const uint64_t *last)
{
unreachable("never used - DrawElementsInstancedBaseVertexBaseInstance is used instead");
}
void
_mesa_unmarshal_DrawElementsInstancedBaseInstance(struct gl_context *ctx, const struct marshal_cmd_DrawElementsInstancedBaseInstance *cmd)
_mesa_unmarshal_DrawElementsInstancedBaseInstance(struct gl_context *ctx, const struct marshal_cmd_DrawElementsInstancedBaseInstance *cmd, const uint64_t *last)
{
unreachable("never used - DrawElementsInstancedBaseVertexBaseInstance is used instead");
}
void
_mesa_unmarshal_MultiDrawElementsEXT(struct gl_context *ctx, const struct marshal_cmd_MultiDrawElementsEXT *cmd)
_mesa_unmarshal_MultiDrawElementsEXT(struct gl_context *ctx, const struct marshal_cmd_MultiDrawElementsEXT *cmd, const uint64_t *last)
{
unreachable("never used - MultiDrawElementsBaseVertex is used instead");
}
+2 -1
View File
@@ -26,7 +26,8 @@
void
_mesa_unmarshal_GetIntegerv(struct gl_context *ctx,
const struct marshal_cmd_GetIntegerv *cmd)
const struct marshal_cmd_GetIntegerv *cmd,
const uint64_t *last)
{
unreachable("never executed");
}
+1 -1
View File
@@ -48,7 +48,7 @@ struct marshal_cmd_base
uint16_t cmd_size;
};
typedef void (*_mesa_unmarshal_func)(struct gl_context *ctx, const void *cmd);
typedef void (*_mesa_unmarshal_func)(struct gl_context *ctx, const void *cmd, const uint64_t *last);
extern const _mesa_unmarshal_func _mesa_unmarshal_dispatch[NUM_DISPATCH_CMD];
static inline void *
+4 -2
View File
@@ -38,7 +38,8 @@ struct marshal_cmd_ShaderSource
void
_mesa_unmarshal_ShaderSource(struct gl_context *ctx,
const struct marshal_cmd_ShaderSource *cmd)
const struct marshal_cmd_ShaderSource *cmd,
const uint64_t *last)
{
const GLint *cmd_length = (const GLint *) (cmd + 1);
const GLchar *cmd_strings = (const GLchar *) (cmd_length + cmd->count);
@@ -127,7 +128,8 @@ _mesa_glthread_ProgramChanged(struct gl_context *ctx)
void
_mesa_unmarshal_GetActiveUniform(struct gl_context *ctx,
const struct marshal_cmd_GetActiveUniform *cmd)
const struct marshal_cmd_GetActiveUniform *cmd,
const uint64_t *last)
{
unreachable("never executed");
}