diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-05-15 06:43:44 +0200 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-05-22 04:18:37 +0200 |
commit | e2b67a868b7191237374226218756c1a62fabd4e (patch) | |
tree | 0ae75b1a89a5cdec2abf2433b20558f4aaab589b /src/video_core/shader | |
parent | Merge pull request #3926 from ogniK5377/keyboard-states (diff) | |
download | yuzu-e2b67a868b7191237374226218756c1a62fabd4e.tar yuzu-e2b67a868b7191237374226218756c1a62fabd4e.tar.gz yuzu-e2b67a868b7191237374226218756c1a62fabd4e.tar.bz2 yuzu-e2b67a868b7191237374226218756c1a62fabd4e.tar.lz yuzu-e2b67a868b7191237374226218756c1a62fabd4e.tar.xz yuzu-e2b67a868b7191237374226218756c1a62fabd4e.tar.zst yuzu-e2b67a868b7191237374226218756c1a62fabd4e.zip |
Diffstat (limited to '')
-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) { return Operation(OperationCode::WorkGroupIdY); case SystemVariable::CtaIdZ: return Operation(OperationCode::WorkGroupIdZ); + case SystemVariable::EqMask: + case SystemVariable::LtMask: + case SystemVariable::LeMask: + case SystemVariable::GtMask: + case SystemVariable::GeMask: + uses_warps = true; + switch (instr.sys20) { + case SystemVariable::EqMask: + return Operation(OperationCode::ThreadEqMask); + case SystemVariable::LtMask: + return Operation(OperationCode::ThreadLtMask); + case SystemVariable::LeMask: + return Operation(OperationCode::ThreadLeMask); + case SystemVariable::GtMask: + return Operation(OperationCode::ThreadGtMask); + case SystemVariable::GeMask: + return Operation(OperationCode::ThreadGeMask); + default: + UNREACHABLE(); + return Immediate(0u); + } default: UNIMPLEMENTED_MSG("Unhandled system move: {}", 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 { VoteEqual, /// (bool) -> bool ThreadId, /// () -> uint + ThreadEqMask, /// () -> uint + ThreadGeMask, /// () -> uint + ThreadGtMask, /// () -> uint + ThreadLeMask, /// () -> uint + ThreadLtMask, /// () -> uint ShuffleIndexed, /// (uint value, uint index) -> uint MemoryBarrierGL, /// () -> void |