diff options
| author | 2019-09-20 17:10:42 -0400 | |
|---|---|---|
| committer | 2019-09-20 17:10:42 -0400 | |
| commit | 88d857499b6168d7bcea9b91fa5bdd8b0144c07a (patch) | |
| tree | 1efa1eddb43c0afd3003b449675997abc9a7637f /src/video_core/renderer_vulkan | |
| parent | Merge pull request #2784 from ReinUsesLisp/smem (diff) | |
| parent | shader_ir/warp: Implement SHFL (diff) | |
| download | yuzu-88d857499b6168d7bcea9b91fa5bdd8b0144c07a.tar.gz yuzu-88d857499b6168d7bcea9b91fa5bdd8b0144c07a.tar.xz yuzu-88d857499b6168d7bcea9b91fa5bdd8b0144c07a.zip | |
Merge pull request #2855 from ReinUsesLisp/shfl
shader_ir/warp: Implement SHFL for Nvidia devices
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_shader_decompiler.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp b/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp index b9153934e..f7fbbb6e4 100644 --- a/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp +++ b/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp | |||
| @@ -1127,6 +1127,46 @@ private: | |||
| 1127 | return {}; | 1127 | return {}; |
| 1128 | } | 1128 | } |
| 1129 | 1129 | ||
| 1130 | Id ShuffleIndexed(Operation) { | ||
| 1131 | UNIMPLEMENTED(); | ||
| 1132 | return {}; | ||
| 1133 | } | ||
| 1134 | |||
| 1135 | Id ShuffleUp(Operation) { | ||
| 1136 | UNIMPLEMENTED(); | ||
| 1137 | return {}; | ||
| 1138 | } | ||
| 1139 | |||
| 1140 | Id ShuffleDown(Operation) { | ||
| 1141 | UNIMPLEMENTED(); | ||
| 1142 | return {}; | ||
| 1143 | } | ||
| 1144 | |||
| 1145 | Id ShuffleButterfly(Operation) { | ||
| 1146 | UNIMPLEMENTED(); | ||
| 1147 | return {}; | ||
| 1148 | } | ||
| 1149 | |||
| 1150 | Id InRangeShuffleIndexed(Operation) { | ||
| 1151 | UNIMPLEMENTED(); | ||
| 1152 | return {}; | ||
| 1153 | } | ||
| 1154 | |||
| 1155 | Id InRangeShuffleUp(Operation) { | ||
| 1156 | UNIMPLEMENTED(); | ||
| 1157 | return {}; | ||
| 1158 | } | ||
| 1159 | |||
| 1160 | Id InRangeShuffleDown(Operation) { | ||
| 1161 | UNIMPLEMENTED(); | ||
| 1162 | return {}; | ||
| 1163 | } | ||
| 1164 | |||
| 1165 | Id InRangeShuffleButterfly(Operation) { | ||
| 1166 | UNIMPLEMENTED(); | ||
| 1167 | return {}; | ||
| 1168 | } | ||
| 1169 | |||
| 1130 | Id DeclareBuiltIn(spv::BuiltIn builtin, spv::StorageClass storage, Id type, | 1170 | Id DeclareBuiltIn(spv::BuiltIn builtin, spv::StorageClass storage, Id type, |
| 1131 | const std::string& name) { | 1171 | const std::string& name) { |
| 1132 | const Id id = OpVariable(type, storage); | 1172 | const Id id = OpVariable(type, storage); |
| @@ -1431,6 +1471,16 @@ private: | |||
| 1431 | &SPIRVDecompiler::VoteAll, | 1471 | &SPIRVDecompiler::VoteAll, |
| 1432 | &SPIRVDecompiler::VoteAny, | 1472 | &SPIRVDecompiler::VoteAny, |
| 1433 | &SPIRVDecompiler::VoteEqual, | 1473 | &SPIRVDecompiler::VoteEqual, |
| 1474 | |||
| 1475 | &SPIRVDecompiler::ShuffleIndexed, | ||
| 1476 | &SPIRVDecompiler::ShuffleUp, | ||
| 1477 | &SPIRVDecompiler::ShuffleDown, | ||
| 1478 | &SPIRVDecompiler::ShuffleButterfly, | ||
| 1479 | |||
| 1480 | &SPIRVDecompiler::InRangeShuffleIndexed, | ||
| 1481 | &SPIRVDecompiler::InRangeShuffleUp, | ||
| 1482 | &SPIRVDecompiler::InRangeShuffleDown, | ||
| 1483 | &SPIRVDecompiler::InRangeShuffleButterfly, | ||
| 1434 | }; | 1484 | }; |
| 1435 | static_assert(operation_decompilers.size() == static_cast<std::size_t>(OperationCode::Amount)); | 1485 | static_assert(operation_decompilers.size() == static_cast<std::size_t>(OperationCode::Amount)); |
| 1436 | 1486 | ||