mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-10-31 06:46:40 +08:00 
			
		
		
		
	gl_shader_cache: Avoid use after move for program size
All programs had a size of zero due to this bug, skipping invalidations. While we are at it, remove some unused forward declarations.
This commit is contained in:
		
							parent
							
								
									1d1489da80
								
							
						
					
					
						commit
						9f54cd4dad
					
				| @ -460,8 +460,9 @@ Shader* ShaderCacheOpenGL::GetStageProgram(Maxwell::ShaderProgram program) { | |||||||
|         const u8* host_ptr_b = memory_manager.GetPointer(address_b); |         const u8* host_ptr_b = memory_manager.GetPointer(address_b); | ||||||
|         code_b = GetShaderCode(memory_manager, address_b, host_ptr_b, false); |         code_b = GetShaderCode(memory_manager, address_b, host_ptr_b, false); | ||||||
|     } |     } | ||||||
|  |     const std::size_t code_size = code.size() * sizeof(u64); | ||||||
| 
 | 
 | ||||||
|     const auto unique_identifier = GetUniqueIdentifier( |     const u64 unique_identifier = GetUniqueIdentifier( | ||||||
|         GetShaderType(program), program == Maxwell::ShaderProgram::VertexA, code, code_b); |         GetShaderType(program), program == Maxwell::ShaderProgram::VertexA, code, code_b); | ||||||
| 
 | 
 | ||||||
|     const ShaderParameters params{system,    disk_cache, device, |     const ShaderParameters params{system,    disk_cache, device, | ||||||
| @ -477,7 +478,7 @@ Shader* ShaderCacheOpenGL::GetStageProgram(Maxwell::ShaderProgram program) { | |||||||
| 
 | 
 | ||||||
|     Shader* const result = shader.get(); |     Shader* const result = shader.get(); | ||||||
|     if (cpu_addr) { |     if (cpu_addr) { | ||||||
|         Register(std::move(shader), *cpu_addr, code.size() * sizeof(u64)); |         Register(std::move(shader), *cpu_addr, code_size); | ||||||
|     } else { |     } else { | ||||||
|         null_shader = std::move(shader); |         null_shader = std::move(shader); | ||||||
|     } |     } | ||||||
| @ -495,8 +496,9 @@ Shader* ShaderCacheOpenGL::GetComputeKernel(GPUVAddr code_addr) { | |||||||
| 
 | 
 | ||||||
|     const auto host_ptr{memory_manager.GetPointer(code_addr)}; |     const auto host_ptr{memory_manager.GetPointer(code_addr)}; | ||||||
|     // No kernel found, create a new one
 |     // No kernel found, create a new one
 | ||||||
|     auto code{GetShaderCode(memory_manager, code_addr, host_ptr, true)}; |     ProgramCode code{GetShaderCode(memory_manager, code_addr, host_ptr, true)}; | ||||||
|     const auto unique_identifier{GetUniqueIdentifier(ShaderType::Compute, false, code)}; |     const std::size_t code_size{code.size() * sizeof(u64)}; | ||||||
|  |     const u64 unique_identifier{GetUniqueIdentifier(ShaderType::Compute, false, code)}; | ||||||
| 
 | 
 | ||||||
|     const ShaderParameters params{system,    disk_cache, device, |     const ShaderParameters params{system,    disk_cache, device, | ||||||
|                                   *cpu_addr, host_ptr,   unique_identifier}; |                                   *cpu_addr, host_ptr,   unique_identifier}; | ||||||
| @ -511,7 +513,7 @@ Shader* ShaderCacheOpenGL::GetComputeKernel(GPUVAddr code_addr) { | |||||||
| 
 | 
 | ||||||
|     Shader* const result = kernel.get(); |     Shader* const result = kernel.get(); | ||||||
|     if (cpu_addr) { |     if (cpu_addr) { | ||||||
|         Register(std::move(kernel), *cpu_addr, code.size() * sizeof(u64)); |         Register(std::move(kernel), *cpu_addr, code_size); | ||||||
|     } else { |     } else { | ||||||
|         null_kernel = std::move(kernel); |         null_kernel = std::move(kernel); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -37,7 +37,6 @@ namespace OpenGL { | |||||||
| 
 | 
 | ||||||
| class Device; | class Device; | ||||||
| class RasterizerOpenGL; | class RasterizerOpenGL; | ||||||
| struct UnspecializedShader; |  | ||||||
| 
 | 
 | ||||||
| using Maxwell = Tegra::Engines::Maxwell3D::Regs; | using Maxwell = Tegra::Engines::Maxwell3D::Regs; | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user