mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	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; |             break; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |     gpu.FlushCommands(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool DmaPusher::Step() { | bool DmaPusher::Step() { | ||||||
|  | |||||||
| @ -120,6 +120,10 @@ bool GPU::CancelSyncptInterrupt(const u32 syncpoint_id, const u32 value) { | |||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void GPU::FlushCommands() { | ||||||
|  |     renderer.Rasterizer().FlushCommands(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| u32 RenderTargetBytesPerPixel(RenderTargetFormat format) { | u32 RenderTargetBytesPerPixel(RenderTargetFormat format) { | ||||||
|     ASSERT(format != RenderTargetFormat::NONE); |     ASSERT(format != RenderTargetFormat::NONE); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -153,6 +153,8 @@ public: | |||||||
|     /// Calls a GPU method.
 |     /// Calls a GPU method.
 | ||||||
|     void CallMethod(const MethodCall& method_call); |     void CallMethod(const MethodCall& method_call); | ||||||
| 
 | 
 | ||||||
|  |     void FlushCommands(); | ||||||
|  | 
 | ||||||
|     /// Returns a reference to the Maxwell3D GPU engine.
 |     /// Returns a reference to the Maxwell3D GPU engine.
 | ||||||
|     Engines::Maxwell3D& Maxwell3D(); |     Engines::Maxwell3D& Maxwell3D(); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -50,6 +50,9 @@ public: | |||||||
|     /// and invalidated
 |     /// and invalidated
 | ||||||
|     virtual void FlushAndInvalidateRegion(CacheAddr addr, u64 size) = 0; |     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
 |     /// Notify rasterizer that a frame is about to finish
 | ||||||
|     virtual void TickFrame() = 0; |     virtual void TickFrame() = 0; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -863,6 +863,10 @@ void RasterizerOpenGL::FlushAndInvalidateRegion(CacheAddr addr, u64 size) { | |||||||
|     InvalidateRegion(addr, size); |     InvalidateRegion(addr, size); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void RasterizerOpenGL::FlushCommands() { | ||||||
|  |     glFlush(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void RasterizerOpenGL::TickFrame() { | void RasterizerOpenGL::TickFrame() { | ||||||
|     buffer_cache.TickFrame(); |     buffer_cache.TickFrame(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -63,6 +63,7 @@ public: | |||||||
|     void FlushRegion(CacheAddr addr, u64 size) override; |     void FlushRegion(CacheAddr addr, u64 size) override; | ||||||
|     void InvalidateRegion(CacheAddr addr, u64 size) override; |     void InvalidateRegion(CacheAddr addr, u64 size) override; | ||||||
|     void FlushAndInvalidateRegion(CacheAddr addr, u64 size) override; |     void FlushAndInvalidateRegion(CacheAddr addr, u64 size) override; | ||||||
|  |     void FlushCommands() override; | ||||||
|     void TickFrame() override; |     void TickFrame() override; | ||||||
|     bool AccelerateSurfaceCopy(const Tegra::Engines::Fermi2D::Regs::Surface& src, |     bool AccelerateSurfaceCopy(const Tegra::Engines::Fermi2D::Regs::Surface& src, | ||||||
|                                const Tegra::Engines::Fermi2D::Regs::Surface& dst, |                                const Tegra::Engines::Fermi2D::Regs::Surface& dst, | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 bunnei
						bunnei