mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-11-04 20:44:02 +08:00 
			
		
		
		
	Merge pull request #4025 from Morph1984/intel-proprietary-compute
gl_device: Enable compute shaders for Intel proprietary drivers
This commit is contained in:
		
						commit
						a280822c82
					
				@ -166,8 +166,6 @@ Device::Device() : base_bindings{BuildBaseBindings()} {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    const bool is_nvidia = vendor == "NVIDIA Corporation";
 | 
					    const bool is_nvidia = vendor == "NVIDIA Corporation";
 | 
				
			||||||
    const bool is_amd = vendor == "ATI Technologies Inc.";
 | 
					    const bool is_amd = vendor == "ATI Technologies Inc.";
 | 
				
			||||||
    const bool is_intel = vendor == "Intel";
 | 
					 | 
				
			||||||
    const bool is_intel_proprietary = is_intel && std::strstr(renderer, "Mesa") == nullptr;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    uniform_buffer_alignment = GetInteger<std::size_t>(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT);
 | 
					    uniform_buffer_alignment = GetInteger<std::size_t>(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT);
 | 
				
			||||||
    shader_storage_alignment = GetInteger<std::size_t>(GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT);
 | 
					    shader_storage_alignment = GetInteger<std::size_t>(GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT);
 | 
				
			||||||
@ -182,7 +180,6 @@ Device::Device() : base_bindings{BuildBaseBindings()} {
 | 
				
			|||||||
    has_variable_aoffi = TestVariableAoffi();
 | 
					    has_variable_aoffi = TestVariableAoffi();
 | 
				
			||||||
    has_component_indexing_bug = is_amd;
 | 
					    has_component_indexing_bug = is_amd;
 | 
				
			||||||
    has_precise_bug = TestPreciseBug();
 | 
					    has_precise_bug = TestPreciseBug();
 | 
				
			||||||
    has_broken_compute = is_intel_proprietary;
 | 
					 | 
				
			||||||
    has_fast_buffer_sub_data = is_nvidia;
 | 
					    has_fast_buffer_sub_data = is_nvidia;
 | 
				
			||||||
    use_assembly_shaders = Settings::values.use_assembly_shaders && GLAD_GL_NV_gpu_program5 &&
 | 
					    use_assembly_shaders = Settings::values.use_assembly_shaders && GLAD_GL_NV_gpu_program5 &&
 | 
				
			||||||
                           GLAD_GL_NV_compute_program5;
 | 
					                           GLAD_GL_NV_compute_program5;
 | 
				
			||||||
@ -206,7 +203,6 @@ Device::Device(std::nullptr_t) {
 | 
				
			|||||||
    has_image_load_formatted = true;
 | 
					    has_image_load_formatted = true;
 | 
				
			||||||
    has_variable_aoffi = true;
 | 
					    has_variable_aoffi = true;
 | 
				
			||||||
    has_component_indexing_bug = false;
 | 
					    has_component_indexing_bug = false;
 | 
				
			||||||
    has_broken_compute = false;
 | 
					 | 
				
			||||||
    has_precise_bug = false;
 | 
					    has_precise_bug = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -80,10 +80,6 @@ public:
 | 
				
			|||||||
        return has_precise_bug;
 | 
					        return has_precise_bug;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    bool HasBrokenCompute() const {
 | 
					 | 
				
			||||||
        return has_broken_compute;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    bool HasFastBufferSubData() const {
 | 
					    bool HasFastBufferSubData() const {
 | 
				
			||||||
        return has_fast_buffer_sub_data;
 | 
					        return has_fast_buffer_sub_data;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -109,7 +105,6 @@ private:
 | 
				
			|||||||
    bool has_variable_aoffi{};
 | 
					    bool has_variable_aoffi{};
 | 
				
			||||||
    bool has_component_indexing_bug{};
 | 
					    bool has_component_indexing_bug{};
 | 
				
			||||||
    bool has_precise_bug{};
 | 
					    bool has_precise_bug{};
 | 
				
			||||||
    bool has_broken_compute{};
 | 
					 | 
				
			||||||
    bool has_fast_buffer_sub_data{};
 | 
					    bool has_fast_buffer_sub_data{};
 | 
				
			||||||
    bool use_assembly_shaders{};
 | 
					    bool use_assembly_shaders{};
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
@ -655,10 +655,6 @@ void RasterizerOpenGL::Draw(bool is_indexed, bool is_instanced) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void RasterizerOpenGL::DispatchCompute(GPUVAddr code_addr) {
 | 
					void RasterizerOpenGL::DispatchCompute(GPUVAddr code_addr) {
 | 
				
			||||||
    if (device.HasBrokenCompute()) {
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    buffer_cache.Acquire();
 | 
					    buffer_cache.Acquire();
 | 
				
			||||||
    current_cbuf = 0;
 | 
					    current_cbuf = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user