vkd3d-shader/spirv: Allow swizzling parameters.

This was previously not a concern, since all of our parameter usage involved
trivial swizzles and write masks, but bump parameters will not.
This commit is contained in:
Elizabeth Figura
2025-10-16 14:26:33 -05:00
committed by Henri Verbeet
parent 86b8f2de35
commit 24d84e2ee2
Notes: Henri Verbeet 2025-10-27 19:10:04 +01:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1793

View File

@@ -4752,8 +4752,14 @@ static uint32_t spirv_compiler_emit_load_reg(struct spirv_compiler *compiler,
else if (reg->type == VKD3DSPR_UNDEF)
return spirv_compiler_emit_load_undef(compiler, reg, write_mask);
else if (reg->type == VKD3DSPR_PARAMETER)
return spirv_compiler_emit_shader_parameter(compiler, reg->idx[0].offset,
{
val_id = spirv_compiler_emit_shader_parameter(compiler, reg->idx[0].offset,
reg->data_type, reg->dimension == VSIR_DIMENSION_VEC4 ? 4 : 1);
if (reg->dimension != VSIR_DIMENSION_VEC4)
return val_id;
return spirv_compiler_emit_swizzle(compiler, val_id,
VKD3DSP_WRITEMASK_ALL, reg->data_type, swizzle, write_mask);
}
component_count = vsir_write_mask_component_count(write_mask);