diff options
| author | 2023-06-09 22:57:50 -0400 | |
|---|---|---|
| committer | 2023-06-10 12:38:49 -0400 | |
| commit | 2f1e87dd83b4ce4e6ea12f985b6da49829d821e4 (patch) | |
| tree | 85c9eaeb191ab46c2b9d8c2055c2824f4aa1ca6f /src/video_core | |
| parent | Merge pull request #10614 from xcfrg/shader-backend-status-bar (diff) | |
| download | yuzu-2f1e87dd83b4ce4e6ea12f985b6da49829d821e4.tar.gz yuzu-2f1e87dd83b4ce4e6ea12f985b6da49829d821e4.tar.xz yuzu-2f1e87dd83b4ce4e6ea12f985b6da49829d821e4.zip | |
shader_recompiler: translate f64 to f32 when unsupported on host
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_cache.cpp | 1 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | 1 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.h | 5 |
3 files changed, 7 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp index 6ecda2984..dd8caa556 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.cpp +++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp | |||
| @@ -232,6 +232,7 @@ ShaderCache::ShaderCache(RasterizerOpenGL& rasterizer_, Core::Frontend::EmuWindo | |||
| 232 | .gl_max_compute_smem_size = device.GetMaxComputeSharedMemorySize(), | 232 | .gl_max_compute_smem_size = device.GetMaxComputeSharedMemorySize(), |
| 233 | }, | 233 | }, |
| 234 | host_info{ | 234 | host_info{ |
| 235 | .support_float64 = true, | ||
| 235 | .support_float16 = false, | 236 | .support_float16 = false, |
| 236 | .support_int64 = device.HasShaderInt64(), | 237 | .support_int64 = device.HasShaderInt64(), |
| 237 | .needs_demote_reorder = device.IsAmd(), | 238 | .needs_demote_reorder = device.IsAmd(), |
diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index 9482e91b0..5734f51e5 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | |||
| @@ -350,6 +350,7 @@ PipelineCache::PipelineCache(RasterizerVulkan& rasterizer_, const Device& device | |||
| 350 | .has_broken_spirv_subgroup_mask_vector_extract_dynamic = | 350 | .has_broken_spirv_subgroup_mask_vector_extract_dynamic = |
| 351 | driver_id == VK_DRIVER_ID_QUALCOMM_PROPRIETARY}; | 351 | driver_id == VK_DRIVER_ID_QUALCOMM_PROPRIETARY}; |
| 352 | host_info = Shader::HostTranslateInfo{ | 352 | host_info = Shader::HostTranslateInfo{ |
| 353 | .support_float64 = device.IsFloat64Supported(), | ||
| 353 | .support_float16 = device.IsFloat16Supported(), | 354 | .support_float16 = device.IsFloat16Supported(), |
| 354 | .support_int64 = device.IsShaderInt64Supported(), | 355 | .support_int64 = device.IsShaderInt64Supported(), |
| 355 | .needs_demote_reorder = | 356 | .needs_demote_reorder = |
diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index d62a103a1..0c53e35a6 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h | |||
| @@ -300,6 +300,11 @@ public: | |||
| 300 | return GetDriverID() != VK_DRIVER_ID_QUALCOMM_PROPRIETARY; | 300 | return GetDriverID() != VK_DRIVER_ID_QUALCOMM_PROPRIETARY; |
| 301 | } | 301 | } |
| 302 | 302 | ||
| 303 | /// Returns true if the device suppors float64 natively. | ||
| 304 | bool IsFloat64Supported() const { | ||
| 305 | return features.features.shaderFloat64; | ||
| 306 | } | ||
| 307 | |||
| 303 | /// Returns true if the device supports float16 natively. | 308 | /// Returns true if the device supports float16 natively. |
| 304 | bool IsFloat16Supported() const { | 309 | bool IsFloat16Supported() const { |
| 305 | return features.shader_float16_int8.shaderFloat16; | 310 | return features.shader_float16_int8.shaderFloat16; |