diff options
author | 2024-08-30 22:51:47 +0000 | |
---|---|---|
committer | 2024-08-30 22:51:47 +0000 | |
commit | 16f184b3e52f91ee09cdc981a33dd600ac4a69db (patch) | |
tree | df8e73ce2f9baab757465648b759835f2ee213b0 /vulkan/libvulkan/driver.cpp | |
parent | 48604fb057c83150a9f21af81eb970cf9ed70af7 (diff) | |
parent | ea32184c013e10610a74c9d2a1727ea77ac1bada (diff) |
Merge "Implement the VK_KHR_swapchain_mutable_format device extension in the vulkan loader" into main
Diffstat (limited to 'vulkan/libvulkan/driver.cpp')
-rw-r--r-- | vulkan/libvulkan/driver.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/vulkan/libvulkan/driver.cpp b/vulkan/libvulkan/driver.cpp index ef213f0c7a..01436db4ae 100644 --- a/vulkan/libvulkan/driver.cpp +++ b/vulkan/libvulkan/driver.cpp @@ -41,10 +41,12 @@ #include <new> #include <vector> +#include <com_android_graphics_libvulkan_flags.h> #include "stubhal.h" using namespace android::hardware::configstore; using namespace android::hardware::configstore::V1_0; +using namespace com::android::graphics::libvulkan; extern "C" android_namespace_t* android_get_exported_namespace(const char*); @@ -688,6 +690,7 @@ void CreateInfoWrapper::FilterExtension(const char* name) { case ProcHook::KHR_incremental_present: case ProcHook::KHR_shared_presentable_image: case ProcHook::KHR_swapchain: + case ProcHook::KHR_swapchain_mutable_format: case ProcHook::EXT_hdr_metadata: case ProcHook::EXT_swapchain_maintenance1: case ProcHook::ANDROID_external_memory_android_hardware_buffer: @@ -740,6 +743,7 @@ void CreateInfoWrapper::FilterExtension(const char* name) { break; case ProcHook::ANDROID_external_memory_android_hardware_buffer: case ProcHook::KHR_external_fence_fd: + case ProcHook::KHR_swapchain_mutable_format: case ProcHook::EXTENSION_UNKNOWN: // Extensions we don't need to do anything about at this level break; @@ -1251,6 +1255,15 @@ VkResult EnumerateDeviceExtensionProperties( VK_EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION}); } + VkPhysicalDeviceProperties pDeviceProperties; + data.driver.GetPhysicalDeviceProperties(physicalDevice, &pDeviceProperties); + if (flags::swapchain_mutable_format_ext() && + pDeviceProperties.apiVersion >= VK_API_VERSION_1_2) { + loader_extensions.push_back( + {VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME, + VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION}); + } + // enumerate our extensions first if (!pLayerName && pProperties) { uint32_t count = std::min( |