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)
|
else if (reg->type == VKD3DSPR_UNDEF)
|
||||||
return spirv_compiler_emit_load_undef(compiler, reg, write_mask);
|
return spirv_compiler_emit_load_undef(compiler, reg, write_mask);
|
||||||
else if (reg->type == VKD3DSPR_PARAMETER)
|
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);
|
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);
|
component_count = vsir_write_mask_component_count(write_mask);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user