diff --git a/renderdoc/driver/vulkan/vk_common.cpp b/renderdoc/driver/vulkan/vk_common.cpp index 9f830b949..bef90443d 100644 --- a/renderdoc/driver/vulkan/vk_common.cpp +++ b/renderdoc/driver/vulkan/vk_common.cpp @@ -217,6 +217,15 @@ void GPUBuffer::Create(WrappedVulkan *driver, VkDevice dev, VkDeviceSize size, u else allocInfo.memoryTypeIndex = driver->GetUploadMemoryIndex(mrq.memoryTypeBits); + bool useBufferAddressKHR = driver->GetExtensions(NULL).ext_KHR_buffer_device_address; + + VkMemoryAllocateFlagsInfo memFlags = {VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO}; + if(useBufferAddressKHR && (flags & eGPUBufferAddressable)) + { + allocInfo.pNext = &memFlags; + memFlags.flags = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT; + } + vkr = driver->vkAllocateMemory(dev, &allocInfo, NULL, &mem); RDCASSERTEQUAL(vkr, VK_SUCCESS); diff --git a/renderdoc/driver/vulkan/vk_core.h b/renderdoc/driver/vulkan/vk_core.h index 9eb955f18..e81c314b8 100644 --- a/renderdoc/driver/vulkan/vk_core.h +++ b/renderdoc/driver/vulkan/vk_core.h @@ -386,11 +386,6 @@ private: InstanceDeviceInfo m_EnabledExtensions; - const InstanceDeviceInfo &GetExtensions(VkResourceRecord *record) const - { - return record ? *record->instDevInfo : m_EnabledExtensions; - } - // the instance corresponding to this WrappedVulkan VkInstance m_Instance; // the instance's dbg msg callback handle @@ -936,6 +931,11 @@ public: APIProperties APIProps; + const InstanceDeviceInfo &GetExtensions(VkResourceRecord *record) const + { + return record ? *record->instDevInfo : m_EnabledExtensions; + } + static rdcstr GetChunkName(uint32_t idx); VulkanResourceManager *GetResourceManager() { return m_ResourceManager; } VulkanDebugManager *GetDebugManager() { return m_DebugManager; }