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

For clarity.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2021-07-08 21:13:18 -05:00 committed by Alexandre Julliard
parent e292351fa9
commit 1ed82b9fc4
3 changed files with 6 additions and 14 deletions

View File

@ -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, if (!(ctx->globals_buffer = hlsl_new_buffer(ctx, HLSL_BUFFER_CONSTANT,
hlsl_strdup(ctx, "$Globals"), NULL, ctx->location))) hlsl_strdup(ctx, "$Globals"), NULL, ctx->location)))
return false; 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; ctx->cur_buffer = ctx->globals_buffer;
return true; return true;

View File

@ -456,7 +456,7 @@ struct hlsl_ctx
struct list extern_vars; struct list extern_vars;
struct list buffers; struct list buffers;
struct hlsl_buffer *cur_buffer, *globals_buffer; struct hlsl_buffer *cur_buffer, *globals_buffer, *params_buffer;
struct list types; struct list types;
struct rb_tree functions; struct rb_tree functions;
const struct hlsl_ir_function_decl *cur_function; const struct hlsl_ir_function_decl *cur_function;

View File

@ -1142,27 +1142,16 @@ static void calculate_buffer_offset(struct hlsl_ir_var *var)
static void allocate_buffers(struct hlsl_ctx *ctx) static void allocate_buffers(struct hlsl_ctx *ctx)
{ {
struct hlsl_buffer *buffer, *params_buffer; struct hlsl_buffer *buffer;
struct hlsl_ir_var *var; struct hlsl_ir_var *var;
uint32_t index = 0; 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) LIST_FOR_EACH_ENTRY(var, &ctx->extern_vars, struct hlsl_ir_var, extern_entry)
{ {
if (var->is_uniform) if (var->is_uniform)
{ {
if (var->is_param) if (var->is_param)
var->buffer = params_buffer; var->buffer = ctx->params_buffer;
calculate_buffer_offset(var); calculate_buffer_offset(var);
} }