1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-03-28 02:19:26 +01:00

[dxvk] Always enable and require maintenance4 feature

This commit is contained in:
Philip Rebohle 2025-03-23 22:08:02 +01:00
parent 1be2354e04
commit a8ad410c83
2 changed files with 9 additions and 37 deletions

View File

@ -371,11 +371,7 @@ namespace dxvk {
// Core features that we're relying on in various places
enabledFeatures.vk13.synchronization2 = VK_TRUE;
enabledFeatures.vk13.dynamicRendering = VK_TRUE;
// Maintenance4 may cause performance problems on amdvlk in some cases
if (m_deviceInfo.vk12.driverID != VK_DRIVER_ID_AMD_OPEN_SOURCE
&& m_deviceInfo.vk12.driverID != VK_DRIVER_ID_AMD_PROPRIETARY)
enabledFeatures.vk13.maintenance4 = VK_TRUE;
enabledFeatures.vk13.maintenance4 = VK_TRUE;
// We expose depth clip rather than depth clamp to client APIs
enabledFeatures.extDepthClipEnable.depthClipEnable =

View File

@ -2012,23 +2012,11 @@ namespace dxvk {
VkMemoryRequirements2& memoryRequirements) const {
auto vk = m_device->vkd();
if (m_device->features().vk13.maintenance4) {
VkDeviceBufferMemoryRequirements info = { VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS };
info.pCreateInfo = &createInfo;
VkDeviceBufferMemoryRequirements info = { VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS };
info.pCreateInfo = &createInfo;
vk->vkGetDeviceBufferMemoryRequirements(vk->device(), &info, &memoryRequirements);
return true;
} else {
VkBufferMemoryRequirementsInfo2 info = { VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 };
VkResult vr = vk->vkCreateBuffer(vk->device(), &createInfo, nullptr, &info.buffer);
if (vr != VK_SUCCESS)
return false;
vk->vkGetBufferMemoryRequirements2(vk->device(), &info, &memoryRequirements);
vk->vkDestroyBuffer(vk->device(), info.buffer, nullptr);
return true;
}
vk->vkGetDeviceBufferMemoryRequirements(vk->device(), &info, &memoryRequirements);
return true;
}
@ -2037,23 +2025,11 @@ namespace dxvk {
VkMemoryRequirements2& memoryRequirements) const {
auto vk = m_device->vkd();
if (m_device->features().vk13.maintenance4) {
VkDeviceImageMemoryRequirements info = { VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS };
info.pCreateInfo = &createInfo;
VkDeviceImageMemoryRequirements info = { VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS };
info.pCreateInfo = &createInfo;
vk->vkGetDeviceImageMemoryRequirements(vk->device(), &info, &memoryRequirements);
return true;
} else {
VkImageMemoryRequirementsInfo2 info = { VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 };
VkResult vr = vk->vkCreateImage(vk->device(), &createInfo, nullptr, &info.image);
if (vr != VK_SUCCESS)
return false;
vk->vkGetImageMemoryRequirements2(vk->device(), &info, &memoryRequirements);
vk->vkDestroyImage(vk->device(), info.image, nullptr);
return true;
}
vk->vkGetDeviceImageMemoryRequirements(vk->device(), &info, &memoryRequirements);
return true;
}