mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/hlsl: Add a hlsl_block_add_store_index() helper.
This commit is contained in:
committed by
Henri Verbeet
parent
eafc97bcb3
commit
fc4f440245
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
@@ -2247,7 +2247,7 @@ static bool add_assignment(struct hlsl_ctx *ctx, struct hlsl_block *block, struc
|
||||
|
||||
for (i = 0; i < mat->data_type->e.numeric.dimx; ++i)
|
||||
{
|
||||
struct hlsl_ir_node *cell, *load, *store, *c;
|
||||
struct hlsl_ir_node *cell, *load, *c;
|
||||
struct hlsl_deref deref;
|
||||
|
||||
if (!(writemask & (1 << i)))
|
||||
@@ -2265,29 +2265,18 @@ static bool add_assignment(struct hlsl_ctx *ctx, struct hlsl_block *block, struc
|
||||
if (!hlsl_init_deref_from_index_chain(ctx, &deref, cell))
|
||||
return false;
|
||||
|
||||
if (!(store = hlsl_new_store_index(ctx, &deref, NULL, load, 0, &rhs->loc)))
|
||||
{
|
||||
hlsl_cleanup_deref(&deref);
|
||||
return false;
|
||||
}
|
||||
hlsl_block_add_instr(block, store);
|
||||
hlsl_block_add_store_index(ctx, block, &deref, NULL, load, 0, &rhs->loc);
|
||||
hlsl_cleanup_deref(&deref);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
struct hlsl_ir_node *store;
|
||||
struct hlsl_deref deref;
|
||||
|
||||
if (!hlsl_init_deref_from_index_chain(ctx, &deref, lhs))
|
||||
return false;
|
||||
|
||||
if (!(store = hlsl_new_store_index(ctx, &deref, NULL, rhs, writemask, &rhs->loc)))
|
||||
{
|
||||
hlsl_cleanup_deref(&deref);
|
||||
return false;
|
||||
}
|
||||
hlsl_block_add_instr(block, store);
|
||||
hlsl_block_add_store_index(ctx, block, &deref, NULL, rhs, writemask, &rhs->loc);
|
||||
hlsl_cleanup_deref(&deref);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user