summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar bunnei2019-08-21 10:29:56 -0400
committerGravatar GitHub2019-08-21 10:29:56 -0400
commitd654b3d82eed3093957223b17db12875c7752280 (patch)
tree96d52596f4590f843b3c24a1778fe7af682e0f70 /src
parentMerge pull request #2777 from ReinUsesLisp/hsetp2-fe3h-fix (diff)
parentGPU: Flush commands on every dma pusher step. (diff)
downloadyuzu-d654b3d82eed3093957223b17db12875c7752280.tar.gz
yuzu-d654b3d82eed3093957223b17db12875c7752280.tar.xz
yuzu-d654b3d82eed3093957223b17db12875c7752280.zip
Merge pull request #2769 from FernandoS27/commands-flush
GPU: Flush commands on every dma pusher step.
Diffstat (limited to 'src')
-rw-r--r--src/video_core/dma_pusher.cpp1
-rw-r--r--src/video_core/gpu.cpp4
-rw-r--r--src/video_core/gpu.h2
-rw-r--r--src/video_core/rasterizer_interface.h3
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp4
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.h1
6 files changed, 15 insertions, 0 deletions
diff --git a/src/video_core/dma_pusher.cpp b/src/video_core/dma_pusher.cpp
index bd036cbe8..0094fd715 100644
--- a/src/video_core/dma_pusher.cpp
+++ b/src/video_core/dma_pusher.cpp
@@ -31,6 +31,7 @@ void DmaPusher::DispatchCalls() {
31 break; 31 break;
32 } 32 }
33 } 33 }
34 gpu.FlushCommands();
34} 35}
35 36
36bool DmaPusher::Step() { 37bool DmaPusher::Step() {
diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp
index 1622332a4..c409af194 100644
--- a/src/video_core/gpu.cpp
+++ b/src/video_core/gpu.cpp
@@ -120,6 +120,10 @@ bool GPU::CancelSyncptInterrupt(const u32 syncpoint_id, const u32 value) {
120 return true; 120 return true;
121} 121}
122 122
123void GPU::FlushCommands() {
124 renderer.Rasterizer().FlushCommands();
125}
126
123u32 RenderTargetBytesPerPixel(RenderTargetFormat format) { 127u32 RenderTargetBytesPerPixel(RenderTargetFormat format) {
124 ASSERT(format != RenderTargetFormat::NONE); 128 ASSERT(format != RenderTargetFormat::NONE);
125 129
diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h
index 87c96f46b..11857ff99 100644
--- a/src/video_core/gpu.h
+++ b/src/video_core/gpu.h
@@ -153,6 +153,8 @@ public:
153 /// Calls a GPU method. 153 /// Calls a GPU method.
154 void CallMethod(const MethodCall& method_call); 154 void CallMethod(const MethodCall& method_call);
155 155
156 void FlushCommands();
157
156 /// Returns a reference to the Maxwell3D GPU engine. 158 /// Returns a reference to the Maxwell3D GPU engine.
157 Engines::Maxwell3D& Maxwell3D(); 159 Engines::Maxwell3D& Maxwell3D();
158 160
diff --git a/src/video_core/rasterizer_interface.h b/src/video_core/rasterizer_interface.h
index 9881df0d5..6e44d51cf 100644
--- a/src/video_core/rasterizer_interface.h
+++ b/src/video_core/rasterizer_interface.h
@@ -50,6 +50,9 @@ public:
50 /// and invalidated 50 /// and invalidated
51 virtual void FlushAndInvalidateRegion(CacheAddr addr, u64 size) = 0; 51 virtual void FlushAndInvalidateRegion(CacheAddr addr, u64 size) = 0;
52 52
53 // Notify the rasterizer to send all written commands to the host GPU.
54 virtual void FlushCommands() = 0;
55
53 /// Notify rasterizer that a frame is about to finish 56 /// Notify rasterizer that a frame is about to finish
54 virtual void TickFrame() = 0; 57 virtual void TickFrame() = 0;
55 58
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index c28ae795c..80cfda7e4 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -863,6 +863,10 @@ void RasterizerOpenGL::FlushAndInvalidateRegion(CacheAddr addr, u64 size) {
863 InvalidateRegion(addr, size); 863 InvalidateRegion(addr, size);
864} 864}
865 865
866void RasterizerOpenGL::FlushCommands() {
867 glFlush();
868}
869
866void RasterizerOpenGL::TickFrame() { 870void RasterizerOpenGL::TickFrame() {
867 buffer_cache.TickFrame(); 871 buffer_cache.TickFrame();
868} 872}
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h
index 8b123c48d..9d20a4fbf 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.h
+++ b/src/video_core/renderer_opengl/gl_rasterizer.h
@@ -63,6 +63,7 @@ public:
63 void FlushRegion(CacheAddr addr, u64 size) override; 63 void FlushRegion(CacheAddr addr, u64 size) override;
64 void InvalidateRegion(CacheAddr addr, u64 size) override; 64 void InvalidateRegion(CacheAddr addr, u64 size) override;
65 void FlushAndInvalidateRegion(CacheAddr addr, u64 size) override; 65 void FlushAndInvalidateRegion(CacheAddr addr, u64 size) override;
66 void FlushCommands() override;
66 void TickFrame() override; 67 void TickFrame() override;
67 bool AccelerateSurfaceCopy(const Tegra::Engines::Fermi2D::Regs::Surface& src, 68 bool AccelerateSurfaceCopy(const Tegra::Engines::Fermi2D::Regs::Surface& src,
68 const Tegra::Engines::Fermi2D::Regs::Surface& dst, 69 const Tegra::Engines::Fermi2D::Regs::Surface& dst,