Merge "Merge "Respect the hardware buffer usage flags set by the consumer." into qt-dev am: 66846fe825" into qt-dev-plus-aosp
This commit is contained in:
committed by
Android (Google) Code Review
commit
c8659c8b9d
@@ -266,49 +266,48 @@ VulkanSurface* VulkanSurface::Create(ANativeWindow* window, ColorMode colorMode,
|
|||||||
vkPixelFormat = VK_FORMAT_R16G16B16A16_SFLOAT;
|
vkPixelFormat = VK_FORMAT_R16G16B16A16_SFLOAT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nullptr != vkManager.mGetPhysicalDeviceImageFormatProperties2) {
|
LOG_ALWAYS_FATAL_IF(nullptr == vkManager.mGetPhysicalDeviceImageFormatProperties2,
|
||||||
VkPhysicalDeviceExternalImageFormatInfo externalImageFormatInfo;
|
"vkGetPhysicalDeviceImageFormatProperties2 is missing");
|
||||||
externalImageFormatInfo.sType =
|
VkPhysicalDeviceExternalImageFormatInfo externalImageFormatInfo;
|
||||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO;
|
externalImageFormatInfo.sType =
|
||||||
externalImageFormatInfo.pNext = nullptr;
|
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO;
|
||||||
externalImageFormatInfo.handleType =
|
externalImageFormatInfo.pNext = nullptr;
|
||||||
VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID;
|
externalImageFormatInfo.handleType =
|
||||||
|
VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID;
|
||||||
|
|
||||||
VkPhysicalDeviceImageFormatInfo2 imageFormatInfo;
|
VkPhysicalDeviceImageFormatInfo2 imageFormatInfo;
|
||||||
imageFormatInfo.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2;
|
imageFormatInfo.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2;
|
||||||
imageFormatInfo.pNext = &externalImageFormatInfo;
|
imageFormatInfo.pNext = &externalImageFormatInfo;
|
||||||
imageFormatInfo.format = vkPixelFormat;
|
imageFormatInfo.format = vkPixelFormat;
|
||||||
imageFormatInfo.type = VK_IMAGE_TYPE_2D;
|
imageFormatInfo.type = VK_IMAGE_TYPE_2D;
|
||||||
imageFormatInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
|
imageFormatInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
|
||||||
imageFormatInfo.usage = usageFlags;
|
imageFormatInfo.usage = usageFlags;
|
||||||
imageFormatInfo.flags = 0;
|
imageFormatInfo.flags = 0;
|
||||||
|
|
||||||
VkAndroidHardwareBufferUsageANDROID hwbUsage;
|
VkAndroidHardwareBufferUsageANDROID hwbUsage;
|
||||||
hwbUsage.sType = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID;
|
hwbUsage.sType = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID;
|
||||||
hwbUsage.pNext = nullptr;
|
hwbUsage.pNext = nullptr;
|
||||||
|
|
||||||
VkImageFormatProperties2 imgFormProps;
|
VkImageFormatProperties2 imgFormProps;
|
||||||
imgFormProps.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2;
|
imgFormProps.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2;
|
||||||
imgFormProps.pNext = &hwbUsage;
|
imgFormProps.pNext = &hwbUsage;
|
||||||
|
|
||||||
res = vkManager.mGetPhysicalDeviceImageFormatProperties2(vkManager.mPhysicalDevice,
|
res = vkManager.mGetPhysicalDeviceImageFormatProperties2(vkManager.mPhysicalDevice,
|
||||||
&imageFormatInfo, &imgFormProps);
|
&imageFormatInfo, &imgFormProps);
|
||||||
if (VK_SUCCESS != res) {
|
if (VK_SUCCESS != res) {
|
||||||
ALOGE("Failed to query GetPhysicalDeviceImageFormatProperties2");
|
ALOGE("Failed to query GetPhysicalDeviceImageFormatProperties2");
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
windowInfo.windowUsageFlags = hwbUsage.androidHardwareBufferUsage;
|
|
||||||
if (vkManager.isQualcomm()) {
|
|
||||||
windowInfo.windowUsageFlags =
|
|
||||||
windowInfo.windowUsageFlags | AHARDWAREBUFFER_USAGE_VENDOR_0;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
ALOGE("VulkanSurface::Create() vkmGetPhysicalDeviceImageFormatProperties2 is missing");
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint64_t consumerUsage;
|
||||||
|
native_window_get_consumer_usage(window, &consumerUsage);
|
||||||
|
windowInfo.windowUsageFlags = consumerUsage | hwbUsage.androidHardwareBufferUsage;
|
||||||
|
|
||||||
|
if (vkManager.isQualcomm()) {
|
||||||
|
windowInfo.windowUsageFlags =
|
||||||
|
windowInfo.windowUsageFlags | AHARDWAREBUFFER_USAGE_VENDOR_0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now we attempt to modify the window!
|
* Now we attempt to modify the window!
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user