OSDN Git Service

minigbm: don't advertise BGR24 as a render/texture target
authorGurchetan Singh <gurchetansingh@chromium.org>
Tue, 18 Sep 2018 00:42:05 +0000 (17:42 -0700)
committerchrome-bot <chrome-bot@chromium.org>
Fri, 21 Sep 2018 10:38:13 +0000 (03:38 -0700)
Mesa drivers can't use it, in general.

I'm leaving in Rockchip since I haven't gotten any reports
about this test failing on kevin-arcnext.

Fixes: abe44f ("minigbm: add support for BG24")

BUG=b:77876551, b:115564746
TEST=The following tests should pass on Eve/Grunt arc-next:

  android.hardware.nativehardware.cts.AHardwareBufferNativeTests#SingleLayer_ColorTest_GpuColorOutputAndSampledImage_R8G8B8_UNORM
  android.hardware.nativehardware.cts.AHardwareBufferNativeTests#SingleLayer_ColorTest_GpuColorOutputCpuRead_R8G8B8_UNORM
  android.hardware.nativehardware.cts.AHardwareBufferNativeTests#SingleLayer_ColorTest_GpuColorOutputIsRenderable_R8G8B8_UNORM
  android.hardware.nativehardware.cts.AHardwareBufferNativeTests#SingleLayer_ColorTest_GpuSampledImageCanBeSampled_R8G8B8_UNORM

Change-Id: Ic7aec07c89fdc21e0c8392238e833f7980062049
Reviewed-on: https://chromium-review.googlesource.com/1229439
Commit-Ready: Gurchetan Singh <gurchetansingh@chromium.org>
Tested-by: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Stéphane Marchesin <marcheu@chromium.org>
amdgpu.c
drv_priv.h
i915.c
mediatek.c
msm.c
virtio_gpu.c

index efba3da..2b8d64b 100644 (file)
--- a/amdgpu.c
+++ b/amdgpu.c
@@ -37,9 +37,8 @@ const static uint32_t render_target_formats[] = { DRM_FORMAT_ABGR8888, DRM_FORMA
                                                  DRM_FORMAT_RGB565, DRM_FORMAT_XBGR8888,
                                                  DRM_FORMAT_XRGB8888 };
 
-const static uint32_t texture_source_formats[] = { DRM_FORMAT_BGR888, DRM_FORMAT_GR88,
-                                                  DRM_FORMAT_R8,     DRM_FORMAT_NV21,
-                                                  DRM_FORMAT_NV12,   DRM_FORMAT_YVU420_ANDROID };
+const static uint32_t texture_source_formats[] = { DRM_FORMAT_GR88, DRM_FORMAT_R8, DRM_FORMAT_NV21,
+                                                  DRM_FORMAT_NV12, DRM_FORMAT_YVU420_ANDROID };
 
 static int amdgpu_init(struct driver *drv)
 {
@@ -79,6 +78,9 @@ static int amdgpu_init(struct driver *drv)
        drv_add_combinations(drv, texture_source_formats, ARRAY_SIZE(texture_source_formats),
                             &metadata, BO_USE_TEXTURE_MASK);
 
+       /* Android CTS tests require this. */
+       drv_add_combination(drv, DRM_FORMAT_BGR888, &metadata, BO_USE_SW_MASK);
+
        /* Linear formats supported by display. */
        drv_modify_combination(drv, DRM_FORMAT_ARGB8888, &metadata, BO_USE_CURSOR | BO_USE_SCANOUT);
        drv_modify_combination(drv, DRM_FORMAT_XRGB8888, &metadata, BO_USE_CURSOR | BO_USE_SCANOUT);
@@ -154,7 +156,7 @@ static int amdgpu_create_bo(struct bo *bo, uint32_t width, uint32_t height, uint
        gem_create.in.alignment = 256;
        gem_create.in.domain_flags = 0;
 
-       if (use_flags & (BO_USE_LINEAR | BO_USE_SW))
+       if (use_flags & (BO_USE_LINEAR | BO_USE_SW_MASK))
                gem_create.in.domain_flags |= AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
 
        gem_create.in.domains = AMDGPU_GEM_DOMAIN_GTT;
index 93f1d93..d1369f0 100644 (file)
@@ -85,8 +85,8 @@ struct backend {
                            BO_USE_SW_READ_OFTEN | BO_USE_SW_WRITE_OFTEN | \
                             BO_USE_SW_READ_RARELY | BO_USE_SW_WRITE_RARELY | BO_USE_TEXTURE
 
-#define BO_USE_SW BO_USE_SW_READ_OFTEN | BO_USE_SW_WRITE_OFTEN | \
-           BO_USE_SW_READ_RARELY | BO_USE_SW_WRITE_RARELY
+#define BO_USE_SW_MASK BO_USE_SW_READ_OFTEN | BO_USE_SW_WRITE_OFTEN | \
+                      BO_USE_SW_READ_RARELY | BO_USE_SW_WRITE_RARELY
 
 #ifndef DRM_FORMAT_MOD_LINEAR
 #define DRM_FORMAT_MOD_LINEAR DRM_FORMAT_MOD_NONE
diff --git a/i915.c b/i915.c
index 773fb69..b343e91 100644 (file)
--- a/i915.c
+++ b/i915.c
 #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_BGR888,
-                                                 DRM_FORMAT_RGB565,      DRM_FORMAT_XBGR2101010,
-                                                 DRM_FORMAT_XBGR8888,    DRM_FORMAT_XRGB1555,
-                                                 DRM_FORMAT_XRGB2101010, DRM_FORMAT_XRGB8888 };
+                                                 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 };
@@ -137,6 +137,9 @@ static int i915_add_combinations(struct driver *drv)
                             ARRAY_SIZE(tileable_texture_source_formats), &metadata,
                             texture_use_flags);
 
