mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	gpu_thread: Don't spin wait if there are no GPU commands.
This commit is contained in:
		
							parent
							
								
									6a3fc5d2ff
								
							
						
					
					
						commit
						9ec84fc592
					
				| @ -31,24 +31,22 @@ static void RunThread(VideoCore::RendererBase& renderer, Tegra::DmaPusher& dma_p | ||||
| 
 | ||||
|     CommandDataContainer next; | ||||
|     while (state.is_running) { | ||||
|         while (!state.queue.Empty()) { | ||||
|             state.queue.Pop(next); | ||||
|             if (const auto submit_list = std::get_if<SubmitListCommand>(&next.data)) { | ||||
|                 dma_pusher.Push(std::move(submit_list->entries)); | ||||
|                 dma_pusher.DispatchCalls(); | ||||
|             } else if (const auto data = std::get_if<SwapBuffersCommand>(&next.data)) { | ||||
|                 renderer.SwapBuffers(data->framebuffer ? &*data->framebuffer : nullptr); | ||||
|             } else if (const auto data = std::get_if<FlushRegionCommand>(&next.data)) { | ||||
|                 renderer.Rasterizer().FlushRegion(data->addr, data->size); | ||||
|             } else if (const auto data = std::get_if<InvalidateRegionCommand>(&next.data)) { | ||||
|                 renderer.Rasterizer().InvalidateRegion(data->addr, data->size); | ||||
|             } else if (std::holds_alternative<EndProcessingCommand>(next.data)) { | ||||
|                 return; | ||||
|             } else { | ||||
|                 UNREACHABLE(); | ||||
|             } | ||||
|             state.signaled_fence.store(next.fence); | ||||
|         next = state.queue.PopWait(); | ||||
|         if (const auto submit_list = std::get_if<SubmitListCommand>(&next.data)) { | ||||
|             dma_pusher.Push(std::move(submit_list->entries)); | ||||
|             dma_pusher.DispatchCalls(); | ||||
|         } else if (const auto data = std::get_if<SwapBuffersCommand>(&next.data)) { | ||||
|             renderer.SwapBuffers(data->framebuffer ? &*data->framebuffer : nullptr); | ||||
|         } else if (const auto data = std::get_if<FlushRegionCommand>(&next.data)) { | ||||
|             renderer.Rasterizer().FlushRegion(data->addr, data->size); | ||||
|         } else if (const auto data = std::get_if<InvalidateRegionCommand>(&next.data)) { | ||||
|             renderer.Rasterizer().InvalidateRegion(data->addr, data->size); | ||||
|         } else if (std::holds_alternative<EndProcessingCommand>(next.data)) { | ||||
|             return; | ||||
|         } else { | ||||
|             UNREACHABLE(); | ||||
|         } | ||||
|         state.signaled_fence.store(next.fence); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 bunnei
						bunnei