From: Conor McCarthy cmccarthy@codeweavers.com
--- libs/vkd3d-shader/dxil.c | 4 ++++ tests/hlsl/uav-rwbyteaddressbuffer.shader_test | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/libs/vkd3d-shader/dxil.c b/libs/vkd3d-shader/dxil.c index ac688e85e..e5d920579 100644 --- a/libs/vkd3d-shader/dxil.c +++ b/libs/vkd3d-shader/dxil.c @@ -4452,6 +4452,10 @@ static void sm6_parser_emit_dx_split_double(struct sm6_parser *sm6, enum dx_intr if (!(src_param = instruction_src_params_alloc(ins, 1, sm6))) return; src_param_init_from_value(src_param, operands[0]); + /* For an immconst register load there is no way to determine if the write mask is 32- + * or 64-bit, so make this distinction with VKD3DSPR_IMMCONST and a 64-bit data type. */ + if (src_param->reg.type == VKD3DSPR_IMMCONST64) + src_param->reg.type = VKD3DSPR_IMMCONST;
instruction_dst_param_init_ssa_vector(ins, 2, sm6); } diff --git a/tests/hlsl/uav-rwbyteaddressbuffer.shader_test b/tests/hlsl/uav-rwbyteaddressbuffer.shader_test index 056f94f6e..556d0fb31 100644 --- a/tests/hlsl/uav-rwbyteaddressbuffer.shader_test +++ b/tests/hlsl/uav-rwbyteaddressbuffer.shader_test @@ -34,7 +34,7 @@ float4 main() : sv_target }
[test] -todo draw quad +todo(sm<6) draw quad if(sm<6) probe uav 1 (0) ri (12) if(sm>=6) probe uav 1 (0) rd (12.2)
@@ -54,6 +54,6 @@ float4 main() : sv_target }
[test] -todo draw quad +draw quad probe uav 1 (0) ri64 (-12) probe uav 1 (1) rd (13.3)