Zebediah Figura : vkd3d-shader: Allocate the $Params buffer in hlsl_ctx_init().

Alexandre Julliard julliard at winehq.org
Mon Jul 26 15:28:33 CDT 2021


Module: vkd3d
Branch: master
Commit: 1ed82b9fc4d2e360600ae3db3b282de686d35e9c
URL:    https://source.winehq.org/git/vkd3d.git/?a=commit;h=1ed82b9fc4d2e360600ae3db3b282de686d35e9c

Author: Zebediah Figura <zfigura at codeweavers.com>
Date:   Thu Jul  8 21:13:18 2021 -0500

vkd3d-shader: Allocate the $Params buffer in hlsl_ctx_init().

For clarity.

Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 libs/vkd3d-shader/hlsl.c         |  3 +++
 libs/vkd3d-shader/hlsl.h         |  2 +-
 libs/vkd3d-shader/hlsl_codegen.c | 15 ++-------------
 3 files changed, 6 insertions(+), 14 deletions(-)

diff --git a/libs/vkd3d-shader/hlsl.c b/libs/vkd3d-shader/hlsl.c
index 0b8c660..bc593f8 100644
--- a/libs/vkd3d-shader/hlsl.c
+++ b/libs/vkd3d-shader/hlsl.c
@@ -1664,6 +1664,9 @@ static bool hlsl_ctx_init(struct hlsl_ctx *ctx, const struct hlsl_profile_info *
     if (!(ctx->globals_buffer = hlsl_new_buffer(ctx, HLSL_BUFFER_CONSTANT,
             hlsl_strdup(ctx, "$Globals"), NULL, ctx->location)))
         return false;
+    if (!(ctx->params_buffer = hlsl_new_buffer(ctx, HLSL_BUFFER_CONSTANT,
+            hlsl_strdup(ctx, "$Params"), NULL, ctx->location)))
+        return false;
     ctx->cur_buffer = ctx->globals_buffer;
 
     return true;
diff --git a/libs/vkd3d-shader/hlsl.h b/libs/vkd3d-shader/hlsl.h
index b62e781..e0045ac 100644
--- a/libs/vkd3d-shader/hlsl.h
+++ b/libs/vkd3d-shader/hlsl.h
@@ -456,7 +456,7 @@ struct hlsl_ctx
     struct list extern_vars;
 
     struct list buffers;
-    struct hlsl_buffer *cur_buffer, *globals_buffer;
+    struct hlsl_buffer *cur_buffer, *globals_buffer, *params_buffer;
     struct list types;
     struct rb_tree functions;
     const struct hlsl_ir_function_decl *cur_function;
diff --git a/libs/vkd3d-shader/hlsl_codegen.c b/libs/vkd3d-shader/hlsl_codegen.c
index 6336ddf..778d9df 100644
--- a/libs/vkd3d-shader/hlsl_codegen.c
+++ b/libs/vkd3d-shader/hlsl_codegen.c
@@ -1142,27 +1142,16 @@ static void calculate_buffer_offset(struct hlsl_ir_var *var)
 
 static void allocate_buffers(struct hlsl_ctx *ctx)
 {
-    struct hlsl_buffer *buffer, *params_buffer;
+    struct hlsl_buffer *buffer;
     struct hlsl_ir_var *var;
     uint32_t index = 0;
 
-    if (!(params_buffer = hlsl_new_buffer(ctx, HLSL_BUFFER_CONSTANT,
-            hlsl_strdup(ctx, "$Params"), NULL, ctx->location)))
-        return;
-
-    /* The $Globals and $Params buffers should be allocated first, before all
-     * explicit buffers. */
-    list_remove(&params_buffer->entry);
-    list_add_head(&ctx->buffers, &params_buffer->entry);
-    list_remove(&ctx->globals_buffer->entry);
-    list_add_head(&ctx->buffers, &ctx->globals_buffer->entry);
-
     LIST_FOR_EACH_ENTRY(var, &ctx->extern_vars, struct hlsl_ir_var, extern_entry)
     {
         if (var->is_uniform)
         {
             if (var->is_param)
-                var->buffer = params_buffer;
+                var->buffer = ctx->params_buffer;
 
             calculate_buffer_offset(var);
         }




More information about the wine-cvs mailing list