diff --git a/include/vkd3d.h b/include/vkd3d.h index 15088d6f..ab96ef8c 100644 --- a/include/vkd3d.h +++ b/include/vkd3d.h @@ -90,6 +90,7 @@ extern "C" { #define VKD3D_CONFIG_FLAG_FORCE_RAW_VA_CBV (1ull << 28) #define VKD3D_CONFIG_FLAG_ZERO_MEMORY_WORKAROUNDS_COMMITTED_BUFFER_UAV (1ull << 29) #define VKD3D_CONFIG_FLAG_ALLOW_SBT_COLLECTION (1ull << 30) +#define VKD3D_CONFIG_FLAG_FORCE_NATIVE_FP16 (1ull << 31) typedef HRESULT (*PFN_vkd3d_signal_event)(HANDLE event); diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c index 3d721b84..00535346 100644 --- a/libs/vkd3d/device.c +++ b/libs/vkd3d/device.c @@ -532,7 +532,8 @@ static const struct vkd3d_instance_application_meta application_override[] = { /* Resident Evil: Village (1196590). * Game relies on mesh + sampler feedback to be exposed to use DXR. * Likely used as a proxy for Turing+ to avoid potential software fallbacks on Pascal. */ - { VKD3D_STRING_COMPARE_EXACT, "re8.exe", 0, 0, VKD3D_APPLICATION_FEATURE_OVERRIDE_PROMOTE_DXR_TO_ULTIMATE }, + { VKD3D_STRING_COMPARE_EXACT, "re8.exe", + VKD3D_CONFIG_FLAG_FORCE_NATIVE_FP16, 0, VKD3D_APPLICATION_FEATURE_OVERRIDE_PROMOTE_DXR_TO_ULTIMATE }, { VKD3D_STRING_COMPARE_NEVER, NULL, 0, 0 } }; @@ -6152,7 +6153,8 @@ static void vkd3d_init_shader_extensions(struct d3d12_device *device) } if (device->d3d12_caps.options4.Native16BitShaderOpsSupported && - device->device_info.driver_properties.driverID == VK_DRIVER_ID_MESA_RADV) + (device->device_info.driver_properties.driverID == VK_DRIVER_ID_MESA_RADV || + (vkd3d_config_flags & VKD3D_CONFIG_FLAG_FORCE_NATIVE_FP16))) { /* Native FP16 is buggy on NV for now. */ device->vk_info.shader_extensions[device->vk_info.shader_extension_count++] =