vkd3d-shader/spirv: Handle the WAVE_ANY_TRUE instruction.

This commit is contained in:
Conor McCarthy 2024-04-18 11:37:25 +10:00 committed by Alexandre Julliard
parent fb5eb3159d
commit 95489899be
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
2 changed files with 4 additions and 1 deletions

View File

@ -9766,6 +9766,8 @@ static SpvOp map_wave_bool_op(enum vkd3d_shader_opcode handler_idx)
return SpvOpGroupNonUniformAllEqual;
case VKD3DSIH_WAVE_ALL_TRUE:
return SpvOpGroupNonUniformAll;
case VKD3DSIH_WAVE_ANY_TRUE:
return SpvOpGroupNonUniformAny;
default:
vkd3d_unreachable();
}
@ -10137,6 +10139,7 @@ static int spirv_compiler_handle_instruction(struct spirv_compiler *compiler,
break;
case VKD3DSIH_WAVE_ACTIVE_ALL_EQUAL:
case VKD3DSIH_WAVE_ALL_TRUE:
case VKD3DSIH_WAVE_ANY_TRUE:
spirv_compiler_emit_wave_bool_op(compiler, instruction);
break;
case VKD3DSIH_DCL:

View File

@ -58,7 +58,7 @@ void main(uint id : SV_GroupIndex)
}
[test]
todo dispatch 4 1 1
dispatch 4 1 1
probe uav 1 (0) rgbaui (1, 1, 0, 0)
probe uav 1 (1) rgbaui (1, 1, 0, 0)
probe uav 1 (2) rgbaui (1, 1, 0, 0)