diff options
author | bunnei <bunneidev@gmail.com> | 2018-03-19 00:45:40 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-19 00:45:40 +0100 |
commit | 6317a0b2ca5cfd5997d60522554d6f1f6b94a979 (patch) | |
tree | d86384f4fed07fc791541e49b8ef0f7834461c35 /src/video_core/engines/maxwell_3d.h | |
parent | Merge pull request #246 from Subv/gpu_macro_calls (diff) | |
parent | GPU: Implement the BindStorageBuffer macro method in HLE. (diff) | |
download | yuzu-6317a0b2ca5cfd5997d60522554d6f1f6b94a979.tar yuzu-6317a0b2ca5cfd5997d60522554d6f1f6b94a979.tar.gz yuzu-6317a0b2ca5cfd5997d60522554d6f1f6b94a979.tar.bz2 yuzu-6317a0b2ca5cfd5997d60522554d6f1f6b94a979.tar.lz yuzu-6317a0b2ca5cfd5997d60522554d6f1f6b94a979.tar.xz yuzu-6317a0b2ca5cfd5997d60522554d6f1f6b94a979.tar.zst yuzu-6317a0b2ca5cfd5997d60522554d6f1f6b94a979.zip |
Diffstat (limited to 'src/video_core/engines/maxwell_3d.h')
-rw-r--r-- | src/video_core/engines/maxwell_3d.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h index 05820a21e..3e97d9045 100644 --- a/src/video_core/engines/maxwell_3d.h +++ b/src/video_core/engines/maxwell_3d.h @@ -166,7 +166,19 @@ public: u32 tex_cb_index; - INSERT_PADDING_WORDS(0x4B3); + INSERT_PADDING_WORDS(0x395); + + struct { + /// Compressed address of a buffer that holds information about bound SSBOs. + /// This address is usually bound to c0 in the shaders. + u32 buffer_address; + + GPUVAddr BufferAddress() const { + return static_cast<GPUVAddr>(buffer_address) << 8; + } + } ssbo_info; + + INSERT_PADDING_WORDS(0x11D); }; std::array<u32, NUM_REGS> reg_array; }; @@ -218,6 +230,9 @@ private: /// Handles a write to the QUERY_GET register. void ProcessQueryGet(); + /// Handles a write to the CB_DATA[i] register. + void ProcessCBData(u32 value); + /// Handles a write to the CB_BIND register. void ProcessCBBind(Regs::ShaderStage stage); @@ -226,6 +241,7 @@ private: /// Method call handlers void SetShader(const std::vector<u32>& parameters); + void BindStorageBuffer(const std::vector<u32>& parameters); struct MethodInfo { const char* name; @@ -249,6 +265,7 @@ ASSERT_REG_POSITION(shader_config[0], 0x800); ASSERT_REG_POSITION(const_buffer, 0x8E0); ASSERT_REG_POSITION(cb_bind[0], 0x904); ASSERT_REG_POSITION(tex_cb_index, 0x982); +ASSERT_REG_POSITION(ssbo_info, 0xD18); #undef ASSERT_REG_POSITION |