glthread: use uint64_t to declare the batch buffer instead of align(8)
authorMarek Olšák <marek.olsak@amd.com>
Sat, 10 Oct 2020 02:37:28 +0000 (22:37 -0400)
committerMarge Bot <eric+marge@anholt.net>
Tue, 8 Dec 2020 17:47:56 +0000 (17:47 +0000)
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7719>

src/mesa/main/glthread.c
src/mesa/main/glthread.h
src/mesa/main/glthread_marshal.h

index 68bf942..c1cd08d 100644 (file)
@@ -48,7 +48,7 @@ glthread_unmarshal_batch(void *job, int thread_index)
    struct gl_context *ctx = batch->ctx;
    int pos = 0;
    int used = batch->used;
-   uint8_t *buffer = batch->buffer;
+   uint64_t *buffer = batch->buffer;
 
    _glapi_set_dispatch(ctx->CurrentServerDispatch);
 
@@ -59,7 +59,7 @@ glthread_unmarshal_batch(void *job, int thread_index)
 
    while (pos < used) {
       const struct marshal_cmd_base *cmd =
-         (const struct marshal_cmd_base *)&buffer[pos];
+         (const struct marshal_cmd_base *)&buffer[pos / 8];
 
       _mesa_unmarshal_dispatch[cmd->cmd_id](ctx, cmd);
       pos += cmd->cmd_size;
index 73d1b22..1a95215 100644 (file)
@@ -109,12 +109,7 @@ struct glthread_batch
    int used;
 
    /** Data contained in the command buffer. */
-#ifdef _MSC_VER
-   __declspec(align(8))
-#else
-   __attribute__((aligned(8)))
-#endif
-   uint8_t buffer[MARSHAL_MAX_CMD_SIZE];
+   uint64_t buffer[MARSHAL_MAX_CMD_SIZE / 8];
 };
 
 struct glthread_client_attrib {
index 1ffb4df..d24b85e 100644 (file)
@@ -64,7 +64,7 @@ _mesa_glthread_allocate_command(struct gl_context *ctx,
    struct glthread_batch *next = glthread->next_batch;
    const int aligned_size = align(size, 8);
    struct marshal_cmd_base *cmd_base =
-      (struct marshal_cmd_base *)&next->buffer[glthread->used];
+      (struct marshal_cmd_base *)&next->buffer[glthread->used / 8];
    glthread->used += aligned_size;
    cmd_base->cmd_id = cmd_id;
    cmd_base->cmd_size = aligned_size;