mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	GPU: Support clears that don't clear the color buffer.
This commit is contained in:
		
							parent
							
								
									be51120d23
								
							
						
					
					
						commit
						c1811ed3d1
					
				| @ -420,8 +420,9 @@ bool Maxwell3D::IsShaderStageEnabled(Regs::ShaderStage stage) const { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Maxwell3D::ProcessClearBuffers() { | void Maxwell3D::ProcessClearBuffers() { | ||||||
|     ASSERT(regs.clear_buffers.R && regs.clear_buffers.G && regs.clear_buffers.B && |     ASSERT(regs.clear_buffers.R == regs.clear_buffers.G && | ||||||
|            regs.clear_buffers.A); |            regs.clear_buffers.R == regs.clear_buffers.B && | ||||||
|  |            regs.clear_buffers.R == regs.clear_buffers.A); | ||||||
| 
 | 
 | ||||||
|     VideoCore::g_renderer->Rasterizer()->Clear(); |     VideoCore::g_renderer->Rasterizer()->Clear(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -300,6 +300,20 @@ bool RasterizerOpenGL::AccelerateDrawBatch(bool is_indexed) { | |||||||
| void RasterizerOpenGL::Clear() { | void RasterizerOpenGL::Clear() { | ||||||
|     const auto& regs = Core::System().GetInstance().GPU().Maxwell3D().regs; |     const auto& regs = Core::System().GetInstance().GPU().Maxwell3D().regs; | ||||||
| 
 | 
 | ||||||
|  |     GLbitfield clear_mask = 0; | ||||||
|  |     if (regs.clear_buffers.R && regs.clear_buffers.G && regs.clear_buffers.B && | ||||||
|  |         regs.clear_buffers.A) { | ||||||
|  |         clear_mask |= GL_COLOR_BUFFER_BIT; | ||||||
|  |     } | ||||||
|  |     if (regs.clear_buffers.Z) | ||||||
|  |         clear_mask |= GL_DEPTH_BUFFER_BIT; | ||||||
|  | 
 | ||||||
|  |     if (clear_mask == 0) | ||||||
|  |         return; | ||||||
|  | 
 | ||||||
|  |     // Sync the depth test state before configuring the framebuffer surfaces.
 | ||||||
|  |     SyncDepthTestState(); | ||||||
|  | 
 | ||||||
|     // TODO(bunnei): Implement these
 |     // TODO(bunnei): Implement these
 | ||||||
|     const bool has_stencil = false; |     const bool has_stencil = false; | ||||||
|     const bool using_color_fb = true; |     const bool using_color_fb = true; | ||||||
| @ -353,10 +367,6 @@ void RasterizerOpenGL::Clear() { | |||||||
|                  regs.clear_color[3]); |                  regs.clear_color[3]); | ||||||
|     glClearDepth(regs.clear_depth); |     glClearDepth(regs.clear_depth); | ||||||
| 
 | 
 | ||||||
|     GLbitfield clear_mask = GL_COLOR_BUFFER_BIT; |  | ||||||
|     if (regs.clear_buffers.Z) |  | ||||||
|         clear_mask |= GL_DEPTH_BUFFER_BIT; |  | ||||||
| 
 |  | ||||||
|     glClear(clear_mask); |     glClear(clear_mask); | ||||||
| 
 | 
 | ||||||
|     // Mark framebuffer surfaces as dirty
 |     // Mark framebuffer surfaces as dirty
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Subv
						Subv