structured_control_flow: Conditionally invoke demote reorder pass
This is only needed on select drivers when a fragment shader discards/demotes.
This commit is contained in:
		| @@ -156,6 +156,10 @@ public: | ||||
|         return shader_backend; | ||||
|     } | ||||
|  | ||||
|     bool IsAmd() const { | ||||
|         return vendor_name == "ATI Technologies Inc."; | ||||
|     } | ||||
|  | ||||
| private: | ||||
|     static bool TestVariableAoffi(); | ||||
|     static bool TestPreciseBug(); | ||||
|   | ||||
| @@ -219,6 +219,7 @@ ShaderCache::ShaderCache(RasterizerOpenGL& rasterizer_, Core::Frontend::EmuWindo | ||||
|       host_info{ | ||||
|           .support_float16 = false, | ||||
|           .support_int64 = device.HasShaderInt64(), | ||||
|           .needs_demote_reorder = device.IsAmd(), | ||||
|       } { | ||||
|     if (use_asynchronous_shaders) { | ||||
|         workers = CreateWorkers(); | ||||
|   | ||||
| @@ -325,6 +325,8 @@ PipelineCache::PipelineCache(RasterizerVulkan& rasterizer_, Tegra::Engines::Maxw | ||||
|     host_info = Shader::HostTranslateInfo{ | ||||
|         .support_float16 = device.IsFloat16Supported(), | ||||
|         .support_int64 = device.IsShaderInt64Supported(), | ||||
|         .needs_demote_reorder = driver_id == VK_DRIVER_ID_AMD_PROPRIETARY_KHR || | ||||
|                                 driver_id == VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR, | ||||
|     }; | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ameerj
					ameerj