diff --git a/renderdoc/driver/vulkan/vk_core.h b/renderdoc/driver/vulkan/vk_core.h index 6076b4823..51ebd8dcc 100644 --- a/renderdoc/driver/vulkan/vk_core.h +++ b/renderdoc/driver/vulkan/vk_core.h @@ -331,12 +331,12 @@ private: struct PhysicalDeviceData { - PhysicalDeviceData() : readbackMemIndex(0), uploadMemIndex(0), GPULocalMemIndex(0) + PhysicalDeviceData() + : readbackMemIndex(0), uploadMemIndex(0), GPULocalMemIndex(0), props(), driverInfo(props) { fakeMemProps = NULL; memIdxMap = NULL; RDCEraseEl(features); - RDCEraseEl(props); RDCEraseEl(memProps); RDCEraseEl(fmtprops); RDCEraseEl(queueProps); @@ -356,6 +356,7 @@ private: VkPhysicalDeviceMemoryProperties *fakeMemProps; uint32_t *memIdxMap; + VkDriverInfo driverInfo; VkPhysicalDeviceFeatures features; VkPhysicalDeviceProperties props; VkPhysicalDeviceMemoryProperties memProps; @@ -968,7 +969,7 @@ public: const VkPhysicalDeviceFeatures &GetDeviceFeatures() { return m_PhysicalDeviceData.features; } const VkPhysicalDeviceProperties &GetDeviceProps() { return m_PhysicalDeviceData.props; } - VkDriverInfo GetDriverVersion() { return VkDriverInfo(m_PhysicalDeviceData.props); } + VkDriverInfo GetDriverInfo() { return m_PhysicalDeviceData.driverInfo; } // Device initialization IMPLEMENT_FUNCTION_SERIALISED(VkResult, vkCreateInstance, const VkInstanceCreateInfo *pCreateInfo, diff --git a/renderdoc/driver/vulkan/vk_debug.cpp b/renderdoc/driver/vulkan/vk_debug.cpp index 180041658..da73236f6 100644 --- a/renderdoc/driver/vulkan/vk_debug.cpp +++ b/renderdoc/driver/vulkan/vk_debug.cpp @@ -1432,7 +1432,7 @@ void VulkanReplay::CreateResources() AMDCounters *counters = NULL; - GPUVendor vendor = m_pDriver->GetDriverVersion().Vendor(); + GPUVendor vendor = m_pDriver->GetDriverInfo().Vendor(); if(vendor == GPUVendor::AMD) { @@ -2354,7 +2354,7 @@ void VulkanReplay::HistogramMinMax::Init(WrappedVulkan *driver, VkDescriptorPool std::string defines = ""; - if(driver->GetDriverVersion().TexelFetchBrokenDriver()) + if(driver->GetDriverInfo().TexelFetchBrokenDriver()) defines += "#define NO_TEXEL_FETCH\n"; defines += string("#define SHADER_RESTYPE ") + ToStr(t) + "\n"; defines += string("#define UINT_TEX ") + (f == 1 ? "1" : "0") + "\n"; diff --git a/renderdoc/driver/vulkan/vk_rendertexture.cpp b/renderdoc/driver/vulkan/vk_rendertexture.cpp index 36efd06fb..ced56527f 100644 --- a/renderdoc/driver/vulkan/vk_rendertexture.cpp +++ b/renderdoc/driver/vulkan/vk_rendertexture.cpp @@ -555,7 +555,7 @@ bool VulkanReplay::RenderTextureInternal(TextureDisplay cfg, VkRenderPassBeginIn vt->CmdDraw(Unwrap(cmd), 4, 1, 0, 0); - if(m_pDriver->GetDriverVersion().QualcommLeakingUBOOffsets()) + if(m_pDriver->GetDriverInfo().QualcommLeakingUBOOffsets()) { offsets[0] = offsets[1] = 0; vt->CmdBindDescriptorSets(Unwrap(cmd), VK_PIPELINE_BIND_POINT_GRAPHICS, diff --git a/renderdoc/driver/vulkan/vk_replay.cpp b/renderdoc/driver/vulkan/vk_replay.cpp index 29d9fa0aa..39cc07cc9 100644 --- a/renderdoc/driver/vulkan/vk_replay.cpp +++ b/renderdoc/driver/vulkan/vk_replay.cpp @@ -627,7 +627,7 @@ void VulkanReplay::RenderCheckerboard() vt->CmdDraw(Unwrap(cmd), 4, 1, 0, 0); - if(m_pDriver->GetDriverVersion().QualcommLeakingUBOOffsets()) + if(m_pDriver->GetDriverInfo().QualcommLeakingUBOOffsets()) { uboOffs = 0; vt->CmdBindDescriptorSets(Unwrap(cmd), VK_PIPELINE_BIND_POINT_GRAPHICS, diff --git a/renderdoc/driver/vulkan/vk_shader_cache.cpp b/renderdoc/driver/vulkan/vk_shader_cache.cpp index 2f20058d1..75622d6a0 100644 --- a/renderdoc/driver/vulkan/vk_shader_cache.cpp +++ b/renderdoc/driver/vulkan/vk_shader_cache.cpp @@ -128,7 +128,7 @@ VulkanShaderCache::VulkanShaderCache(WrappedVulkan *driver) SetCaching(true); - VkDriverInfo driverVersion = driver->GetDriverVersion(); + VkDriverInfo driverVersion = driver->GetDriverInfo(); const VkPhysicalDeviceFeatures &features = driver->GetDeviceFeatures(); std::vector sources; diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp index abe8f452c..9da7e33b7 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp @@ -1867,6 +1867,8 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi ObjDisp(physicalDevice) ->GetPhysicalDeviceFeatures(Unwrap(physicalDevice), &m_PhysicalDeviceData.features); + m_PhysicalDeviceData.driverInfo = VkDriverInfo(m_PhysicalDeviceData.props); + m_Replay.SetDriverInformation(m_PhysicalDeviceData.props); // MoltenVK reports 0x3fffffff for this limit so just ignore that value if it comes up @@ -1899,7 +1901,7 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi } } - APIProps.vendor = GetDriverVersion().Vendor(); + APIProps.vendor = GetDriverInfo().Vendor(); m_ShaderCache = new VulkanShaderCache(this); @@ -2244,6 +2246,8 @@ VkResult WrappedVulkan::vkCreateDevice(VkPhysicalDevice physicalDevice, ObjDisp(physicalDevice) ->GetPhysicalDeviceFeatures(Unwrap(physicalDevice), &m_PhysicalDeviceData.features); + m_PhysicalDeviceData.driverInfo = VkDriverInfo(m_PhysicalDeviceData.props); + for(int i = VK_FORMAT_BEGIN_RANGE + 1; i < VK_FORMAT_END_RANGE; i++) ObjDisp(physicalDevice) ->GetPhysicalDeviceFormatProperties(Unwrap(physicalDevice), VkFormat(i),