mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
vkd3d-shader/hlsl: Pass the target block to hlsl_new_load_component().
This commit is contained in:
committed by
Henri Verbeet
parent
d053f3665d
commit
eafc97bcb3
Notes:
Henri Verbeet
2025-03-03 18:05:08 +01:00
Approved-by: Francisco Casas (@fcasas) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1394
@@ -1857,17 +1857,18 @@ struct hlsl_ir_load *hlsl_new_var_load(struct hlsl_ctx *ctx, struct hlsl_ir_var
|
||||
return hlsl_new_load_index(ctx, &var_deref, NULL, loc);
|
||||
}
|
||||
|
||||
struct hlsl_ir_node *hlsl_new_load_component(struct hlsl_ctx *ctx, struct hlsl_block *block,
|
||||
struct hlsl_ir_node *hlsl_block_add_load_component(struct hlsl_ctx *ctx, struct hlsl_block *block,
|
||||
const struct hlsl_deref *deref, unsigned int comp, const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
struct hlsl_type *type, *comp_type;
|
||||
struct hlsl_block comp_path_block;
|
||||
struct hlsl_ir_load *load;
|
||||
|
||||
hlsl_block_init(block);
|
||||
|
||||
if (!(load = hlsl_alloc(ctx, sizeof(*load))))
|
||||
return NULL;
|
||||
{
|
||||
block->value = ctx->error_instr;
|
||||
return ctx->error_instr;
|
||||
}
|
||||
|
||||
type = hlsl_deref_get_type(ctx, deref);
|
||||
comp_type = hlsl_type_get_component_type(ctx, type, comp);
|
||||
@@ -1876,7 +1877,8 @@ struct hlsl_ir_node *hlsl_new_load_component(struct hlsl_ctx *ctx, struct hlsl_b
|
||||
if (!init_deref_from_component_index(ctx, &comp_path_block, &load->src, deref, comp, loc))
|
||||
{
|
||||
vkd3d_free(load);
|
||||
return NULL;
|
||||
block->value = ctx->error_instr;
|
||||
return ctx->error_instr;
|
||||
}
|
||||
hlsl_block_add_block(block, &comp_path_block);
|
||||
|
||||
|
@@ -1516,6 +1516,8 @@ struct hlsl_ir_node *hlsl_block_add_float_constant(struct hlsl_ctx *ctx, struct
|
||||
float f, const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_node *hlsl_block_add_int_constant(struct hlsl_ctx *ctx, struct hlsl_block *block,
|
||||
int32_t n, const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_node *hlsl_block_add_load_component(struct hlsl_ctx *ctx, struct hlsl_block *block,
|
||||
const struct hlsl_deref *deref, unsigned int comp, const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_node *hlsl_block_add_uint_constant(struct hlsl_ctx *ctx, struct hlsl_block *block,
|
||||
unsigned int n, const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_node *hlsl_block_add_unary_expr(struct hlsl_ctx *ctx, struct hlsl_block *block,
|
||||
@@ -1611,8 +1613,6 @@ struct hlsl_ir_load *hlsl_new_load_index(struct hlsl_ctx *ctx, const struct hlsl
|
||||
struct hlsl_ir_node *idx, const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_load *hlsl_new_load_parent(struct hlsl_ctx *ctx, const struct hlsl_deref *deref,
|
||||
const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_node *hlsl_new_load_component(struct hlsl_ctx *ctx, struct hlsl_block *block,
|
||||
const struct hlsl_deref *deref, unsigned int comp, const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_node *hlsl_add_load_component(struct hlsl_ctx *ctx, struct hlsl_block *block,
|
||||
struct hlsl_ir_node *var_instr, unsigned int comp, const struct vkd3d_shader_location *loc);
|
||||
|
||||
|
@@ -891,8 +891,7 @@ static bool add_return(struct hlsl_ctx *ctx, struct hlsl_block *block,
|
||||
struct hlsl_ir_node *hlsl_add_load_component(struct hlsl_ctx *ctx, struct hlsl_block *block,
|
||||
struct hlsl_ir_node *var_instr, unsigned int comp, const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
struct hlsl_ir_node *load, *store;
|
||||
struct hlsl_block load_block;
|
||||
struct hlsl_ir_node *store;
|
||||
struct hlsl_ir_var *var;
|
||||
struct hlsl_deref src;
|
||||
|
||||
@@ -904,11 +903,7 @@ struct hlsl_ir_node *hlsl_add_load_component(struct hlsl_ctx *ctx, struct hlsl_b
|
||||
hlsl_block_add_instr(block, store);
|
||||
|
||||
hlsl_init_simple_deref_from_var(&src, var);
|
||||
if (!(load = hlsl_new_load_component(ctx, &load_block, &src, comp, loc)))
|
||||
return NULL;
|
||||
hlsl_block_add_block(block, &load_block);
|
||||
|
||||
return load;
|
||||
return hlsl_block_add_load_component(ctx, block, &src, comp, loc);
|
||||
}
|
||||
|
||||
static bool add_record_access(struct hlsl_ctx *ctx, struct hlsl_block *block, struct hlsl_ir_node *record,
|
||||
|
Reference in New Issue
Block a user