mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
vkd3d-shader/hlsl: Call copy_propagation_get_value() directly in copy_propagation_transform_object_load().
copy_propagation_compute_replacement() is not doing very much for us, and conceptually is a bit of an odd fit anyway, since it's meant to deal with multi-component types.
This commit is contained in:
parent
8fd30aa87d
commit
5d34790402
Notes:
Alexandre Julliard
2023-01-24 22:27:58 +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/51
@ -805,15 +805,20 @@ static bool copy_propagation_transform_load(struct hlsl_ctx *ctx,
|
|||||||
static bool copy_propagation_transform_object_load(struct hlsl_ctx *ctx,
|
static bool copy_propagation_transform_object_load(struct hlsl_ctx *ctx,
|
||||||
struct hlsl_deref *deref, struct copy_propagation_state *state)
|
struct hlsl_deref *deref, struct copy_propagation_state *state)
|
||||||
{
|
{
|
||||||
|
struct copy_propagation_value *value;
|
||||||
struct hlsl_ir_load *load;
|
struct hlsl_ir_load *load;
|
||||||
struct hlsl_ir_node *instr;
|
unsigned int start, count;
|
||||||
unsigned int swizzle;
|
|
||||||
|
|
||||||
if (!(instr = copy_propagation_compute_replacement(ctx, state, deref, &swizzle)))
|
if (!hlsl_component_index_range_from_deref(ctx, deref, &start, &count))
|
||||||
return false;
|
return false;
|
||||||
|
assert(count == 1);
|
||||||
|
|
||||||
|
if (!(value = copy_propagation_get_value(state, deref->var, start)))
|
||||||
|
return false;
|
||||||
|
assert(value->component == 0);
|
||||||
|
|
||||||
/* Only HLSL_IR_LOAD can produce an object. */
|
/* Only HLSL_IR_LOAD can produce an object. */
|
||||||
load = hlsl_ir_load(instr);
|
load = hlsl_ir_load(value->node);
|
||||||
|
|
||||||
hlsl_cleanup_deref(deref);
|
hlsl_cleanup_deref(deref);
|
||||||
hlsl_copy_deref(ctx, deref, &load->src);
|
hlsl_copy_deref(ctx, deref, &load->src);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user