mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
vkd3d-shader/hlsl: Support indirect addressing of uniforms in sm4_generate_vsir_reg_from_deref().
This commit is contained in:
Notes:
Henri Verbeet
2025-03-12 22:20:19 +01:00
Approved-by: Francisco Casas (@fcasas) Approved-by: Elizabeth Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1388
@@ -7207,7 +7207,7 @@ static bool sm4_generate_vsir_reg_from_deref(struct hlsl_ctx *ctx, struct vsir_p
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned int offset = hlsl_offset_from_deref_safe(ctx, deref) + var->buffer_offset;
|
||||
unsigned int offset = deref->const_offset + var->buffer_offset;
|
||||
|
||||
VKD3D_ASSERT(data_type->class <= HLSL_CLASS_VECTOR);
|
||||
reg->type = VKD3DSPR_CONSTBUFFER;
|
||||
@@ -7225,6 +7225,14 @@ static bool sm4_generate_vsir_reg_from_deref(struct hlsl_ctx *ctx, struct vsir_p
|
||||
reg->idx[1].offset = offset / 4;
|
||||
reg->idx_count = 2;
|
||||
}
|
||||
|
||||
if (deref->rel_offset.node)
|
||||
{
|
||||
if (!(reg->idx[reg->idx_count - 1].rel_addr = sm4_generate_vsir_new_idx_src(ctx,
|
||||
program, deref->rel_offset.node)))
|
||||
return false;
|
||||
}
|
||||
|
||||
*writemask = ((1u << data_type->e.numeric.dimx) - 1) << (offset & 3);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user