Merge pull request #2769 from FernandoS27/commands-flush
GPU: Flush commands on every dma pusher step.
This commit is contained in:
		
						commit
						d654b3d82e
					
				@ -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,
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user