OSDN Git Service

minigbm: Add support for RGBA_1010102 and RGBA_FP16
authorNataraj Deshpande <nataraj.deshpande@intel.com>
Wed, 21 Aug 2019 22:19:46 +0000 (15:19 -0700)
committerchrome-bot <chrome-bot@chromium.org>
Tue, 17 Sep 2019 23:59:30 +0000 (16:59 -0700)
The CL adds support for HAL_PIXEL_FORMAT_RGBA_1010102 and
HAL_PIXEL_FORMAT_RGBA_FP16 in order to supplement Android
framework's VkFormats: VK_FORMAT_A2B10G10R10_UNORM_PACK32
and VK_FORMAT_R16G16B16A16_SFLOAT.

Fixes following dEQP failures on eve-arcnext.
dEQP-VK.wsi.android.swapchain.create#image_format
dEQP-VK.wsi.android.swapchain.simulate_oom#image_format
dEQP-VK.wsi.android.colorspace#basic
dEQP-VK.wsi.android.incremental_present.*

BUG=b:139890132
TEST=Run dEQP-VK.wsi.android.* tests on eve-arcnext.

Change-Id: I0b52d9f970d34fe69e1b8c31a1f096365a74d8ec
Signed-off-by: Nataraj Deshpande <nataraj.deshpande@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/1769261
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
cros_gralloc/cros_gralloc_helpers.cc
helpers.c
i915.c

index 12daf4b..73e59cb 100644 (file)
@@ -39,6 +39,12 @@ uint32_t cros_gralloc_convert_format(int format)
         */
        case HAL_PIXEL_FORMAT_BLOB:
                return DRM_FORMAT_R8;
+#if ANDROID_VERSION >= 0x0a00
+       case HAL_PIXEL_FORMAT_RGBA_1010102:
+               return DRM_FORMAT_ABGR2101010;
+       case HAL_PIXEL_FORMAT_RGBA_FP16:
+               return DRM_FORMAT_ABGR16161616F;
+#endif
        }
 
        return DRM_FORMAT_NONE;
index 992eeb7..1f5dfbb 100644 (file)
--- a/helpers.c
+++ b/helpers.c
@@ -54,6 +54,13 @@ static const struct planar_layout packed_4bpp_layout = {
        .bytes_per_pixel = { 4 }
 };
 
+static const struct planar_layout packed_8bpp_layout = {
+       .num_planes = 1,
+       .horizontal_subsampling = { 1 },
+       .vertical_subsampling = { 1 },
+       .bytes_per_pixel = { 8 }
+};
+
 static const struct planar_layout biplanar_yuv_420_layout = {
        .num_planes = 2,
        .horizontal_subsampling = { 1, 2 },
@@ -146,6 +153,9 @@ static const struct planar_layout *layout_from_format(uint32_t format)
        case DRM_FORMAT_XRGB8888:
                return &packed_4bpp_layout;
 
+       case DRM_FORMAT_ABGR16161616F:
+               return &packed_8bpp_layout;
+
        default:
                drv_log("UNKNOWN FORMAT %d\n", format);
                return NULL;
diff --git a/i915.c b/i915.c
index 9683bf0..3639eaa 100644 (file)
--- a/i915.c
+++ b/i915.c
 #define I915_CACHELINE_SIZE 64
 #define I915_CACHELINE_MASK (I915_CACHELINE_SIZE - 1)
 
-static const uint32_t render_target_formats[] = { DRM_FORMAT_ABGR8888,   DRM_FORMAT_ARGB1555,
-                                                 DRM_FORMAT_ARGB8888,    DRM_FORMAT_RGB565,
-                                                 DRM_FORMAT_XBGR2101010, DRM_FORMAT_XBGR8888,
-                                                 DRM_FORMAT_XRGB1555,    DRM_FORMAT_XRGB2101010,
-                                                 DRM_FORMAT_XRGB8888,    DRM_FORMAT_ARGB2101010 };
+static const uint32_t render_target_formats[] = { DRM_FORMAT_ABGR16161616F, DRM_FORMAT_ABGR2101010,
+                                                 DRM_FORMAT_ABGR8888,      DRM_FORMAT_ARGB1555,
+                                                 DRM_FORMAT_ARGB2101010,   DRM_FORMAT_ARGB8888,
+                                                 DRM_FORMAT_RGB565,        DRM_FORMAT_XBGR2101010,
+                                                 DRM_FORMAT_XBGR8888,      DRM_FORMAT_XRGB1555,
+                                                 DRM_FORMAT_XRGB2101010,   DRM_FORMAT_XRGB8888 };
 
 static const uint32_t tileable_texture_source_formats[] = { DRM_FORMAT_GR88, DRM_FORMAT_R8,
                                                            DRM_FORMAT_UYVY, DRM_FORMAT_YUYV };