From f21c02caef0d7190c085c2c910c8f20155baa683 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Wed, 3 Jul 2019 10:59:48 +0200 Subject: [PATCH] [dxvk] Add support for passive device extensions These extensions only affect physical device functionality and do not have to be enabled during device creation. --- src/dxvk/dxvk_extensions.cpp | 21 ++++++++++++--------- src/dxvk/dxvk_extensions.h | 1 + 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/dxvk/dxvk_extensions.cpp b/src/dxvk/dxvk_extensions.cpp index 5171019b..7a719ac3 100644 --- a/src/dxvk/dxvk_extensions.cpp +++ b/src/dxvk/dxvk_extensions.cpp @@ -38,17 +38,20 @@ namespace dxvk { for (uint32_t i = 0; i < numExtensions; i++) { DxvkExt* ext = ppExtensions[i]; - if (ext->mode() != DxvkExtMode::Disabled) { - uint32_t revision = supports(ext->name()); + if (ext->mode() == DxvkExtMode::Disabled) + continue; + + uint32_t revision = supports(ext->name()); - if (revision != 0) { + if (revision) { + if (ext->mode() != DxvkExtMode::Passive) nameSet.add(ext->name()); - ext->enable(revision); - } else if (ext->mode() == DxvkExtMode::Required) { - Logger::info(str::format( - "Required Vulkan extension ", ext->name(), " not supported")); - allRequiredEnabled = false; - } + + ext->enable(revision); + } else if (ext->mode() == DxvkExtMode::Required) { + Logger::info(str::format("Required Vulkan extension ", ext->name(), " not supported")); + allRequiredEnabled = false; + continue; } } diff --git a/src/dxvk/dxvk_extensions.h b/src/dxvk/dxvk_extensions.h index a3825424..9d143c47 100644 --- a/src/dxvk/dxvk_extensions.h +++ b/src/dxvk/dxvk_extensions.h @@ -17,6 +17,7 @@ namespace dxvk { Disabled, Optional, Required, + Passive, };