diff --git a/libs/vkd3d-shader/dxil.c b/libs/vkd3d-shader/dxil.c index 5db9d6da..59494d25 100644 --- a/libs/vkd3d-shader/dxil.c +++ b/libs/vkd3d-shader/dxil.c @@ -5872,6 +5872,8 @@ static void sm6_parser_emit_dx_store_output(struct sm6_parser *sm6, enum dx_intr return; } e = &signature->elements[row_index]; + if (!e->sysval_semantic) + column_index += vsir_write_mask_get_component_idx(e->mask); if (column_index >= VKD3D_VEC4_SIZE) { diff --git a/tests/hlsl/interface-packing.shader_test b/tests/hlsl/interface-packing.shader_test index ccb02b51..bc5bbaa1 100644 --- a/tests/hlsl/interface-packing.shader_test +++ b/tests/hlsl/interface-packing.shader_test @@ -15,7 +15,7 @@ float4 main(float2 color_xy : COLOR0, float2 color_zw : COLOR1) : SV_TARGET [test] draw quad -todo(sm>=6) probe(320, 240) rgba(0.25, 0.5, 0.75, 1.0) +probe(320, 240) rgba(0.25, 0.5, 0.75, 1.0) % Test handling of arrays in interface blocks