summaryrefslogtreecommitdiff
path: root/src/video_core/engines
diff options
context:
space:
mode:
authorGravatar Liam2022-11-16 22:41:40 -0500
committerGravatar Liam2022-11-17 08:31:43 -0500
commit4c42655a2defddcd8faacaaa4e0bf109693b5a9c (patch)
tree5ec83147c52c4542066585c8936c88ef5ab6c51a /src/video_core/engines
parentmaxwell3d: HLE multi-layer clear macro (diff)
downloadyuzu-4c42655a2defddcd8faacaaa4e0bf109693b5a9c.tar.gz
yuzu-4c42655a2defddcd8faacaaa4e0bf109693b5a9c.tar.xz
yuzu-4c42655a2defddcd8faacaaa4e0bf109693b5a9c.zip
maxwell3d: full HLE for multi-layer clears
Diffstat (limited to 'src/video_core/engines')
-rw-r--r--src/video_core/engines/maxwell_3d.cpp6
-rw-r--r--src/video_core/engines/maxwell_3d.h7
2 files changed, 6 insertions, 7 deletions
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp
index d502d181c..5bb1427c1 100644
--- a/src/video_core/engines/maxwell_3d.cpp
+++ b/src/video_core/engines/maxwell_3d.cpp
@@ -232,7 +232,7 @@ void Maxwell3D::ProcessMethodCall(u32 method, u32 argument, u32 nonshadow_argume
232 use_topology_override = true; 232 use_topology_override = true;
233 return; 233 return;
234 case MAXWELL3D_REG_INDEX(clear_surface): 234 case MAXWELL3D_REG_INDEX(clear_surface):
235 return ProcessClearBuffers(); 235 return ProcessClearBuffers(1);
236 case MAXWELL3D_REG_INDEX(report_semaphore.query): 236 case MAXWELL3D_REG_INDEX(report_semaphore.query):
237 return ProcessQueryGet(); 237 return ProcessQueryGet();
238 case MAXWELL3D_REG_INDEX(render_enable.mode): 238 case MAXWELL3D_REG_INDEX(render_enable.mode):
@@ -596,8 +596,8 @@ u32 Maxwell3D::GetRegisterValue(u32 method) const {
596 return regs.reg_array[method]; 596 return regs.reg_array[method];
597} 597}
598 598
599void Maxwell3D::ProcessClearBuffers() { 599void Maxwell3D::ProcessClearBuffers(u32 layer_count) {
600 rasterizer->Clear(); 600 rasterizer->Clear(layer_count);
601} 601}
602 602
603void Maxwell3D::ProcessDraw(u32 instance_count) { 603void Maxwell3D::ProcessDraw(u32 instance_count) {
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h
index f9cdfbc0b..c3099f9a6 100644
--- a/src/video_core/engines/maxwell_3d.h
+++ b/src/video_core/engines/maxwell_3d.h
@@ -1129,7 +1129,6 @@ public:
1129 Tegra::RenderTargetFormat format; 1129 Tegra::RenderTargetFormat format;
1130 TileMode tile_mode; 1130 TileMode tile_mode;
1131 union { 1131 union {
1132 u32 depth_volume;
1133 BitField<0, 16, u32> depth; 1132 BitField<0, 16, u32> depth;
1134 BitField<16, 1, u32> volume; 1133 BitField<16, 1, u32> volume;
1135 }; 1134 };
@@ -3087,6 +3086,9 @@ public:
3087 3086
3088 std::vector<u8> inline_index_draw_indexes; 3087 std::vector<u8> inline_index_draw_indexes;
3089 3088
3089 /// Handles a write to the CLEAR_BUFFERS register.
3090 void ProcessClearBuffers(u32 layer_count);
3091
3090private: 3092private:
3091 void InitializeRegisterDefaults(); 3093 void InitializeRegisterDefaults();
3092 3094
@@ -3121,9 +3123,6 @@ private:
3121 /// Handles firmware blob 4 3123 /// Handles firmware blob 4
3122 void ProcessFirmwareCall4(); 3124 void ProcessFirmwareCall4();
3123 3125
3124 /// Handles a write to the CLEAR_BUFFERS register.
3125 void ProcessClearBuffers();
3126
3127 /// Handles a write to the QUERY_GET register. 3126 /// Handles a write to the QUERY_GET register.
3128 void ProcessQueryGet(); 3127 void ProcessQueryGet();
3129 3128