Merge "Only enable the VK extensions we need" into udc-dev am: 6bb2ae8bd2
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22574359 Change-Id: I653cacc1ec6ce6a6885a47ff8100e46b9cae4df8 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -42,6 +42,36 @@ namespace android {
|
|||||||
namespace uirenderer {
|
namespace uirenderer {
|
||||||
namespace renderthread {
|
namespace renderthread {
|
||||||
|
|
||||||
|
static std::array<std::string_view, 18> sEnableExtensions{
|
||||||
|
VK_KHR_BIND_MEMORY_2_EXTENSION_NAME,
|
||||||
|
VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME,
|
||||||
|
VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
|
||||||
|
VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME,
|
||||||
|
VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME,
|
||||||
|
VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME,
|
||||||
|
VK_KHR_MAINTENANCE1_EXTENSION_NAME,
|
||||||
|
VK_KHR_MAINTENANCE2_EXTENSION_NAME,
|
||||||
|
VK_KHR_MAINTENANCE3_EXTENSION_NAME,
|
||||||
|
VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME,
|
||||||
|
VK_KHR_SURFACE_EXTENSION_NAME,
|
||||||
|
VK_KHR_SWAPCHAIN_EXTENSION_NAME,
|
||||||
|
VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME,
|
||||||
|
VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME,
|
||||||
|
VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME,
|
||||||
|
VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME,
|
||||||
|
VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME,
|
||||||
|
VK_KHR_ANDROID_SURFACE_EXTENSION_NAME,
|
||||||
|
};
|
||||||
|
|
||||||
|
static bool shouldEnableExtension(const std::string_view& extension) {
|
||||||
|
for (const auto& it : sEnableExtensions) {
|
||||||
|
if (it == extension) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static void free_features_extensions_structs(const VkPhysicalDeviceFeatures2& features) {
|
static void free_features_extensions_structs(const VkPhysicalDeviceFeatures2& features) {
|
||||||
// All Vulkan structs that could be part of the features chain will start with the
|
// All Vulkan structs that could be part of the features chain will start with the
|
||||||
// structure type followed by the pNext pointer. We cast to the CommonVulkanHeader
|
// structure type followed by the pNext pointer. We cast to the CommonVulkanHeader
|
||||||
@@ -139,6 +169,11 @@ void VulkanManager::setupDevice(GrVkExtensions& grExtensions, VkPhysicalDeviceFe
|
|||||||
bool hasKHRSurfaceExtension = false;
|
bool hasKHRSurfaceExtension = false;
|
||||||
bool hasKHRAndroidSurfaceExtension = false;
|
bool hasKHRAndroidSurfaceExtension = false;
|
||||||
for (const VkExtensionProperties& extension : mInstanceExtensionsOwner) {
|
for (const VkExtensionProperties& extension : mInstanceExtensionsOwner) {
|
||||||
|
if (!shouldEnableExtension(extension.extensionName)) {
|
||||||
|
ALOGV("Not enabling instance extension %s", extension.extensionName);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ALOGV("Enabling instance extension %s", extension.extensionName);
|
||||||
mInstanceExtensions.push_back(extension.extensionName);
|
mInstanceExtensions.push_back(extension.extensionName);
|
||||||
if (!strcmp(extension.extensionName, VK_KHR_SURFACE_EXTENSION_NAME)) {
|
if (!strcmp(extension.extensionName, VK_KHR_SURFACE_EXTENSION_NAME)) {
|
||||||
hasKHRSurfaceExtension = true;
|
hasKHRSurfaceExtension = true;
|
||||||
@@ -219,6 +254,11 @@ void VulkanManager::setupDevice(GrVkExtensions& grExtensions, VkPhysicalDeviceFe
|
|||||||
LOG_ALWAYS_FATAL_IF(VK_SUCCESS != err);
|
LOG_ALWAYS_FATAL_IF(VK_SUCCESS != err);
|
||||||
bool hasKHRSwapchainExtension = false;
|
bool hasKHRSwapchainExtension = false;
|
||||||
for (const VkExtensionProperties& extension : mDeviceExtensionsOwner) {
|
for (const VkExtensionProperties& extension : mDeviceExtensionsOwner) {
|
||||||
|
if (!shouldEnableExtension(extension.extensionName)) {
|
||||||
|
ALOGV("Not enabling device extension %s", extension.extensionName);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ALOGV("Enabling device extension %s", extension.extensionName);
|
||||||
mDeviceExtensions.push_back(extension.extensionName);
|
mDeviceExtensions.push_back(extension.extensionName);
|
||||||
if (!strcmp(extension.extensionName, VK_KHR_SWAPCHAIN_EXTENSION_NAME)) {
|
if (!strcmp(extension.extensionName, VK_KHR_SWAPCHAIN_EXTENSION_NAME)) {
|
||||||
hasKHRSwapchainExtension = true;
|
hasKHRSwapchainExtension = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user