mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-12-15 08:03:30 -08:00
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:
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
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user