linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Piotr Oniszczuk <piotr.oniszczuk@gmail.com>
To: Sascha Hauer <s.hauer@pengutronix.de>
Cc: dri-devel@lists.freedesktop.org,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"open list:ARM/Rockchip SoC..."
	<linux-rockchip@lists.infradead.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	kernel@pengutronix.de, "Andy Yan" <andy.yan@rock-chips.com>,
	"Benjamin Gaignard" <benjamin.gaignard@collabora.com>,
	"Michael Riesch" <michael.riesch@wolfvision.net>,
	"Sandy Huang" <hjc@rock-chips.com>,
	"Heiko Stübner" <heiko@sntech.de>,
	"Peter Geis" <pgwipeout@gmail.com>
Subject: Re: [PATCH v9 00/23] drm/rockchip: RK356x VOP2 support
Date: Mon, 11 Apr 2022 13:07:56 +0200	[thread overview]
Message-ID: <5929E7A7-776E-4BCB-92C8-A1CE05774FE3@gmail.com> (raw)
In-Reply-To: <20220411090800.GR4012@pengutronix.de>



> Wiadomość napisana przez Sascha Hauer <s.hauer@pengutronix.de> w dniu 11.04.2022, o godz. 11:08:
> 
> Ok, so #37 for video, #43 for GUI.
> 
> Where is the OSD rendered? Is it rendered on the GUI layer?

Yes

> 
>> .......
>> 
>> 
>> playback:
>> .....
>> 2022-04-08 17:48:55.457823 I DRMVideo: Using Plane #37 for video
>> .....
>> 
>> DRI state with zpos=0, kms_id=0 and ongoing playback:
>> 
>> root@Myth-Frontend-06c7e973c2f1:~ # cat /sys/kernel/debug/dri/0/state
>> plane[31]: Smart0-win0
>>        crtc=video_port0
>>        fb=58
>>                allocated by = mythfrontend
>>                refcount=2
>>                format=XR24 little-endian (0x34325258)
>>                modifier=0x0
>>                size=1920x1080
>>                layers:
>>                        size[0]=1920x1080
>>                        pitch[0]=7680
>>                        offset[0]=0
>>                        obj[0]:
>>                                name=0
>>                                refcount=4
>>                                start=00000000
>>                                size=8294400
>>                                imported=no
>>        crtc-pos=1920x1080+0+0
>>        src-pos=1920.000000x1080.000000+0.000000+0.000000
>>        rotation=1
>>        normalized-zpos=0
>>        color-encoding=ITU-R BT.601 YCbCr
>>        color-range=YCbCr limited range
> 
> Base plane.
> 
>> plane[37]: Esmart0-win0
>>        crtc=video_port0
>>        fb=65
>>                allocated by = mythfrontend
>>                refcount=2
>>                format=NV12 little-endian (0x3231564e)
>>                modifier=0x0
>>                size=1920x1080
>>                layers:
>>                        size[0]=1920x1080
>>                        pitch[0]=1920
>>                        offset[0]=0
>>                        obj[0]:
>>                                name=0
>>                                refcount=3
>>                                start=00000000
>>                                size=3657728
>>                                imported=yes
>>                        size[1]=960x540
>>                        pitch[1]=1920
>>                        offset[1]=2088960
>>                        obj[1]:
>>                                name=0
>>                                refcount=3
>>                                start=00000000
>>                                size=3657728
>>                                imported=yes
>>        crtc-pos=1920x1080+0+0
>>        src-pos=1920.000000x1080.000000+0.000000+0.000000
>>        rotation=1
>>        normalized-zpos=1
>>        color-encoding=ITU-R BT.601 YCbCr
>>        color-range=YCbCr limited range
> 
> Video plane, rendered full screen above the base plane without alpha.
> 
>> plane[43]: Cluster0-win0
>>        crtc=(null)
>>        fb=0
>>        crtc-pos=0x0+0+0
>>        src-pos=0.000000x0.000000+0.000000+0.000000
>>        rotation=1
>>        normalized-zpos=0
>>        color-encoding=ITU-R BT.601 YCbCr
>>        color-range=YCbCr limited range
> 
> Here should be the GUI, but this plane is not active.

