vkd3d-shader/spirv: Handle the WAVE_ALL_TRUE instruction.

This commit is contained in:
Conor McCarthy 2024-04-18 11:36:03 +10:00 committed by Alexandre Julliard
parent 8e2b351538
commit 77ec2a5caa
Notes: Alexandre Julliard 2024-05-02 22:40:21 +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/800

View File

@ -9764,6 +9764,8 @@ static SpvOp map_wave_bool_op(enum vkd3d_shader_opcode handler_idx)
{ {
case VKD3DSIH_WAVE_ACTIVE_ALL_EQUAL: case VKD3DSIH_WAVE_ACTIVE_ALL_EQUAL:
return SpvOpGroupNonUniformAllEqual; return SpvOpGroupNonUniformAllEqual;
case VKD3DSIH_WAVE_ALL_TRUE:
return SpvOpGroupNonUniformAll;
default: default:
vkd3d_unreachable(); vkd3d_unreachable();
} }
@ -10134,6 +10136,7 @@ static int spirv_compiler_handle_instruction(struct spirv_compiler *compiler,
spirv_compiler_emit_cut_stream(compiler, instruction); spirv_compiler_emit_cut_stream(compiler, instruction);
break; break;
case VKD3DSIH_WAVE_ACTIVE_ALL_EQUAL: case VKD3DSIH_WAVE_ACTIVE_ALL_EQUAL:
case VKD3DSIH_WAVE_ALL_TRUE:
spirv_compiler_emit_wave_bool_op(compiler, instruction); spirv_compiler_emit_wave_bool_op(compiler, instruction);
break; break;
case VKD3DSIH_DCL: case VKD3DSIH_DCL: