mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-20 19:54:19 +01:00
[dxvk] Enable VK_NV_raw_access_chains if available
This commit is contained in:
parent
77c7396ee1
commit
c677ba9b3e
@ -415,6 +415,10 @@ namespace dxvk {
|
||||
enabledFeatures.khrPresentWait.presentWait = VK_FALSE;
|
||||
}
|
||||
|
||||
// Enable raw access chains for shader backends
|
||||
enabledFeatures.nvRawAccessChains.shaderRawAccessChains =
|
||||
m_deviceFeatures.nvRawAccessChains.shaderRawAccessChains;
|
||||
|
||||
// Create pNext chain for additional device features
|
||||
initFeatureChain(enabledFeatures, devExtensions, instance->extensions());
|
||||
|
||||
@ -606,6 +610,10 @@ namespace dxvk {
|
||||
enabledFeatures.khrPresentWait = *reinterpret_cast<const VkPhysicalDevicePresentWaitFeaturesKHR*>(f);
|
||||
break;
|
||||
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV:
|
||||
enabledFeatures.nvRawAccessChains = *reinterpret_cast<const VkPhysicalDeviceRawAccessChainsFeaturesNV*>(f);
|
||||
break;
|
||||
|
||||
default:
|
||||
// Ignore any unknown feature structs
|
||||
break;
|
||||
@ -927,6 +935,11 @@ namespace dxvk {
|
||||
m_deviceFeatures.khrPresentWait.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.khrPresentWait);
|
||||
}
|
||||
|
||||
if (m_deviceExtensions.supports(VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME)) {
|
||||
m_deviceFeatures.nvRawAccessChains.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV;
|
||||
m_deviceFeatures.nvRawAccessChains.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.nvRawAccessChains);
|
||||
}
|
||||
|
||||
if (m_deviceExtensions.supports(VK_NVX_BINARY_IMPORT_EXTENSION_NAME))
|
||||
m_deviceFeatures.nvxBinaryImport = VK_TRUE;
|
||||
|
||||
@ -994,6 +1007,7 @@ namespace dxvk {
|
||||
&devExtensions.khrPresentWait,
|
||||
&devExtensions.khrSwapchain,
|
||||
&devExtensions.khrWin32KeyedMutex,
|
||||
&devExtensions.nvRawAccessChains,
|
||||
&devExtensions.nvxBinaryImport,
|
||||
&devExtensions.nvxImageViewHandle,
|
||||
}};
|
||||
@ -1133,6 +1147,11 @@ namespace dxvk {
|
||||
enabledFeatures.khrPresentWait.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.khrPresentWait);
|
||||
}
|
||||
|
||||
if (devExtensions.nvRawAccessChains) {
|
||||
enabledFeatures.nvRawAccessChains.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV;
|
||||
enabledFeatures.nvRawAccessChains.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.nvRawAccessChains);
|
||||
}
|
||||
|
||||
if (devExtensions.nvxBinaryImport)
|
||||
enabledFeatures.nvxBinaryImport = VK_TRUE;
|
||||
|
||||
@ -1279,6 +1298,8 @@ namespace dxvk {
|
||||
"\n presentId : ", features.khrPresentId.presentId ? "1" : "0",
|
||||
"\n", VK_KHR_PRESENT_WAIT_EXTENSION_NAME,
|
||||
"\n presentWait : ", features.khrPresentWait.presentWait ? "1" : "0",
|
||||
"\n", VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME,
|
||||
"\n shaderRawAccessChains : ", features.nvRawAccessChains.shaderRawAccessChains ? "1" : "0",
|
||||
"\n", VK_NVX_BINARY_IMPORT_EXTENSION_NAME,
|
||||
"\n extension supported : ", features.nvxBinaryImport ? "1" : "0",
|
||||
"\n", VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME,
|
||||
|
@ -68,6 +68,7 @@ namespace dxvk {
|
||||
VkPhysicalDeviceMaintenance5FeaturesKHR khrMaintenance5;
|
||||
VkPhysicalDevicePresentIdFeaturesKHR khrPresentId;
|
||||
VkPhysicalDevicePresentWaitFeaturesKHR khrPresentWait;
|
||||
VkPhysicalDeviceRawAccessChainsFeaturesNV nvRawAccessChains;
|
||||
VkBool32 nvxBinaryImport;
|
||||
VkBool32 nvxImageViewHandle;
|
||||
VkBool32 khrWin32KeyedMutex;
|
||||
|
@ -325,6 +325,7 @@ namespace dxvk {
|
||||
DxvkExt khrPresentWait = { VK_KHR_PRESENT_WAIT_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||
DxvkExt khrSwapchain = { VK_KHR_SWAPCHAIN_EXTENSION_NAME, DxvkExtMode::Required };
|
||||
DxvkExt khrWin32KeyedMutex = { VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||
DxvkExt nvRawAccessChains = { VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||
DxvkExt nvxBinaryImport = { VK_NVX_BINARY_IMPORT_EXTENSION_NAME, DxvkExtMode::Disabled };
|
||||
DxvkExt nvxImageViewHandle = { VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME, DxvkExtMode::Disabled };
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user