diff --git a/system/vulkan_enc/AndroidHardwareBuffer.cpp b/system/vulkan_enc/AndroidHardwareBuffer.cpp index 516791bd60e9c0c9ecdd1cb1a344bc2fb0e5abc2..6bc1484f2f5079af09b242311b63799e82ba3998 100644 --- a/system/vulkan_enc/AndroidHardwareBuffer.cpp +++ b/system/vulkan_enc/AndroidHardwareBuffer.cpp @@ -101,7 +101,10 @@ VkResult getAndroidHardwareBufferPropertiesANDROID( ahbFormatProps->samplerYcbcrConversionComponents.b = VK_COMPONENT_SWIZZLE_IDENTITY; ahbFormatProps->samplerYcbcrConversionComponents.a = VK_COMPONENT_SWIZZLE_IDENTITY; - ahbFormatProps->suggestedYcbcrModel = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601; + ahbFormatProps->suggestedYcbcrModel = + android_format_is_yuv(desc.format) ? + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 : + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY; ahbFormatProps->suggestedYcbcrRange = VK_SAMPLER_YCBCR_RANGE_ITU_FULL; ahbFormatProps->suggestedXChromaOffset = VK_CHROMA_LOCATION_MIDPOINT; diff --git a/system/vulkan_enc/vk_format_info.h b/system/vulkan_enc/vk_format_info.h index 0337f95a088b79428bab3bda9a31173b9eb9e009..c70f45ff72a5651d3811433eafdb235ab836f345 100644 --- a/system/vulkan_enc/vk_format_info.h +++ b/system/vulkan_enc/vk_format_info.h @@ -78,6 +78,18 @@ android_format_from_vk(VkFormat vk_format) } } +static inline bool +android_format_is_yuv(unsigned android_format) +{ + switch (android_format) { + case HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL: + return true; + + default: + return false; + } +} + static inline VkImageAspectFlags vk_format_aspects(VkFormat format) {