mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
vkd3d-shader/spirv: Handle signature element mask left shift in calculate_clip_or_cull_distance_mask().
In DXIL these masks can have a left shift.
This commit is contained in:
parent
4a3ad750e0
commit
ebc461f795
Notes:
Alexandre Julliard
2023-08-30 23:19:25 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/283
@ -4792,13 +4792,16 @@ static bool is_dual_source_blending(const struct spirv_compiler *compiler)
|
||||
|
||||
static void calculate_clip_or_cull_distance_mask(const struct signature_element *e, uint32_t *mask)
|
||||
{
|
||||
unsigned int write_mask;
|
||||
|
||||
if (e->semantic_index >= sizeof(*mask) * CHAR_BIT / VKD3D_VEC4_SIZE)
|
||||
{
|
||||
FIXME("Invalid semantic index %u for clip/cull distance.\n", e->semantic_index);
|
||||
return;
|
||||
}
|
||||
|
||||
*mask |= (e->mask & VKD3DSP_WRITEMASK_ALL) << (VKD3D_VEC4_SIZE * e->semantic_index);
|
||||
write_mask = e->mask >> vkd3d_write_mask_get_component_idx(e->mask);
|
||||
*mask |= (write_mask & VKD3DSP_WRITEMASK_ALL) << (VKD3D_VEC4_SIZE * e->semantic_index);
|
||||
}
|
||||
|
||||
/* Emits arrayed SPIR-V built-in variables. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user