summaryrefslogtreecommitdiffstats
path: root/src/video_core/engines/maxwell_3d.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-03-19 00:45:40 +0100
committerGitHub <noreply@github.com>2018-03-19 00:45:40 +0100
commit6317a0b2ca5cfd5997d60522554d6f1f6b94a979 (patch)
treed86384f4fed07fc791541e49b8ef0f7834461c35 /src/video_core/engines/maxwell_3d.h
parentMerge pull request #246 from Subv/gpu_macro_calls (diff)
parentGPU: Implement the BindStorageBuffer macro method in HLE. (diff)
downloadyuzu-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.h19
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