From 40c3a735a446d117aeff60502e40611238e49938 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 5 Sep 2018 10:54:50 +0100 Subject: [PATCH] Store enabled extensions on replay so we can check for them --- renderdoc/driver/vulkan/vk_core.h | 7 +++++++ renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp | 12 ++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_core.h b/renderdoc/driver/vulkan/vk_core.h index d50fb57c9..45f53147f 100644 --- a/renderdoc/driver/vulkan/vk_core.h +++ b/renderdoc/driver/vulkan/vk_core.h @@ -333,6 +333,13 @@ private: PFN_vkSetDeviceLoaderData m_SetDeviceLoaderData; + InstanceDeviceInfo m_EnabledExtensions; + + const InstanceDeviceInfo &GetExtensions(VkResourceRecord *record) + { + return record ? *record->instDevInfo : m_EnabledExtensions; + } + // the instance corresponding to this WrappedVulkan VkInstance m_Instance; // the instance's dbg msg callback handle diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp index 86cff7fa3..f89e9f38d 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp @@ -283,14 +283,12 @@ ReplayStatus WrappedVulkan::Initialise(VkInitParams ¶ms, uint64_t sectionVer VkResult ret = GetInstanceDispatchTable(NULL)->CreateInstance(&instinfo, NULL, &m_Instance); - InstanceDeviceInfo extInfo; - #undef CheckExt #define CheckExt(name, ver) \ if(!strcmp(instinfo.ppEnabledExtensionNames[i], "VK_" #name) || \ (int)renderdocAppInfo.apiVersion >= ver) \ { \ - extInfo.ext_##name = true; \ + m_EnabledExtensions.ext_##name = true; \ } for(uint32_t i = 0; i < instinfo.enabledExtensionCount; i++) @@ -313,7 +311,7 @@ ReplayStatus WrappedVulkan::Initialise(VkInitParams ¶ms, uint64_t sectionVer AddResource(params.InstanceID, ResourceType::Device, "Instance"); GetReplay()->GetResourceDesc(params.InstanceID).initialisationChunks.clear(); - InitInstanceExtensionTables(m_Instance, &extInfo); + InitInstanceExtensionTables(m_Instance, &m_EnabledExtensions); m_DbgMsgCallback = VK_NULL_HANDLE; m_PhysicalDevice = VK_NULL_HANDLE; @@ -1577,14 +1575,12 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi AddResource(Device, ResourceType::Device, "Device"); DerivedResource(origPhysDevice, Device); - InstanceDeviceInfo extInfo; - #undef CheckExt #define CheckExt(name, ver) \ if(!strcmp(createInfo.ppEnabledExtensionNames[i], "VK_" #name) || \ (int)renderdocAppInfo.apiVersion >= ver) \ { \ - extInfo.ext_##name = true; \ + m_EnabledExtensions.ext_##name = true; \ } for(uint32_t i = 0; i < createInfo.enabledExtensionCount; i++) @@ -1592,7 +1588,7 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi CheckDeviceExts(); } - InitDeviceExtensionTables(device, &extInfo); + InitDeviceExtensionTables(device, &m_EnabledExtensions); RDCASSERT(m_Device == VK_NULL_HANDLE); // MULTIDEVICE