I suspect this is because above DRI state report was with user-forced Qt vars.
This was because to get UI non-black screen.
I done this by request to provide DRI state with video playback. (to get playback I need UI to navigate)
By this DRI state report might misleading as i'm manually forcing Qt KMS_Index/Zpos. 

> 
> With this state I would expect to see a full screen video without
> anything on it. Is that the case? If yes, then fine.

yes. this is a case.
so this is fine.

So I think non-visible OSD issue is side effect of other, root cause issue: issue causing user to force Qt vars to get UI on VOP2

Context: (my view):

We have stack of 3 components interacting:
1.player (draws video to DRM plane)
2.Qt (draws UI to GL to DRM plane)
3.DRM (mixing planes+displaying) 

Stack coperation:
a. DRM reports available planes+attributes to player
b. player - accordingly to above report - sets Qt (KMS/Zpos, etc).
c. user starting player. player uses Qt for drawing UI 
d. user asks for playback
e. player draws (by Qt) OSD  and directly video (accordingly to Qt setup in (b)

With VOP2 i have issue at (c): screen is black.
Above procedure works fully automated on all other platforms i have/supporting. 

For me most probable hypothesis:

1\
- In steep (b) Qt is set (or configured to use DRM) in way that UI resulting with black screen
- this is because in (a) player receives (wrong?) DRM report - and by this Qt is wrongly set
This may explain we have issue at (c)

2\
- In steep (b) Qt is set & using DRM in way that UI should work ok
- but VOP2 draws black screen (by some reason)
This may explain we have issue at (c)


Alternative hypothesis:
DRM properly realises (a)
Player wrongly realises (b)
This hypothesis is way less probable (for me) because:
1. procedure (a)...(e) works well on all other SoC. No need from user to overwrite automatically detected/set of Qt vars.
2. vop2 is single requiring from user overwrite of autodetected Qt vars. to get non-black screen UI.

I'm a bit out of ideas how to progress with this.

As (a)...(e) concept works ok (and afaik also is used by other players exploiting DRM planes rendering) - i'm not sure should I play with (b) because of VOP2 black-screen?


   
BTW:
this is DRI state when there is no any Qt.vars overwrites.
(so all is autodetected/setup like in other  working SoCs; VOP2 gives here black screen UI):

2022-04-08 17:47:57.035668 I /dev/dri/card0 Qt EGLFS/KMS Fd:5 Crtc id:49 Connector id:51 Atomic: 1
2022-04-08 17:47:57.035806 I /dev/dri/card0: Authenticated
2022-04-08 17:47:57.145447 I /dev/dri/card0: Found 3 planes; 3 for this CRTC
2022-04-08 17:47:57.145469 I /dev/dri/card0: Selected Plane #37 Overlay for video
2022-04-08 17:47:57.145515 I /dev/dri/card0: Supported DRM video formats: NV12,NV16,NV24,YVYU,VYUY
2022-04-08 17:47:57.145523 I /dev/dri/card0: Selected Plane #43 Overlay for GUI
2022-04-08 17:47:57.145567 I /dev/dri/card0: DRM device retrieved from Qt
2022-04-08 17:47:57.145574 I /dev/dri/card0: Multi-plane setup: Requested: 1 Setup: 1

plane[31]: Smart0-win0
        crtc=video_port0
        fb=53
                allocated by = [fbcon]
                refcount=2
                format=XR24 little-endian (0x34325258)
                modifier=0x0
                size=1920x1080
                layers:
                        size[0]=1920x1080
                        pitch[0]=7680
                        offset[0]=0
                        obj[0]:
                                name=0
                                refcount=3
                                start=00000000
                                size=8294400
                                imported=no
        crtc-pos=1920x1080+0+0
        src-pos=1920.000000x1080.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=0
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
plane[37]: Esmart0-win0
        crtc=(null)
        fb=0
        crtc-pos=0x0+0+0
        src-pos=0.000000x0.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=0
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
plane[43]: Cluster0-win0
        crtc=video_port0
        fb=58
                allocated by = mythfrontend
                refcount=2
                format=AR24 little-endian (0x34325241)
                modifier=0x0
                size=1920x1080
                layers:
                        size[0]=1920x1080
                        pitch[0]=7680
                        offset[0]=0
                        obj[0]:
                                name=0
                                refcount=4
                                start=00000000
                                size=8294400
                                imported=no
        crtc-pos=1920x1080+0+0
        src-pos=1920.000000x1080.000000+0.000000+0.000000
        rotation=1
        normalized-zpos=1
        color-encoding=ITU-R BT.601 YCbCr
        color-range=YCbCr limited range
crtc[49]: video_port0
        enable=1
        active=1
        self_refresh_active=0
        planes_changed=1
        mode_changed=0
        active_changed=0
        connectors_changed=0
        color_mgmt_changed=0
        plane_mask=5
        connector_mask=1
        encoder_mask=1
        mode: "1920x1080": 60 148500 1920 2008 2052 2200 1080 1084 1089 1125 0x48 0x5
connector[51]: HDMI-A-1
        crtc=video_port0
        self_refresh_aware=0  




_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2022-04-11 11:09 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-28 15:10 [PATCH v9 00/23] drm/rockchip: RK356x VOP2 support Sascha Hauer
2022-03-28 15:10 ` [PATCH v9 01/23] clk: rk3568: Mark hclk_vo as critical Sascha Hauer
2022-03-29 13:22   ` Dmitry Osipenko
2022-04-06 11:15   ` Robin Murphy
2022-03-28 15:10 ` [PATCH v9 02/23] drm/rockchip: Embed drm_encoder into rockchip_decoder Sascha Hauer
2022-03-28 15:10 ` [PATCH v9 03/23] drm/rockchip: Add crtc_endpoint_id to rockchip_encoder Sascha Hauer
2022-03-28 15:10 ` [PATCH v9 04/23] drm/rockchip: dw_hdmi: rename vpll clock to reference clock Sascha Hauer
2022-03-28 15:10 ` [PATCH v9 05/23] dt-bindings: display: rockchip: dw-hdmi: use "ref" as clock name Sascha Hauer
2022-03-28 15:10 ` [PATCH v9 06/23] arm64: dts: rockchip: rk3399: rename HDMI ref clock to 'ref' Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 07/23] drm/rockchip: dw_hdmi: add rk3568 support Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 08/23] dt-bindings: display: rockchip: dw-hdmi: Add compatible for rk3568 HDMI Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 09/23] drm/rockchip: dw_hdmi: add regulator support Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 10/23] dt-bindings: display: rockchip: dw-hdmi: Add " Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 11/23] drm/rockchip: dw_hdmi: Use auto-generated tables Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 12/23] drm/rockchip: dw_hdmi: drop mode_valid hook Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 13/23] drm/rockchip: dw_hdmi: Set cur_ctr to 0 always Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 14/23] drm/rockchip: dw_hdmi: add default 594Mhz clk for 4K@60hz Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 15/23] dt-bindings: display: rockchip: dw-hdmi: Make unwedge pinctrl optional Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 16/23] arm64: dts: rockchip: rk356x: Add VOP2 nodes Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 17/23] arm64: dts: rockchip: rk356x: Add HDMI nodes Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 18/23] arm64: dts: rockchip: rk3568-evb: Enable VOP2 and hdmi Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 19/23] arm64: dts: rockchip: enable vop2 and hdmi tx on quartz64a Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 20/23] drm/rockchip: Make VOP driver optional Sascha Hauer
2022-03-29 11:56   ` Andy Yan
2022-03-30  6:39     ` Sascha Hauer
2022-03-30 12:50       ` Andy Yan
2022-03-31  7:06         ` Sascha Hauer
2022-03-31  7:20           ` Andy Yan
2022-03-31  8:18             ` Sascha Hauer
2022-03-31 11:00               ` Andy Yan
2022-04-01 12:55                 ` Sascha Hauer
2022-04-02  1:25                   ` Andy Yan
2022-04-05  9:05                     ` Sascha Hauer
2022-04-06  1:43                       ` Andy Yan
2022-04-06  7:04                         ` Sascha Hauer
2022-04-06  7:47                           ` Andy Yan
2022-04-06  8:00                             ` Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 22/23] dt-bindings: display: rockchip: Add binding for VOP2 Sascha Hauer
2022-03-28 15:11 ` [PATCH v9 23/23] dt-bindings: display: rockchip: dw-hdmi: fix ports description Sascha Hauer
2022-03-29  7:31 ` [PATCH v9 00/23] drm/rockchip: RK356x VOP2 support Piotr Oniszczuk
2022-03-30  7:28   ` Sascha Hauer
2022-03-30  8:41     ` piotro.oniszczuk@google.com
2022-03-30  9:45       ` Sascha Hauer
2022-03-30 10:01         ` piotro.oniszczuk@google.com
2022-03-30 10:20           ` Sascha Hauer
2022-03-30 14:52             ` Piotr Oniszczuk
2022-03-30 19:20               ` Sascha Hauer
2022-03-30 19:35                 ` Piotr Oniszczuk
2022-03-30 19:59                   ` Sascha Hauer
2022-03-31 12:13                 ` Andy Yan
2022-03-31 12:19                   ` Sascha Hauer
2022-03-31 14:53                   ` Piotr Oniszczuk
2022-03-31 15:00                     ` Sascha Hauer
2022-03-31 15:06                       ` Piotr Oniszczuk
2022-03-31 15:19                         ` Piotr Oniszczuk
     [not found]                     ` <622c8786-2c3f-13ff-66b7-ad9c8cb9425e@rock-chips.com>
