diff options
Diffstat (limited to 'src/video_core/shader')
| -rw-r--r-- | src/video_core/shader/decode/other.cpp | 21 | ||||
| -rw-r--r-- | src/video_core/shader/node.h | 5 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/video_core/shader/decode/other.cpp b/src/video_core/shader/decode/other.cpp index d4f95b18c..399a455c4 100644 --- a/src/video_core/shader/decode/other.cpp +++ b/src/video_core/shader/decode/other.cpp | |||
| @@ -109,6 +109,27 @@ u32 ShaderIR::DecodeOther(NodeBlock& bb, u32 pc) { | |||
| 109 | return Operation(OperationCode::WorkGroupIdY); | 109 | return Operation(OperationCode::WorkGroupIdY); |
| 110 | case SystemVariable::CtaIdZ: | 110 | case SystemVariable::CtaIdZ: |
| 111 | return Operation(OperationCode::WorkGroupIdZ); | 111 | return Operation(OperationCode::WorkGroupIdZ); |
| 112 | case SystemVariable::EqMask: | ||
| 113 | case SystemVariable::LtMask: | ||
| 114 | case SystemVariable::LeMask: | ||
| 115 | case SystemVariable::GtMask: | ||
| 116 | case SystemVariable::GeMask: | ||
| 117 | uses_warps = true; | ||
| 118 | switch (instr.sys20) { | ||
| 119 | case SystemVariable::EqMask: | ||
| 120 | return Operation(OperationCode::ThreadEqMask); | ||
| 121 | case SystemVariable::LtMask: | ||
| 122 | return Operation(OperationCode::ThreadLtMask); | ||
| 123 | case SystemVariable::LeMask: | ||
| 124 | return Operation(OperationCode::ThreadLeMask); | ||
| 125 | case SystemVariable::GtMask: | ||
| 126 | return Operation(OperationCode::ThreadGtMask); | ||
| 127 | case SystemVariable::GeMask: | ||
| 128 | return Operation(OperationCode::ThreadGeMask); | ||
| 129 | default: | ||
| 130 | UNREACHABLE(); | ||
| 131 | return Immediate(0u); | ||
| 132 | } | ||
| 112 | default: | 133 | default: |
| 113 | UNIMPLEMENTED_MSG("Unhandled system move: {}", | 134 | UNIMPLEMENTED_MSG("Unhandled system move: {}", |
| 114 | static_cast<u32>(instr.sys20.Value())); | 135 | static_cast<u32>(instr.sys20.Value())); |
diff --git a/src/video_core/shader/node.h b/src/video_core/shader/node.h index f75b62240..cce8aeebe 100644 --- a/src/video_core/shader/node.h +++ b/src/video_core/shader/node.h | |||
| @@ -226,6 +226,11 @@ enum class OperationCode { | |||
| 226 | VoteEqual, /// (bool) -> bool | 226 | VoteEqual, /// (bool) -> bool |
| 227 | 227 | ||
| 228 | ThreadId, /// () -> uint | 228 | ThreadId, /// () -> uint |
| 229 | ThreadEqMask, /// () -> uint | ||
| 230 | ThreadGeMask, /// () -> uint | ||
| 231 | ThreadGtMask, /// () -> uint | ||
| 232 | ThreadLeMask, /// () -> uint | ||
| 233 | ThreadLtMask, /// () -> uint | ||
| 229 | ShuffleIndexed, /// (uint value, uint index) -> uint | 234 | ShuffleIndexed, /// (uint value, uint index) -> uint |
| 230 | 235 | ||
| 231 | MemoryBarrierGL, /// () -> void | 236 | MemoryBarrierGL, /// () -> void |