OSDN Git Service

amdgpu: Add 10-bit color formats.
authorBas Nieuwenhuizen <basni@chromium.org>
Mon, 29 Jun 2020 10:41:18 +0000 (12:41 +0200)
committerCommit Bot <commit-bot@chromium.org>
Thu, 9 Jul 2020 19:06:49 +0000 (19:06 +0000)
Should be fine for rendering and texturing.

AMDGPU only exposes this on the primary plane though, not on the
overlay or cursor. I strongly suspect the HW could also do this
on the overlay but I lack a proper testcase for now.

BUG=b:159011420
TEST=Run tast.video.Play.vp9_2_sw on Zork

Change-Id: Ie3a5356576a960985aac0ba16665425f45bd1541
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/2272566
Tested-by: Bas Nieuwenhuizen <basni@chromium.org>
Reviewed-by: Miguel Casas <mcasas@chromium.org>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Commit-Queue: Bas Nieuwenhuizen <basni@chromium.org>

amdgpu.c

index f28888e..ed73ea6 100644 (file)
--- a/amdgpu.c
+++ b/amdgpu.c
@@ -47,9 +47,11 @@ struct amdgpu_linear_vma_priv {
        uint32_t map_flags;
 };
 
-const static uint32_t render_target_formats[] = { DRM_FORMAT_ABGR8888, DRM_FORMAT_ARGB8888,
-                                                 DRM_FORMAT_RGB565, DRM_FORMAT_XBGR8888,
-                                                 DRM_FORMAT_XRGB8888 };
+const static uint32_t render_target_formats[] = {
+       DRM_FORMAT_ABGR8888,    DRM_FORMAT_ARGB8888,    DRM_FORMAT_RGB565,
+       DRM_FORMAT_XBGR8888,    DRM_FORMAT_XRGB8888,    DRM_FORMAT_ABGR2101010,
+       DRM_FORMAT_ARGB2101010, DRM_FORMAT_XBGR2101010, DRM_FORMAT_XRGB2101010,
+};
 
 const static uint32_t texture_source_formats[] = { DRM_FORMAT_GR88,          DRM_FORMAT_R8,
                                                   DRM_FORMAT_NV21,           DRM_FORMAT_NV12,
@@ -364,6 +366,11 @@ static int amdgpu_init(struct driver *drv)
        drv_modify_combination(drv, DRM_FORMAT_ABGR8888, &metadata, BO_USE_SCANOUT);
        drv_modify_combination(drv, DRM_FORMAT_XBGR8888, &metadata, BO_USE_SCANOUT);
 
+       drv_modify_combination(drv, DRM_FORMAT_ABGR2101010, &metadata, BO_USE_SCANOUT);
+       drv_modify_combination(drv, DRM_FORMAT_ARGB2101010, &metadata, BO_USE_SCANOUT);
+       drv_modify_combination(drv, DRM_FORMAT_XBGR2101010, &metadata, BO_USE_SCANOUT);
+       drv_modify_combination(drv, DRM_FORMAT_XRGB2101010, &metadata, BO_USE_SCANOUT);
+
        drv_modify_combination(drv, DRM_FORMAT_NV21, &metadata, BO_USE_SCANOUT);
 
        /*
@@ -395,6 +402,11 @@ static int amdgpu_init(struct driver *drv)
        drv_modify_combination(drv, DRM_FORMAT_XRGB8888, &metadata, BO_USE_CURSOR | BO_USE_SCANOUT);
        drv_modify_combination(drv, DRM_FORMAT_ABGR8888, &metadata, BO_USE_SCANOUT);
        drv_modify_combination(drv, DRM_FORMAT_XBGR8888, &metadata, BO_USE_SCANOUT);
+
+       drv_modify_combination(drv, DRM_FORMAT_ABGR2101010, &metadata, BO_USE_SCANOUT);
+       drv_modify_combination(drv, DRM_FORMAT_ARGB2101010, &metadata, BO_USE_SCANOUT);
+       drv_modify_combination(drv, DRM_FORMAT_XBGR2101010, &metadata, BO_USE_SCANOUT);
+       drv_modify_combination(drv, DRM_FORMAT_XRGB2101010, &metadata, BO_USE_SCANOUT);
        return 0;
 }