2022-04-01  7:06                       ` Sascha Hauer
     [not found]                       ` <041d7795-fdec-8e7d-a9ee-aa79c0faa6f3@rock-chips.com>
2022-04-01 12:53                         ` Piotr Oniszczuk
2022-04-01 12:52   ` Sascha Hauer
2022-04-01 13:05     ` Piotr Oniszczuk
2022-04-06  9:47       ` Piotr Oniszczuk
2022-04-06 14:58         ` Sascha Hauer
2022-04-06 16:00           ` Piotr Oniszczuk
2022-04-07 10:16             ` Sascha Hauer
2022-04-07 15:02               ` Piotr Oniszczuk
2022-04-08  8:07         ` Sascha Hauer
2022-04-08 12:00           ` Sascha Hauer
2022-04-08 15:54             ` Piotr Oniszczuk
2022-04-11  9:08               ` Sascha Hauer
2022-04-11 11:07                 ` Piotr Oniszczuk [this message]
2022-04-12  7:50                   ` Sascha Hauer
2022-04-12  8:10                     ` Lucas Stach
2022-04-12 10:14                       ` Piotr Oniszczuk
2022-04-12 11:30                         ` Daniel Stone
2022-04-15 11:11                           ` Piotr Oniszczuk
2022-04-25 14:54                             ` Daniel Stone
2022-04-12  9:28                     ` Piotr Oniszczuk
2022-04-02  1:37     ` Andy Yan
2022-04-05  9:37       ` Sascha Hauer
2022-04-06  2:02         ` Andy Yan
2022-04-06  8:13           ` Sascha Hauer
2022-04-06  8:36             ` Andy Yan
2022-04-06 14:54               ` Sascha Hauer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5929E7A7-776E-4BCB-92C8-A1CE05774FE3@gmail.com \
    --to=piotr.oniszczuk@gmail.com \
    --cc=andy.yan@rock-chips.com \
    --cc=benjamin.gaignard@collabora.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=heiko@sntech.de \
    --cc=hjc@rock-chips.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=michael.riesch@wolfvision.net \
    --cc=pgwipeout@gmail.com \
    --cc=s.hauer@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).