mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	renderer_base: Make Rasterizer() return the rasterizer by reference
All calling code assumes that the rasterizer will be in a valid state, which is a totally fine assumption. The only way the rasterizer wouldn't be is if initialization is done incorrectly or fails, which is checked against in System::Init().
This commit is contained in:
		
							parent
							
								
									6030c5ce41
								
							
						
					
					
						commit
						2665457f4a
					
				| @ -187,7 +187,7 @@ System::ResultStatus System::Init(EmuWindow& emu_window) { | ||||
|         return ResultStatus::ErrorVideoCore; | ||||
|     } | ||||
| 
 | ||||
|     gpu_core = std::make_unique<Tegra::GPU>(*renderer->Rasterizer()); | ||||
|     gpu_core = std::make_unique<Tegra::GPU>(renderer->Rasterizer()); | ||||
| 
 | ||||
|     // Create threads for CPU cores 1-3, and build thread_to_cpu map
 | ||||
|     // CPU core 0 is run on the main thread
 | ||||
|  | ||||
| @ -156,7 +156,7 @@ u32 nvhost_as_gpu::UnmapBuffer(const std::vector<u8>& input, std::vector<u8>& ou | ||||
|     auto& system_instance = Core::System::GetInstance(); | ||||
| 
 | ||||
|     // Remove this memory region from the rasterizer cache.
 | ||||
|     system_instance.Renderer().Rasterizer()->FlushAndInvalidateRegion(params.offset, | ||||
|     system_instance.Renderer().Rasterizer().FlushAndInvalidateRegion(params.offset, | ||||
|                                                                      itr->second.size); | ||||
| 
 | ||||
|     auto& gpu = system_instance.GPU(); | ||||
|  | ||||
| @ -355,16 +355,16 @@ void RasterizerFlushVirtualRegion(VAddr start, u64 size, FlushMode mode) { | ||||
|         const u64 overlap_size = overlap_end - overlap_start; | ||||
| 
 | ||||
|         for (const auto& gpu_address : gpu_addresses) { | ||||
|             auto* rasterizer = system_instance.Renderer().Rasterizer(); | ||||
|             auto& rasterizer = system_instance.Renderer().Rasterizer(); | ||||
|             switch (mode) { | ||||
|             case FlushMode::Flush: | ||||
|                 rasterizer->FlushRegion(gpu_address, overlap_size); | ||||
|                 rasterizer.FlushRegion(gpu_address, overlap_size); | ||||
|                 break; | ||||
|             case FlushMode::Invalidate: | ||||
|                 rasterizer->InvalidateRegion(gpu_address, overlap_size); | ||||
|                 rasterizer.InvalidateRegion(gpu_address, overlap_size); | ||||
|                 break; | ||||
|             case FlushMode::FlushAndInvalidate: | ||||
|                 rasterizer->FlushAndInvalidateRegion(gpu_address, overlap_size); | ||||
|                 rasterizer.FlushAndInvalidateRegion(gpu_address, overlap_size); | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -46,8 +46,12 @@ public: | ||||
|         return m_current_frame; | ||||
|     } | ||||
| 
 | ||||
|     RasterizerInterface* Rasterizer() const { | ||||
|         return rasterizer.get(); | ||||
|     RasterizerInterface& Rasterizer() { | ||||
|         return *rasterizer; | ||||
|     } | ||||
| 
 | ||||
|     const RasterizerInterface& Rasterizer() const { | ||||
|         return *rasterizer; | ||||
|     } | ||||
| 
 | ||||
|     void RefreshRasterizerSetting(); | ||||
|  | ||||
| @ -160,7 +160,7 @@ void RendererOpenGL::LoadFBToScreenInfo(const Tegra::FramebufferConfig& framebuf | ||||
|     // only allows rows to have a memory alignement of 4.
 | ||||
|     ASSERT(framebuffer.stride % 4 == 0); | ||||
| 
 | ||||
|     if (!Rasterizer()->AccelerateDisplay(framebuffer, framebuffer_addr, framebuffer.stride, | ||||
|     if (!rasterizer->AccelerateDisplay(framebuffer, framebuffer_addr, framebuffer.stride, | ||||
|                                        screen_info)) { | ||||
|         // Reset the screen info's display texture to its own permanent texture
 | ||||
|         screen_info.display_texture = screen_info.texture.resource.handle; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Lioncash
						Lioncash