diff options
author | linkmauve <linkmauve@linkmauve.fr> | 2016-05-16 18:54:45 +0200 |
---|---|---|
committer | linkmauve <linkmauve@linkmauve.fr> | 2016-05-16 18:54:45 +0200 |
commit | f40fabd688576fae7ab91195547a6967178b28dd (patch) | |
tree | 3e3768978c47ae3c35e5318d8ff361825047a909 /src/video_core/shader/shader.h | |
parent | Merge pull request #1792 from JayFoxRox/avoid-uninitialised (diff) | |
parent | Use new shader-jit signature for interpreter (diff) | |
download | yuzu-f40fabd688576fae7ab91195547a6967178b28dd.tar yuzu-f40fabd688576fae7ab91195547a6967178b28dd.tar.gz yuzu-f40fabd688576fae7ab91195547a6967178b28dd.tar.bz2 yuzu-f40fabd688576fae7ab91195547a6967178b28dd.tar.lz yuzu-f40fabd688576fae7ab91195547a6967178b28dd.tar.xz yuzu-f40fabd688576fae7ab91195547a6967178b28dd.tar.zst yuzu-f40fabd688576fae7ab91195547a6967178b28dd.zip |
Diffstat (limited to 'src/video_core/shader/shader.h')
-rw-r--r-- | src/video_core/shader/shader.h | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/video_core/shader/shader.h b/src/video_core/shader/shader.h index 983e4a967..84898f21c 100644 --- a/src/video_core/shader/shader.h +++ b/src/video_core/shader/shader.h @@ -283,10 +283,10 @@ struct UnitState { static size_t InputOffset(const SourceRegister& reg) { switch (reg.GetRegisterType()) { case RegisterType::Input: - return offsetof(UnitState::Registers, input) + reg.GetIndex()*sizeof(Math::Vec4<float24>); + return offsetof(UnitState, registers.input) + reg.GetIndex()*sizeof(Math::Vec4<float24>); case RegisterType::Temporary: - return offsetof(UnitState::Registers, temporary) + reg.GetIndex()*sizeof(Math::Vec4<float24>); + return offsetof(UnitState, registers.temporary) + reg.GetIndex()*sizeof(Math::Vec4<float24>); default: UNREACHABLE(); @@ -297,10 +297,10 @@ struct UnitState { static size_t OutputOffset(const DestRegister& reg) { switch (reg.GetRegisterType()) { case RegisterType::Output: - return offsetof(UnitState::Registers, output) + reg.GetIndex()*sizeof(Math::Vec4<float24>); + return offsetof(UnitState, registers.output) + reg.GetIndex()*sizeof(Math::Vec4<float24>); case RegisterType::Temporary: - return offsetof(UnitState::Registers, temporary) + reg.GetIndex()*sizeof(Math::Vec4<float24>); + return offsetof(UnitState, registers.temporary) + reg.GetIndex()*sizeof(Math::Vec4<float24>); default: UNREACHABLE(); @@ -323,6 +323,23 @@ struct ShaderSetup { std::array<Math::Vec4<u8>, 4> i; } uniforms; + static size_t UniformOffset(RegisterType type, unsigned index) { + switch (type) { + case RegisterType::FloatUniform: + return offsetof(ShaderSetup, uniforms.f) + index*sizeof(Math::Vec4<float24>); + + case RegisterType::BoolUniform: + return offsetof(ShaderSetup, uniforms.b) + index*sizeof(bool); + + case RegisterType::IntUniform: + return offsetof(ShaderSetup, uniforms.i) + index*sizeof(Math::Vec4<u8>); + + default: + UNREACHABLE(); + return 0; + } + } + std::array<u32, 1024> program_code; std::array<u32, 1024> swizzle_data; |