mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
vkd3d-shader/ir: Force fog and point size to 1 component when normalizing I/O.
This commit is contained in:
parent
5a513ffcec
commit
a10ee075ff
Notes:
Henri Verbeet
2024-11-05 20:06:25 +01:00
Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1247
@ -1932,6 +1932,8 @@ static bool shader_dst_param_io_normalise(struct vkd3d_shader_dst_param *dst_par
|
||||
const struct shader_signature *signature;
|
||||
const struct signature_element *e;
|
||||
|
||||
write_mask = dst_param->write_mask;
|
||||
|
||||
switch (reg->type)
|
||||
{
|
||||
case VKD3DSPR_OUTPUT:
|
||||
@ -1987,6 +1989,10 @@ static bool shader_dst_param_io_normalise(struct vkd3d_shader_dst_param *dst_par
|
||||
signature = normaliser->output_signature;
|
||||
reg->type = VKD3DSPR_OUTPUT;
|
||||
dcl_params = normaliser->output_dcl_params;
|
||||
/* Fog and point size are scalar, but fxc/d3dcompiler emits a full
|
||||
* write mask when writing to them. */
|
||||
if (reg->idx[0].offset > 0)
|
||||
write_mask = VKD3DSP_WRITEMASK_0;
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -1994,7 +2000,6 @@ static bool shader_dst_param_io_normalise(struct vkd3d_shader_dst_param *dst_par
|
||||
}
|
||||
|
||||
id_idx = reg->idx_count - 1;
|
||||
write_mask = dst_param->write_mask;
|
||||
if (!shader_signature_find_element_for_reg(signature, reg_idx, write_mask, &element_idx))
|
||||
vkd3d_unreachable();
|
||||
e = &signature->elements[element_idx];
|
||||
|
Loading…
Reference in New Issue
Block a user