diff --git a/Common/GPU/Vulkan/VulkanContext.cpp b/Common/GPU/Vulkan/VulkanContext.cpp index cf951d89d4..84af4199ed 100644 --- a/Common/GPU/Vulkan/VulkanContext.cpp +++ b/Common/GPU/Vulkan/VulkanContext.cpp @@ -697,6 +697,11 @@ VkResult VulkanContext::CreateDevice() { deviceFeatures_.enabled.standard.shaderCullDistance = deviceFeatures_.available.standard.shaderCullDistance; deviceFeatures_.enabled.standard.geometryShader = deviceFeatures_.available.standard.geometryShader; deviceFeatures_.enabled.standard.sampleRateShading = deviceFeatures_.available.standard.sampleRateShading; + +#ifdef _DEBUG + // For debugging! Although, it might hide problems, so turning it off. Can be useful to rule out classes of issues. + // deviceFeatures_.enabled.standard.robustBufferAccess = deviceFeatures_.available.standard.robustBufferAccess; +#endif deviceFeatures_.enabled.multiview = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES }; if (extensionsLookup_.KHR_multiview) { diff --git a/Common/GPU/Vulkan/VulkanRenderManager.cpp b/Common/GPU/Vulkan/VulkanRenderManager.cpp index 795fbe5c2c..98a797a0be 100644 --- a/Common/GPU/Vulkan/VulkanRenderManager.cpp +++ b/Common/GPU/Vulkan/VulkanRenderManager.cpp @@ -585,7 +585,9 @@ void VulkanRenderManager::PollPresentTiming() { // Poll for information about completed frames. // NOTE: We seem to get the information pretty late! Like after 6 frames, which is quite weird. // Tested on POCO F4. - if (vulkan_->Extensions().GOOGLE_display_timing) { + // TODO: Getting validation errors that this should be called from the thread doing the presenting. + // Probably a fair point. For now, we turn it off. + if (measurePresentTime_ && vulkan_->Extensions().GOOGLE_display_timing) { uint32_t count = 0; vkGetPastPresentationTimingGOOGLE(vulkan_->GetDevice(), vulkan_->GetSwapchain(), &count, nullptr); if (count > 0) { diff --git a/Common/GPU/Vulkan/thin3d_vulkan.cpp b/Common/GPU/Vulkan/thin3d_vulkan.cpp index 87b9aaa96a..f853ecf5d1 100644 --- a/Common/GPU/Vulkan/thin3d_vulkan.cpp +++ b/Common/GPU/Vulkan/thin3d_vulkan.cpp @@ -1543,6 +1543,10 @@ std::vector VKContext::GetFeatureList() const { AddFeature(features, "shaderCullDistance", available.shaderCullDistance, enabled.shaderCullDistance); AddFeature(features, "occlusionQueryPrecise", available.occlusionQueryPrecise, enabled.occlusionQueryPrecise); AddFeature(features, "multiDrawIndirect", available.multiDrawIndirect, enabled.multiDrawIndirect); + AddFeature(features, "robustBufferAccess", available.robustBufferAccess, enabled.robustBufferAccess); + AddFeature(features, "fullDrawIndexUint32", available.fullDrawIndexUint32, enabled.fullDrawIndexUint32); + AddFeature(features, "fragmentStoresAndAtomics", available.fragmentStoresAndAtomics, enabled.fragmentStoresAndAtomics); + AddFeature(features, "shaderInt16", available.shaderInt16, enabled.shaderInt16); AddFeature(features, "multiview", vulkan_->GetDeviceFeatures().available.multiview.multiview, vulkan_->GetDeviceFeatures().enabled.multiview.multiview); AddFeature(features, "multiviewGeometryShader", vulkan_->GetDeviceFeatures().available.multiview.multiviewGeometryShader, vulkan_->GetDeviceFeatures().enabled.multiview.multiviewGeometryShader);