summaryrefslogtreecommitdiff
path: root/src/video_core
diff options
context:
space:
mode:
authorGravatar Liam2023-06-09 22:57:50 -0400
committerGravatar Liam2023-06-10 12:38:49 -0400
commit2f1e87dd83b4ce4e6ea12f985b6da49829d821e4 (patch)
tree85c9eaeb191ab46c2b9d8c2055c2824f4aa1ca6f /src/video_core
parentMerge pull request #10614 from xcfrg/shader-backend-status-bar (diff)
downloadyuzu-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.cpp1
-rw-r--r--src/video_core/renderer_vulkan/vk_pipeline_cache.cpp1
-rw-r--r--src/video_core/vulkan_common/vulkan_device.h5
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;