gl_rasterizer: Disable compute shaders on Intel
Intel's proprietary driver enters in a corrupt state when compute shaders are executed. For now, disable these.
This commit is contained in:
		| @@ -74,6 +74,7 @@ Device::Device() { | ||||
|     const std::vector extensions = GetExtensions(); | ||||
|  | ||||
|     const bool is_nvidia = vendor == "NVIDIA Corporation"; | ||||
|     const bool is_intel = vendor == "Intel"; | ||||
|  | ||||
|     // Reserve the first UBO for emulation bindings | ||||
|     base_bindings[0] = BaseBindings{ReservedUniformBlocks, 0, 0, 0}; | ||||
| @@ -110,6 +111,7 @@ Device::Device() { | ||||
|     has_variable_aoffi = TestVariableAoffi(); | ||||
|     has_component_indexing_bug = TestComponentIndexingBug(); | ||||
|     has_precise_bug = TestPreciseBug(); | ||||
|     has_broken_compute = is_intel; | ||||
|     has_fast_buffer_sub_data = is_nvidia; | ||||
|  | ||||
|     LOG_INFO(Render_OpenGL, "Renderer_VariableAOFFI: {}", has_variable_aoffi); | ||||
| @@ -127,6 +129,7 @@ Device::Device(std::nullptr_t) { | ||||
|     has_image_load_formatted = true; | ||||
|     has_variable_aoffi = true; | ||||
|     has_component_indexing_bug = false; | ||||
|     has_broken_compute = false; | ||||
|     has_precise_bug = false; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -76,6 +76,10 @@ public: | ||||
|         return has_precise_bug; | ||||
|     } | ||||
|  | ||||
|     bool HasBrokenCompute() const { | ||||
|         return has_broken_compute; | ||||
|     } | ||||
|  | ||||
|     bool HasFastBufferSubData() const { | ||||
|         return has_fast_buffer_sub_data; | ||||
|     } | ||||
| @@ -97,6 +101,7 @@ private: | ||||
|     bool has_variable_aoffi{}; | ||||
|     bool has_component_indexing_bug{}; | ||||
|     bool has_precise_bug{}; | ||||
|     bool has_broken_compute{}; | ||||
|     bool has_fast_buffer_sub_data{}; | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -743,6 +743,10 @@ bool RasterizerOpenGL::DrawMultiBatch(bool is_indexed) { | ||||
| } | ||||
|  | ||||
| void RasterizerOpenGL::DispatchCompute(GPUVAddr code_addr) { | ||||
|     if (device.HasBrokenCompute()) { | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     buffer_cache.Acquire(); | ||||
|  | ||||
|     auto kernel = shader_cache.GetComputeKernel(code_addr); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ReinUsesLisp
					ReinUsesLisp