kernel: bump 6.1 to 6.1.86
[openwrt/staging/pepe2k.git] / target / linux / bcm27xx / patches-6.1 / 950-0051-drm-vc4-Add-3-3-2-and-4-4-4-4-RGB-RGBX-RGBA-formats.patch
1 From db4cb2248e9d98cc513300964c3ecdc80b8bc364 Mon Sep 17 00:00:00 2001
2 From: Dave Stevenson <dave.stevenson@raspberrypi.com>
3 Date: Fri, 3 Jun 2022 16:57:04 +0100
4 Subject: [PATCH] drm: vc4: Add 3:3:2 and 4:4:4:4 RGB/RGBX/RGBA formats
5
6 The hardware supports the 332 8bpp and 4:4:4:4 16bpp formats,
7 but the table of supported formats didn't include them.
8 Add them in.
9
10 In theory they are supported for T-format as well as linear,
11 but without a way to test them just add them as linear for now.
12
13 Suggested-by: vrazzer <teamvraz@pipmail.net>
14 Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
15 ---
16 drivers/gpu/drm/vc4/vc4_plane.c | 70 +++++++++++++++++++++++++++++++++
17 1 file changed, 70 insertions(+)
18
19 --- a/drivers/gpu/drm/vc4/vc4_plane.c
20 +++ b/drivers/gpu/drm/vc4/vc4_plane.c
21 @@ -175,6 +175,66 @@ static const struct hvs_format {
22 .pixel_order_hvs5 = HVS_PIXEL_ORDER_ABGR,
23 .hvs5_only = true,
24 },
25 + {
26 + .drm = DRM_FORMAT_RGB332,
27 + .hvs = HVS_PIXEL_FORMAT_RGB332,
28 + .pixel_order = HVS_PIXEL_ORDER_ARGB,
29 + .pixel_order_hvs5 = HVS_PIXEL_ORDER_ARGB,
30 + },
31 + {
32 + .drm = DRM_FORMAT_BGR233,
33 + .hvs = HVS_PIXEL_FORMAT_RGB332,
34 + .pixel_order = HVS_PIXEL_ORDER_ABGR,
35 + .pixel_order_hvs5 = HVS_PIXEL_ORDER_ABGR,
36 + },
37 + {
38 + .drm = DRM_FORMAT_XRGB4444,
39 + .hvs = HVS_PIXEL_FORMAT_RGBA4444,
40 + .pixel_order = HVS_PIXEL_ORDER_ABGR,
41 + .pixel_order_hvs5 = HVS_PIXEL_ORDER_ARGB,
42 + },
43 + {
44 + .drm = DRM_FORMAT_ARGB4444,
45 + .hvs = HVS_PIXEL_FORMAT_RGBA4444,
46 + .pixel_order = HVS_PIXEL_ORDER_ABGR,
47 + .pixel_order_hvs5 = HVS_PIXEL_ORDER_ARGB,
48 + },
49 + {
50 + .drm = DRM_FORMAT_XBGR4444,
51 + .hvs = HVS_PIXEL_FORMAT_RGBA4444,
52 + .pixel_order = HVS_PIXEL_ORDER_ARGB,
53 + .pixel_order_hvs5 = HVS_PIXEL_ORDER_ABGR,
54 + },
55 + {
56 + .drm = DRM_FORMAT_ABGR4444,
57 + .hvs = HVS_PIXEL_FORMAT_RGBA4444,
58 + .pixel_order = HVS_PIXEL_ORDER_ARGB,
59 + .pixel_order_hvs5 = HVS_PIXEL_ORDER_ABGR,
60 + },
61 + {
62 + .drm = DRM_FORMAT_BGRX4444,
63 + .hvs = HVS_PIXEL_FORMAT_RGBA4444,
64 + .pixel_order = HVS_PIXEL_ORDER_RGBA,
65 + .pixel_order_hvs5 = HVS_PIXEL_ORDER_BGRA,
66 + },
67 + {
68 + .drm = DRM_FORMAT_BGRA4444,
69 + .hvs = HVS_PIXEL_FORMAT_RGBA4444,
70 + .pixel_order = HVS_PIXEL_ORDER_RGBA,
71 + .pixel_order_hvs5 = HVS_PIXEL_ORDER_BGRA,
72 + },
73 + {
74 + .drm = DRM_FORMAT_RGBX4444,
75 + .hvs = HVS_PIXEL_FORMAT_RGBA4444,
76 + .pixel_order = HVS_PIXEL_ORDER_BGRA,
77 + .pixel_order_hvs5 = HVS_PIXEL_ORDER_RGBA,
78 + },
79 + {
80 + .drm = DRM_FORMAT_RGBA4444,
81 + .hvs = HVS_PIXEL_FORMAT_RGBA4444,
82 + .pixel_order = HVS_PIXEL_ORDER_BGRA,
83 + .pixel_order_hvs5 = HVS_PIXEL_ORDER_RGBA,
84 + },
85 };
86
87 static const struct hvs_format *vc4_get_hvs_format(u32 drm_format)
88 @@ -1572,6 +1632,16 @@ static bool vc4_format_mod_supported(str
89 case DRM_FORMAT_BGRX1010102:
90 case DRM_FORMAT_RGBA1010102:
91 case DRM_FORMAT_BGRA1010102:
92 + case DRM_FORMAT_XRGB4444:
93 + case DRM_FORMAT_ARGB4444:
94 + case DRM_FORMAT_XBGR4444:
95 + case DRM_FORMAT_ABGR4444:
96 + case DRM_FORMAT_RGBX4444:
97 + case DRM_FORMAT_RGBA4444:
98 + case DRM_FORMAT_BGRX4444:
99 + case DRM_FORMAT_BGRA4444:
100 + case DRM_FORMAT_RGB332:
101 + case DRM_FORMAT_BGR233:
102 case DRM_FORMAT_YUV422:
103 case DRM_FORMAT_YVU422:
104 case DRM_FORMAT_YUV420: