Wiadomość napisana przez Sascha Hauer s.hauer@pengutronix.de w dniu 12.04.2022, o godz. 09:50:
Somehow negotiation of the format goes wrong. Applications shouldn't pick these formats when the GPU is used for rendering. I don't know how and where this should be fixed properly, but your application should use DRM_FORMAT_ABGR8888 aka AB24 aka PIPE_FORMAT_R8G8B8A8_UNORM instead of DRM_FORMAT_ARGB8888 aka AR24 aka PIPE_FORMAT_B8G8R8A8_UNORM.
Applied :-) Results: pls see below
Could you try the following patch? It removed the formats in question from the list of supported formats in the hope that your application then picks one of the supported formats.
Sascha
-----------------------8<-----------------------------
From 7427109cfd16803902b55cd5536b9212abd09665 Mon Sep 17 00:00:00 2001 From: Sascha Hauer s.hauer@pengutronix.de Date: Tue, 12 Apr 2022 09:42:32 +0200 Subject: [PATCH] fixup! drm: rockchip: Add VOP2 driver
The cluster windows only allow AFBC compressed formats. Not all of the offered formats are supported by the GPU though. Applications pick one of the formats and assume that this is also supported by the GPU they use to render on them, but this is not the case for all formats. Particularly DRM_FORMAT_XRGB8888 and DRM_FORMAT_ARGB8888 are not supported by the GPU and choosing them results in a black screen. Drop these formats for now.
Signed-off-by: Sascha Hauer s.hauer@pengutronix.de
drivers/gpu/drm/rockchip/rockchip_vop2_reg.c | 2 -- 1 file changed, 2 deletions(-)
diff --git a/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c index 9bf0637bf8e26..38412766e3659 100644 --- a/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c +++ b/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c @@ -16,8 +16,6 @@ #include "rockchip_drm_vop2.h"
static const uint32_t formats_win_full_10bit[] = {
- DRM_FORMAT_XRGB8888,
- DRM_FORMAT_ARGB8888, DRM_FORMAT_XBGR8888, DRM_FORMAT_ABGR8888, DRM_FORMAT_RGB888,
--
With above patch app select expected format (i think):
1970-01-01 01:00:31.074643 I /dev/dri/card0: Authenticated 1970-01-01 01:00:31.189420 I /dev/dri/card0: Found 3 planes; 3 for this CRTC 1970-01-01 01:00:31.189444 I /dev/dri/card0: Selected Plane #37 Overlay for video 1970-01-01 01:00:31.189528 I /dev/dri/card0: Supported DRM video formats: NV12,NV16,NV24,YVYU,VYUY 1970-01-01 01:00:31.189536 I /dev/dri/card0: Selected Plane #43 Overlay for GUI 1970-01-01 01:00:31.190279 I Wrote /home/minimyth/.mythtv/eglfs_kms_config.json: { "device": "/dev/dri/card0", "outputs": [ { "name": "HDMI1", "format": "abgr8888", "mode": "current" } ] }
(file eglfs_kms_config.json is generated by app to configure Qt; it is steep (b) in yesterday's email) I see format abgr8888 is now selected by app (this is expected t think)
but later Qt says:
1970-01-01 01:00:34.985215 I Qt: EGL Error : Could not create the egl surface: error = 0x3009 Handling Aborted Aborted
I suspect Qt tries with this format talk to GLES provider - but it wasn't somehow accepted by underlying EGL provider (mesa GLES)?