vkd3d: Do not enable VK_KHR_dedicated_allocation.

Core in 1.1.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
This commit is contained in:
Philip Rebohle 2020-05-29 16:35:21 +02:00 committed by Hans-Kristian Arntzen
parent 45109686be
commit e6857939e7
4 changed files with 39 additions and 60 deletions

View File

@ -138,9 +138,7 @@ static const struct vkd3d_optional_extension_info optional_device_extensions[] =
{
/* KHR extensions */
VK_EXTENSION(KHR_BUFFER_DEVICE_ADDRESS, KHR_buffer_device_address),
VK_EXTENSION(KHR_DEDICATED_ALLOCATION, KHR_dedicated_allocation),
VK_EXTENSION(KHR_DRAW_INDIRECT_COUNT, KHR_draw_indirect_count),
VK_EXTENSION(KHR_GET_MEMORY_REQUIREMENTS_2, KHR_get_memory_requirements2),
VK_EXTENSION(KHR_IMAGE_FORMAT_LIST, KHR_image_format_list),
VK_EXTENSION(KHR_PUSH_DESCRIPTOR, KHR_push_descriptor),
VK_EXTENSION(KHR_TIMELINE_SEMAPHORE, KHR_timeline_semaphore),

View File

@ -171,34 +171,26 @@ HRESULT vkd3d_allocate_buffer_memory(struct d3d12_device *device, VkBuffer vk_bu
memory_requirements = &memory_requirements2.memoryRequirements;
if (heap_flags == D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS &&
device->vk_info.KHR_dedicated_allocation)
info.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2;
info.pNext = NULL;
info.buffer = vk_buffer;
dedicated_requirements.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS;
dedicated_requirements.pNext = NULL;
memory_requirements2.sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;
memory_requirements2.pNext = &dedicated_requirements;
VK_CALL(vkGetBufferMemoryRequirements2(device->vk_device, &info, &memory_requirements2));
if (heap_flags == D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS && dedicated_requirements.prefersDedicatedAllocation)
{
info.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2;
info.pNext = NULL;
info.buffer = vk_buffer;
dedicated_allocation = &dedicated_info;
dedicated_requirements.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS;
dedicated_requirements.pNext = NULL;
memory_requirements2.sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;
memory_requirements2.pNext = &dedicated_requirements;
VK_CALL(vkGetBufferMemoryRequirements2KHR(device->vk_device, &info, &memory_requirements2));
if (dedicated_requirements.prefersDedicatedAllocation)
{
dedicated_allocation = &dedicated_info;
dedicated_info.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO;
dedicated_info.pNext = NULL;
dedicated_info.image = VK_NULL_HANDLE;
dedicated_info.buffer = vk_buffer;
}
}
else
{
VK_CALL(vkGetBufferMemoryRequirements(device->vk_device, vk_buffer, memory_requirements));
dedicated_info.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO;
dedicated_info.pNext = NULL;
dedicated_info.image = VK_NULL_HANDLE;
dedicated_info.buffer = vk_buffer;
}
if (FAILED(hr = vkd3d_allocate_device_memory(device, heap_properties, heap_flags,
@ -234,33 +226,26 @@ static HRESULT vkd3d_allocate_image_memory(struct d3d12_device *device, VkImage
memory_requirements = &memory_requirements2.memoryRequirements;
if (device->vk_info.KHR_dedicated_allocation)
info.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2;
info.pNext = NULL;
info.image = vk_image;
dedicated_requirements.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS;
dedicated_requirements.pNext = NULL;
memory_requirements2.sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;
memory_requirements2.pNext = &dedicated_requirements;
VK_CALL(vkGetImageMemoryRequirements2(device->vk_device, &info, &memory_requirements2));
if (dedicated_requirements.prefersDedicatedAllocation)
{
info.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2;
info.pNext = NULL;
info.image = vk_image;
dedicated_allocation = &dedicated_info;
dedicated_requirements.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS;
dedicated_requirements.pNext = NULL;
memory_requirements2.sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;
memory_requirements2.pNext = &dedicated_requirements;
VK_CALL(vkGetImageMemoryRequirements2KHR(device->vk_device, &info, &memory_requirements2));
if (dedicated_requirements.prefersDedicatedAllocation)
{
dedicated_allocation = &dedicated_info;
dedicated_info.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO;
dedicated_info.pNext = NULL;
dedicated_info.image = vk_image;
dedicated_info.buffer = VK_NULL_HANDLE;
}
}
else
{
VK_CALL(vkGetImageMemoryRequirements(device->vk_device, vk_image, memory_requirements));
dedicated_info.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO;
dedicated_info.pNext = NULL;
dedicated_info.image = vk_image;
dedicated_info.buffer = VK_NULL_HANDLE;
}
if (FAILED(hr = vkd3d_allocate_device_memory(device, heap_properties, heap_flags,

View File

@ -112,9 +112,7 @@ struct vkd3d_vulkan_info
/* KHR device extensions */
bool KHR_buffer_device_address;
bool KHR_dedicated_allocation;
bool KHR_draw_indirect_count;
bool KHR_get_memory_requirements2;
bool KHR_image_format_list;
bool KHR_push_descriptor;
bool KHR_timeline_semaphore;

View File

@ -151,13 +151,16 @@ VK_DEVICE_PFN(vkFreeCommandBuffers)
VK_DEVICE_PFN(vkFreeDescriptorSets)
VK_DEVICE_PFN(vkFreeMemory)
VK_DEVICE_PFN(vkGetBufferMemoryRequirements)
VK_DEVICE_PFN(vkGetBufferMemoryRequirements2)
VK_DEVICE_PFN(vkGetDescriptorSetLayoutSupport)
VK_DEVICE_PFN(vkGetDeviceMemoryCommitment)
VK_DEVICE_PFN(vkGetDeviceQueue)
VK_DEVICE_PFN(vkGetEventStatus)
VK_DEVICE_PFN(vkGetFenceStatus)
VK_DEVICE_PFN(vkGetImageMemoryRequirements)
VK_DEVICE_PFN(vkGetImageMemoryRequirements2)
VK_DEVICE_PFN(vkGetImageSparseMemoryRequirements)
VK_DEVICE_PFN(vkGetImageSparseMemoryRequirements2)
VK_DEVICE_PFN(vkGetImageSubresourceLayout)
VK_DEVICE_PFN(vkGetPipelineCacheData)
VK_DEVICE_PFN(vkGetQueryPoolResults)
@ -192,11 +195,6 @@ VK_DEVICE_EXT_PFN(vkSignalSemaphoreKHR)
VK_DEVICE_EXT_PFN(vkCmdDrawIndirectCountKHR)
VK_DEVICE_EXT_PFN(vkCmdDrawIndexedIndirectCountKHR)
/* VK_KHR_get_memory_requirements2 */
VK_DEVICE_EXT_PFN(vkGetBufferMemoryRequirements2KHR)
VK_DEVICE_EXT_PFN(vkGetImageMemoryRequirements2KHR)
VK_DEVICE_EXT_PFN(vkGetImageSparseMemoryRequirements2KHR)
/* VK_KHR_push_descriptor */
VK_DEVICE_EXT_PFN(vkCmdPushDescriptorSetKHR)