+       /* Android CTS tests require this. */
+       drv_add_combination(drv, DRM_FORMAT_BGR888, &metadata, BO_USE_SW_MASK);
+
        drv_modify_combination(drv, DRM_FORMAT_XRGB8888, &metadata, BO_USE_CURSOR | BO_USE_SCANOUT);
        drv_modify_combination(drv, DRM_FORMAT_ARGB8888, &metadata, BO_USE_CURSOR | BO_USE_SCANOUT);
 
index d319bf9..59a0fac 100644 (file)
@@ -30,8 +30,8 @@ struct mediatek_private_map_data {
 };
 
 static const uint32_t render_target_formats[] = { DRM_FORMAT_ABGR8888, DRM_FORMAT_ARGB8888,
-                                                 DRM_FORMAT_BGR888,   DRM_FORMAT_RGB565,
-                                                 DRM_FORMAT_XBGR8888, DRM_FORMAT_XRGB8888 };
+                                                 DRM_FORMAT_RGB565, DRM_FORMAT_XBGR8888,
+                                                 DRM_FORMAT_XRGB8888 };
 
 static const uint32_t texture_source_formats[] = { DRM_FORMAT_R8, DRM_FORMAT_YVU420,
                                                   DRM_FORMAT_YVU420_ANDROID };
@@ -46,6 +46,9 @@ static int mediatek_init(struct driver *drv)
        drv_add_combinations(drv, texture_source_formats, ARRAY_SIZE(texture_source_formats),
                             &LINEAR_METADATA, BO_USE_TEXTURE_MASK);
 
+       /* Android CTS tests require this. */
+       drv_add_combination(drv, DRM_FORMAT_BGR888, &LINEAR_METADATA, BO_USE_SW_MASK);
+
        /* Support BO_USE_HW_VIDEO_DECODER for protected content minigbm allocations. */
        metadata.tiling = TILE_TYPE_LINEAR;
        metadata.priority = 1;
diff --git a/msm.c b/msm.c
index fdaa8b5..10ada0b 100644 (file)
--- a/msm.c
+++ b/msm.c
@@ -14,8 +14,8 @@
 #define MESA_LLVMPIPE_TILE_SIZE (1 << MESA_LLVMPIPE_TILE_ORDER)
 
 static const uint32_t render_target_formats[] = { DRM_FORMAT_ABGR8888, DRM_FORMAT_ARGB8888,
-                                                 DRM_FORMAT_BGR888,   DRM_FORMAT_RGB565,
-                                                 DRM_FORMAT_XBGR8888, DRM_FORMAT_XRGB8888 };
+                                                 DRM_FORMAT_RGB565, DRM_FORMAT_XBGR8888,
+                                                 DRM_FORMAT_XRGB8888 };
 
 static const uint32_t supported_formats[] = { DRM_FORMAT_NV12, DRM_FORMAT_R8, DRM_FORMAT_YVU420,
                                              DRM_FORMAT_YVU420_ANDROID };
@@ -28,6 +28,9 @@ static int msm_init(struct driver *drv)
        drv_add_combinations(drv, supported_formats, ARRAY_SIZE(supported_formats),
                             &LINEAR_METADATA, BO_USE_TEXTURE_MASK | BO_USE_HW_VIDEO_DECODER);
 
+       /* Android CTS tests require this. */
+       drv_add_combination(drv, DRM_FORMAT_BGR888, &LINEAR_METADATA, BO_USE_SW_MASK);
+
        return drv_modify_linear_combinations(drv);
 }
 
index ff53ad3..36ba8bc 100644 (file)
@@ -26,8 +26,8 @@
 #define MESA_LLVMPIPE_TILE_SIZE (1 << MESA_LLVMPIPE_TILE_ORDER)
 
 static const uint32_t render_target_formats[] = { DRM_FORMAT_ABGR8888, DRM_FORMAT_ARGB8888,
-                                                 DRM_FORMAT_BGR888,   DRM_FORMAT_RGB565,
-                                                 DRM_FORMAT_XBGR8888, DRM_FORMAT_XRGB8888 };
+                                                 DRM_FORMAT_RGB565, DRM_FORMAT_XBGR8888,
+                                                 DRM_FORMAT_XRGB8888 };
 
 static const uint32_t dumb_texture_source_formats[] = { DRM_FORMAT_R8, DRM_FORMAT_YVU420,
                                                        DRM_FORMAT_YVU420_ANDROID,
@@ -186,6 +186,9 @@ static int virtio_gpu_init(struct driver *drv)
                                     ARRAY_SIZE(dumb_texture_source_formats), &LINEAR_METADATA,
                                     BO_USE_TEXTURE_MASK);
 
+       /* Android CTS tests require this. */
+       drv_add_combination(drv, DRM_FORMAT_BGR888, &LINEAR_METADATA, BO_USE_SW_MASK);
+
        drv_modify_combination(drv, DRM_FORMAT_NV12, &LINEAR_METADATA,
                               BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE);
        drv_modify_combination(drv, DRM_FORMAT_R8, &LINEAR_METADATA,