aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/engines/shader_bytecode.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-04-25 23:55:21 -0400
committerbunnei <bunneidev@gmail.com>2018-04-26 14:38:42 -0400
commitc9d7abe9c9be3e3654b47623602770c9be9ee88f (patch)
tree81a6cda909f1fe18f6a5ff31321369418bd3337b /src/video_core/engines/shader_bytecode.h
parent37fa9a15cdb99510748df39f2a823f766c4b0049 (diff)
gl_shader_decompiler: Boilerplate for handling integer instructions.
Diffstat (limited to 'src/video_core/engines/shader_bytecode.h')
-rw-r--r--src/video_core/engines/shader_bytecode.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h
index f4d11fa5d..f3ca30cfa 100644
--- a/src/video_core/engines/shader_bytecode.h
+++ b/src/video_core/engines/shader_bytecode.h
@@ -19,7 +19,10 @@ namespace Tegra {
namespace Shader {
struct Register {
- // Register 255 is special cased to always be 0
+ /// Number of registers
+ static constexpr size_t NumRegisters = 256;
+
+ /// Register 255 is special cased to always be 0
static constexpr size_t ZeroIndex = 255;
constexpr Register() = default;
@@ -48,6 +51,11 @@ struct Register {
return ~value;
}
+ u64 GetSwizzledIndex(u64 elem) const {
+ elem = (value + elem) & 3;
+ return (value & ~3) + elem;
+ }
+
private:
u64 value{};
};