mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
vkd3d-shader/hlsl: Allow modifiers on buffer declarations.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
This commit is contained in:
parent
9e9b3d263f
commit
75c019074a
Notes:
Alexandre Julliard
2024-03-08 23:47:00 +01:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Zebediah Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/666
@ -2020,7 +2020,7 @@ struct hlsl_ir_function_decl *hlsl_new_func_decl(struct hlsl_ctx *ctx,
|
||||
}
|
||||
|
||||
struct hlsl_buffer *hlsl_new_buffer(struct hlsl_ctx *ctx, enum hlsl_buffer_type type, const char *name,
|
||||
const struct hlsl_reg_reservation *reservation, const struct vkd3d_shader_location *loc)
|
||||
uint32_t modifiers, const struct hlsl_reg_reservation *reservation, const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
struct hlsl_buffer *buffer;
|
||||
|
||||
@ -2028,6 +2028,7 @@ struct hlsl_buffer *hlsl_new_buffer(struct hlsl_ctx *ctx, enum hlsl_buffer_type
|
||||
return NULL;
|
||||
buffer->type = type;
|
||||
buffer->name = name;
|
||||
buffer->modifiers = modifiers;
|
||||
if (reservation)
|
||||
buffer->reservation = *reservation;
|
||||
buffer->loc = *loc;
|
||||
@ -3574,10 +3575,10 @@ static bool hlsl_ctx_init(struct hlsl_ctx *ctx, const struct vkd3d_shader_compil
|
||||
list_init(&ctx->buffers);
|
||||
|
||||
if (!(ctx->globals_buffer = hlsl_new_buffer(ctx, HLSL_BUFFER_CONSTANT,
|
||||
hlsl_strdup(ctx, "$Globals"), NULL, &ctx->location)))
|
||||
hlsl_strdup(ctx, "$Globals"), 0, NULL, &ctx->location)))
|
||||
return false;
|
||||
if (!(ctx->params_buffer = hlsl_new_buffer(ctx, HLSL_BUFFER_CONSTANT,
|
||||
hlsl_strdup(ctx, "$Params"), NULL, &ctx->location)))
|
||||
hlsl_strdup(ctx, "$Params"), 0, NULL, &ctx->location)))
|
||||
return false;
|
||||
ctx->cur_buffer = ctx->globals_buffer;
|
||||
|
||||
|
@ -799,6 +799,7 @@ struct hlsl_buffer
|
||||
struct vkd3d_shader_location loc;
|
||||
enum hlsl_buffer_type type;
|
||||
const char *name;
|
||||
uint32_t modifiers;
|
||||
/* Register reserved for this buffer, if any.
|
||||
* If provided, it should be of type 'b' if type is HLSL_BUFFER_CONSTANT and 't' if type is
|
||||
* HLSL_BUFFER_TEXTURE. */
|
||||
@ -1223,7 +1224,7 @@ struct hlsl_ir_node *hlsl_new_binary_expr(struct hlsl_ctx *ctx, enum hlsl_ir_exp
|
||||
struct hlsl_ir_node *arg2);
|
||||
struct hlsl_ir_node *hlsl_new_bool_constant(struct hlsl_ctx *ctx, bool b, const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_buffer *hlsl_new_buffer(struct hlsl_ctx *ctx, enum hlsl_buffer_type type, const char *name,
|
||||
const struct hlsl_reg_reservation *reservation, const struct vkd3d_shader_location *loc);
|
||||
uint32_t modifiers, const struct hlsl_reg_reservation *reservation, const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_node *hlsl_new_call(struct hlsl_ctx *ctx, struct hlsl_ir_function_decl *decl,
|
||||
const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_node *hlsl_new_cast(struct hlsl_ctx *ctx, struct hlsl_ir_node *node, struct hlsl_type *type,
|
||||
|
@ -5668,12 +5668,12 @@ effect_group:
|
||||
}
|
||||
|
||||
buffer_declaration:
|
||||
buffer_type any_identifier colon_attribute
|
||||
var_modifiers buffer_type any_identifier colon_attribute
|
||||
{
|
||||
if ($3.semantic.name)
|
||||
hlsl_error(ctx, &@3, VKD3D_SHADER_ERROR_HLSL_INVALID_SEMANTIC, "Semantics are not allowed on buffers.");
|
||||
if ($4.semantic.name)
|
||||
hlsl_error(ctx, &@4, VKD3D_SHADER_ERROR_HLSL_INVALID_SEMANTIC, "Semantics are not allowed on buffers.");
|
||||
|
||||
if (!(ctx->cur_buffer = hlsl_new_buffer(ctx, $1, $2, &$3.reg_reservation, &@2)))
|
||||
if (!(ctx->cur_buffer = hlsl_new_buffer(ctx, $2, $3, $1, &$4.reg_reservation, &@3)))
|
||||
YYABORT;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user