Browse Source
Merge pull request #2769 from FernandoS27/commands-flush
GPU: Flush commands on every dma pusher step.
pull/15/merge
bunnei
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with
15 additions and
0 deletions
-
src/video_core/dma_pusher.cpp
-
src/video_core/gpu.cpp
-
src/video_core/gpu.h
-
src/video_core/rasterizer_interface.h
-
src/video_core/renderer_opengl/gl_rasterizer.cpp
-
src/video_core/renderer_opengl/gl_rasterizer.h
|
|
|
@ -31,6 +31,7 @@ void DmaPusher::DispatchCalls() { |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
gpu.FlushCommands(); |
|
|
|
} |
|
|
|
|
|
|
|
bool DmaPusher::Step() { |
|
|
|
|
|
|
|
@ -120,6 +120,10 @@ bool GPU::CancelSyncptInterrupt(const u32 syncpoint_id, const u32 value) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
void GPU::FlushCommands() { |
|
|
|
renderer.Rasterizer().FlushCommands(); |
|
|
|
} |
|
|
|
|
|
|
|
u32 RenderTargetBytesPerPixel(RenderTargetFormat format) { |
|
|
|
ASSERT(format != RenderTargetFormat::NONE); |
|
|
|
|
|
|
|
|
|
|
|
@ -153,6 +153,8 @@ public: |
|
|
|
/// Calls a GPU method. |
|
|
|
void CallMethod(const MethodCall& method_call); |
|
|
|
|
|
|
|
void FlushCommands(); |
|
|
|
|
|
|
|
/// Returns a reference to the Maxwell3D GPU engine. |
|
|
|
Engines::Maxwell3D& Maxwell3D(); |
|
|
|
|
|
|
|
|
|
|
|
@ -50,6 +50,9 @@ public: |
|
|
|
/// and invalidated |
|
|
|
virtual void FlushAndInvalidateRegion(CacheAddr addr, u64 size) = 0; |
|
|
|
|
|
|
|
// Notify the rasterizer to send all written commands to the host GPU. |
|
|
|
virtual void FlushCommands() = 0; |
|
|
|
|
|
|
|
/// Notify rasterizer that a frame is about to finish |
|
|
|
virtual void TickFrame() = 0; |
|
|
|
|
|
|
|
|
|
|
|
@ -863,6 +863,10 @@ void RasterizerOpenGL::FlushAndInvalidateRegion(CacheAddr addr, u64 size) { |
|
|
|
InvalidateRegion(addr, size); |
|
|
|
} |
|
|
|
|
|
|
|
void RasterizerOpenGL::FlushCommands() { |
|
|
|
glFlush(); |
|
|
|
} |
|
|
|
|
|
|
|
void RasterizerOpenGL::TickFrame() { |
|
|
|
buffer_cache.TickFrame(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -63,6 +63,7 @@ public: |
|
|
|
void FlushRegion(CacheAddr addr, u64 size) override; |
|
|
|
void InvalidateRegion(CacheAddr addr, u64 size) override; |
|
|
|
void FlushAndInvalidateRegion(CacheAddr addr, u64 size) override; |
|
|
|
void FlushCommands() override; |
|
|
|
void TickFrame() override; |
|
|
|
bool AccelerateSurfaceCopy(const Tegra::Engines::Fermi2D::Regs::Surface& src, |
|
|
|
const Tegra::Engines::Fermi2D::Regs::Surface& dst, |
|
|
|
|