From 5f932841a989bc5d55d50cdae2a95c9a198b2bcf Mon Sep 17 00:00:00 2001 From: Hans-Kristian Arntzen Date: Thu, 11 Jul 2024 14:56:41 +0200 Subject: [PATCH] vkd3d: Add config flag to force precise math globally. Mostly for triaging game issues. Some invariance issues exist outside just BuiltInPosition. Signed-off-by: Hans-Kristian Arntzen --- include/vkd3d.h | 1 + libs/vkd3d/device.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/include/vkd3d.h b/include/vkd3d.h index 787925e3d0..1ee5a65a1d 100644 --- a/include/vkd3d.h +++ b/include/vkd3d.h @@ -104,6 +104,7 @@ extern "C" { #define VKD3D_CONFIG_FLAG_DISABLE_NV_DGCC (1ull << 46) #define VKD3D_CONFIG_FLAG_MEMORY_ALLOCATOR_SKIP_IMAGE_HEAP_CLEAR (1ull << 47) #define VKD3D_CONFIG_FLAG_DRIVER_VERSION_SENSITIVE_SHADERS (1ull << 48) +#define VKD3D_CONFIG_FLAG_FORCE_NOCONTRACTION (1ull << 49) struct vkd3d_instance; diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c index 2616c6623a..f65f93b7df 100644 --- a/libs/vkd3d/device.c +++ b/libs/vkd3d/device.c @@ -839,6 +839,7 @@ static void vkd3d_instance_apply_global_shader_quirks(void) static const struct override overrides[] = { { VKD3D_CONFIG_FLAG_FORCE_NO_INVARIANT_POSITION, VKD3D_SHADER_QUIRK_INVARIANT_POSITION, true }, + { VKD3D_CONFIG_FLAG_FORCE_NO_CONTRACTION, VKD3D_SHADER_QUIRK_FORCE_NOCONTRACT_MATH, false }, }; uint64_t eq_test; unsigned int i; @@ -932,6 +933,7 @@ static const struct vkd3d_debug_option vkd3d_config_options[] = {"disable_depth_compression", VKD3D_CONFIG_FLAG_DISABLE_DEPTH_COMPRESSION}, {"disable_color_compression", VKD3D_CONFIG_FLAG_DISABLE_COLOR_COMPRESSION}, {"app_debug_marker_only", VKD3D_CONFIG_FLAG_APP_DEBUG_MARKER_ONLY}, + {"force_nocontraction", VKD3D_CONFIG_FLAG_FORCE_NOCONTRACTION}, }; static void vkd3d_config_flags_init_once(void)