mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	Merge pull request #2921 from jroweboy/batch-fix-2
GPU: Add draw for immediate and batch modes
This commit is contained in:
		
						commit
						93930a966f
					
				
					 1 changed files with 17 additions and 12 deletions
				
			
		|  | @ -243,6 +243,15 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { | |||
|                     ASSERT(!g_state.geometry_pipeline.NeedIndexInput()); | ||||
|                     g_state.geometry_pipeline.Setup(shader_engine); | ||||
|                     g_state.geometry_pipeline.SubmitVertex(output); | ||||
| 
 | ||||
|                     // TODO: If drawing after every immediate mode triangle kills performance,
 | ||||
|                     // change it to flush triangles whenever a drawing config register changes
 | ||||
|                     // See: https://github.com/citra-emu/citra/pull/2866#issuecomment-327011550
 | ||||
|                     VideoCore::g_renderer->Rasterizer()->DrawTriangles(); | ||||
|                     if (g_debug_context) { | ||||
|                         g_debug_context->OnEvent(DebugContext::Event::FinishedPrimitiveBatch, | ||||
|                                                  nullptr); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | @ -250,16 +259,7 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { | |||
|     } | ||||
| 
 | ||||
|     case PICA_REG_INDEX(pipeline.gpu_mode): | ||||
|         if (regs.pipeline.gpu_mode == PipelineRegs::GPUMode::Configuring) { | ||||
|             MICROPROFILE_SCOPE(GPU_Drawing); | ||||
| 
 | ||||
|             // Draw immediate mode triangles when GPU Mode is set to GPUMode::Configuring
 | ||||
|             VideoCore::g_renderer->Rasterizer()->DrawTriangles(); | ||||
| 
 | ||||
|             if (g_debug_context) { | ||||
|                 g_debug_context->OnEvent(DebugContext::Event::FinishedPrimitiveBatch, nullptr); | ||||
|             } | ||||
|         } | ||||
|         // This register likely just enables vertex processing and doesn't need any special handling
 | ||||
|         break; | ||||
| 
 | ||||
|     case PICA_REG_INDEX_WORKAROUND(pipeline.command_buffer.trigger[0], 0x23c): | ||||
|  | @ -398,6 +398,11 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { | |||
|                                                       range.second, range.first); | ||||
|         } | ||||
| 
 | ||||
|         VideoCore::g_renderer->Rasterizer()->DrawTriangles(); | ||||
|         if (g_debug_context) { | ||||
|             g_debug_context->OnEvent(DebugContext::Event::FinishedPrimitiveBatch, nullptr); | ||||
|         } | ||||
| 
 | ||||
|         break; | ||||
|     } | ||||
| 
 | ||||
|  | @ -632,6 +637,6 @@ void ProcessCommandList(const u32* list, u32 size) { | |||
|     } | ||||
| } | ||||
| 
 | ||||
| } // namespace
 | ||||
| } // namespace CommandProcessor
 | ||||
| 
 | ||||
| } // namespace
 | ||||
| } // namespace Pica
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue