All of lore.kernel.org
 help / color / mirror / Atom feed
* DRM_UDL and GPU under Xserver
@ 2018-04-04 20:06 ` Alexey Brodkin
  0 siblings, 0 replies; 30+ messages in thread
From: Alexey Brodkin @ 2018-04-04 20:06 UTC (permalink / raw)
  To: linux-snps-arc

Hello,

We're trying to use DisplayLink USB2-to-HDMI adapter to render GPU-accelerated graphics.
Hardware setup is as simple as a devboard + DisplayLink adapter.
Devboards we use for this experiment are:
 * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
 * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as well)

I'm sure any other board with DRM supported GPU will work, those we just used
as the very recent Linux kernels could be easily run on them both.

Basically the problem is UDL needs to be explicitly notified about new data
to be rendered on the screen compared to typical bit-streamers that infinitely
scan a dedicated buffer in memory.

In case of UDL there're just 2 ways for this notification:
 1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs->page_flip()
 2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs->dirty()

But neither of IOCTLs happen when we run Xserver with xf86-video-armada driver
(see http://git.arm.linux.org.uk/cgit/xf86-video-armada.git/log/?h=unstable-devel).

Is it something missing in Xserver or in UDL driver?

Regards,
Alexey

^ permalink raw reply	[flat|nested] 30+ messages in thread

* DRM_UDL and GPU under Xserver
@ 2018-04-04 20:06 ` Alexey Brodkin
  0 siblings, 0 replies; 30+ messages in thread
From: Alexey Brodkin @ 2018-04-04 20:06 UTC (permalink / raw)
  To: dri-devel
  Cc: Jose Abreu, airlied, daniel.vetter, seanpaul, airlied,
	alexander.deucher, daniel.vetter, linux-snps-arc, l.stach

Hello,

We're trying to use DisplayLink USB2-to-HDMI adapter to render GPU-accelerated graphics.
Hardware setup is as simple as a devboard + DisplayLink adapter.
Devboards we use for this experiment are:
 * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
 * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as well)

I'm sure any other board with DRM supported GPU will work, those we just used
as the very recent Linux kernels could be easily run on them both.

Basically the problem is UDL needs to be explicitly notified about new data
to be rendered on the screen compared to typical bit-streamers that infinitely
scan a dedicated buffer in memory.

In case of UDL there're just 2 ways for this notification:
 1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs->page_flip()
 2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs->dirty()

But neither of IOCTLs happen when we run Xserver with xf86-video-armada driver
(see http://git.arm.linux.org.uk/cgit/xf86-video-armada.git/log/?h=unstable-devel).

Is it something missing in Xserver or in UDL driver?

Regards,
Alexey

^ permalink raw reply	[flat|nested] 30+ messages in thread

* DRM_UDL and GPU under Xserver
  2018-04-04 20:06 ` Alexey Brodkin
@ 2018-04-05  6:18   ` Daniel Vetter
  -1 siblings, 0 replies; 30+ messages in thread
From: Daniel Vetter @ 2018-04-05  6:18 UTC (permalink / raw)
  To: linux-snps-arc

On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
<Alexey.Brodkin@synopsys.com> wrote:
> Hello,
>
> We're trying to use DisplayLink USB2-to-HDMI adapter to render GPU-accelerated graphics.
> Hardware setup is as simple as a devboard + DisplayLink adapter.
> Devboards we use for this experiment are:
>  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
>  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as well)
>
> I'm sure any other board with DRM supported GPU will work, those we just used
> as the very recent Linux kernels could be easily run on them both.
>
> Basically the problem is UDL needs to be explicitly notified about new data
> to be rendered on the screen compared to typical bit-streamers that infinitely
> scan a dedicated buffer in memory.
>
> In case of UDL there're just 2 ways for this notification:
>  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs->page_flip()
>  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs->dirty()
>
> But neither of IOCTLs happen when we run Xserver with xf86-video-armada driver
> (see http://git.arm.linux.org.uk/cgit/xf86-video-armada.git/log/?h=unstable-devel).
>
> Is it something missing in Xserver or in UDL driver?

Use the -modesetting driverr for UDL, that one works correctly.
Kernel-driver specific X drivers are kinda deprecated, and stuff like
this (and other bugfixes and improvements that don't propagate around)
are the reason for that.
-Daniel

>
> Regards,
> Alexey
>
>
>
>
>



-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: DRM_UDL and GPU under Xserver
@ 2018-04-05  6:18   ` Daniel Vetter
  0 siblings, 0 replies; 30+ messages in thread
From: Daniel Vetter @ 2018-04-05  6:18 UTC (permalink / raw)
  To: Alexey Brodkin
  Cc: Jose Abreu, airlied, dri-devel, airlied, alexander.deucher,
	daniel.vetter, linux-snps-arc

On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
<Alexey.Brodkin@synopsys.com> wrote:
> Hello,
>
> We're trying to use DisplayLink USB2-to-HDMI adapter to render GPU-accelerated graphics.
> Hardware setup is as simple as a devboard + DisplayLink adapter.
> Devboards we use for this experiment are:
>  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
>  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as well)
>
> I'm sure any other board with DRM supported GPU will work, those we just used
> as the very recent Linux kernels could be easily run on them both.
>
> Basically the problem is UDL needs to be explicitly notified about new data
> to be rendered on the screen compared to typical bit-streamers that infinitely
> scan a dedicated buffer in memory.
>
> In case of UDL there're just 2 ways for this notification:
>  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs->page_flip()
>  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs->dirty()
>
> But neither of IOCTLs happen when we run Xserver with xf86-video-armada driver
> (see http://git.arm.linux.org.uk/cgit/xf86-video-armada.git/log/?h=unstable-devel).
>
> Is it something missing in Xserver or in UDL driver?

Use the -modesetting driverr for UDL, that one works correctly.
Kernel-driver specific X drivers are kinda deprecated, and stuff like
this (and other bugfixes and improvements that don't propagate around)
are the reason for that.
-Daniel

>
> Regards,
> Alexey
>
>
>
>
>



-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* DRM_UDL and GPU under Xserver
  2018-04-05  6:18   ` Daniel Vetter
@ 2018-04-05  7:16     ` Alexey Brodkin
  -1 siblings, 0 replies; 30+ messages in thread
From: Alexey Brodkin @ 2018-04-05  7:16 UTC (permalink / raw)
  To: linux-snps-arc

Hi Daniel,

On Thu, 2018-04-05@08:18 +0200, Daniel Vetter wrote:
> On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
> <Alexey.Brodkin@synopsys.com> wrote:
> > Hello,
> > 
> > We're trying to use DisplayLink USB2-to-HDMI adapter to render GPU-accelerated graphics.
> > Hardware setup is as simple as a devboard + DisplayLink adapter.
> > Devboards we use for this experiment are:
> >  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
> >  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as well)
> > 
> > I'm sure any other board with DRM supported GPU will work, those we just used
> > as the very recent Linux kernels could be easily run on them both.
> > 
> > Basically the problem is UDL needs to be explicitly notified about new data
> > to be rendered on the screen compared to typical bit-streamers that infinitely
> > scan a dedicated buffer in memory.
> > 
> > In case of UDL there're just 2 ways for this notification:
> >  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs->page_flip()
> >  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs->dirty()
> > 
> > But neither of IOCTLs happen when we run Xserver with xf86-video-armada driver
> > (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-3Dunstable-2Ddevel&d=DwIBaQ&
> > c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
> > 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
> > 
> > Is it something missing in Xserver or in UDL driver?
> 
> Use the -modesetting driverr for UDL, that one works correctly.

If you're talking about "modesetting" driver of Xserver [1] then indeed
picture is displayed on the screen. But there I guess won't be any 3D acceleration.

At least that's what was suggested to me earlier here [2] by Lucas:
---------------------------->8---------------------------
For 3D acceleration to work under X you need the etnaviv specific DDX
driver, which can be found here:

http://git.arm.linux.org.uk/cgit/xf86-video-armada.git/log/?h=unstable-devel
---------------------------->8---------------------------

[1] https://cgit.freedesktop.org/xorg/xserver/tree/hw/xfree86/drivers/modesetting
[2] http://lists.infradead.org/pipermail/linux-snps-arc/2017-November/003031.html

-Alexey

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: DRM_UDL and GPU under Xserver
@ 2018-04-05  7:16     ` Alexey Brodkin
  0 siblings, 0 replies; 30+ messages in thread
From: Alexey Brodkin @ 2018-04-05  7:16 UTC (permalink / raw)
  To: l.stach, daniel.vetter
  Cc: Jose.Abreu, airlied, dri-devel, seanpaul, airlied,
	alexander.deucher, daniel.vetter, linux-snps-arc

Hi Daniel,

On Thu, 2018-04-05 at 08:18 +0200, Daniel Vetter wrote:
> On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
> <Alexey.Brodkin@synopsys.com> wrote:
> > Hello,
> > 
> > We're trying to use DisplayLink USB2-to-HDMI adapter to render GPU-accelerated graphics.
> > Hardware setup is as simple as a devboard + DisplayLink adapter.
> > Devboards we use for this experiment are:
> >  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
> >  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as well)
> > 
> > I'm sure any other board with DRM supported GPU will work, those we just used
> > as the very recent Linux kernels could be easily run on them both.
> > 
> > Basically the problem is UDL needs to be explicitly notified about new data
> > to be rendered on the screen compared to typical bit-streamers that infinitely
> > scan a dedicated buffer in memory.
> > 
> > In case of UDL there're just 2 ways for this notification:
> >  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs->page_flip()
> >  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs->dirty()
> > 
> > But neither of IOCTLs happen when we run Xserver with xf86-video-armada driver
> > (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-3Dunstable-2Ddevel&d=DwIBaQ&
> > c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
> > 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
> > 
> > Is it something missing in Xserver or in UDL driver?
> 
> Use the -modesetting driverr for UDL, that one works correctly.

If you're talking about "modesetting" driver of Xserver [1] then indeed
picture is displayed on the screen. But there I guess won't be any 3D acceleration.

At least that's what was suggested to me earlier here [2] by Lucas:
---------------------------->8---------------------------
For 3D acceleration to work under X you need the etnaviv specific DDX
driver, which can be found here:

http://git.arm.linux.org.uk/cgit/xf86-video-armada.git/log/?h=unstable-devel
---------------------------->8---------------------------

[1] https://cgit.freedesktop.org/xorg/xserver/tree/hw/xfree86/drivers/modesetting
[2] http://lists.infradead.org/pipermail/linux-snps-arc/2017-November/003031.html

-Alexey

^ permalink raw reply	[flat|nested] 30+ messages in thread

* DRM_UDL and GPU under Xserver
  2018-04-05  7:16     ` Alexey Brodkin
@ 2018-04-05  9:32       ` Daniel Vetter
  -1 siblings, 0 replies; 30+ messages in thread
From: Daniel Vetter @ 2018-04-05  9:32 UTC (permalink / raw)
  To: linux-snps-arc

On Thu, Apr 5, 2018 at 9:16 AM, Alexey Brodkin
<Alexey.Brodkin@synopsys.com> wrote:
> Hi Daniel,
>
> On Thu, 2018-04-05@08:18 +0200, Daniel Vetter wrote:
>> On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
>> <Alexey.Brodkin@synopsys.com> wrote:
>> > Hello,
>> >
>> > We're trying to use DisplayLink USB2-to-HDMI adapter to render GPU-accelerated graphics.
>> > Hardware setup is as simple as a devboard + DisplayLink adapter.
>> > Devboards we use for this experiment are:
>> >  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
>> >  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as well)
>> >
>> > I'm sure any other board with DRM supported GPU will work, those we just used
>> > as the very recent Linux kernels could be easily run on them both.
>> >
>> > Basically the problem is UDL needs to be explicitly notified about new data
>> > to be rendered on the screen compared to typical bit-streamers that infinitely
>> > scan a dedicated buffer in memory.
>> >
>> > In case of UDL there're just 2 ways for this notification:
>> >  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs->page_flip()
>> >  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs->dirty()
>> >
>> > But neither of IOCTLs happen when we run Xserver with xf86-video-armada driver
>> > (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-3Dunstable-2Ddevel&d=DwIBaQ&
>> > c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
>> > 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
>> >
>> > Is it something missing in Xserver or in UDL driver?
>>
>> Use the -modesetting driverr for UDL, that one works correctly.
>
> If you're talking about "modesetting" driver of Xserver [1] then indeed
> picture is displayed on the screen. But there I guess won't be any 3D acceleration.
>
> At least that's what was suggested to me earlier here [2] by Lucas:
> ---------------------------->8---------------------------
> For 3D acceleration to work under X you need the etnaviv specific DDX
> driver, which can be found here:
>
> http://git.arm.linux.org.uk/cgit/xf86-video-armada.git/log/?h=unstable-devel

You definitely want to use -modesetting for UDL. And I thought with
glamour and the corresponding mesa work you should also get
accelaration. Insisting that you must use a driver-specific ddx is
broken, the world doesn't work like that anymore.

Lucas, can you pls clarify? Also, why does -armada bind against all
kms drivers, that's probaly too much.
-Daniel

> ---------------------------->8---------------------------
>
> [1] https://cgit.freedesktop.org/xorg/xserver/tree/hw/xfree86/drivers/modesetting
> [2] http://lists.infradead.org/pipermail/linux-snps-arc/2017-November/003031.html
>
> -Alexey



-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: DRM_UDL and GPU under Xserver
@ 2018-04-05  9:32       ` Daniel Vetter
  0 siblings, 0 replies; 30+ messages in thread
From: Daniel Vetter @ 2018-04-05  9:32 UTC (permalink / raw)
  To: Alexey Brodkin
  Cc: Jose.Abreu, airlied, dri-devel, airlied, alexander.deucher,
	daniel.vetter, linux-snps-arc

On Thu, Apr 5, 2018 at 9:16 AM, Alexey Brodkin
<Alexey.Brodkin@synopsys.com> wrote:
> Hi Daniel,
>
> On Thu, 2018-04-05 at 08:18 +0200, Daniel Vetter wrote:
>> On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
>> <Alexey.Brodkin@synopsys.com> wrote:
>> > Hello,
>> >
>> > We're trying to use DisplayLink USB2-to-HDMI adapter to render GPU-accelerated graphics.
>> > Hardware setup is as simple as a devboard + DisplayLink adapter.
>> > Devboards we use for this experiment are:
>> >  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
>> >  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as well)
>> >
>> > I'm sure any other board with DRM supported GPU will work, those we just used
>> > as the very recent Linux kernels could be easily run on them both.
>> >
>> > Basically the problem is UDL needs to be explicitly notified about new data
>> > to be rendered on the screen compared to typical bit-streamers that infinitely
>> > scan a dedicated buffer in memory.
>> >
>> > In case of UDL there're just 2 ways for this notification:
>> >  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs->page_flip()
>> >  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs->dirty()
>> >
>> > But neither of IOCTLs happen when we run Xserver with xf86-video-armada driver
>> > (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-3Dunstable-2Ddevel&d=DwIBaQ&
>> > c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
>> > 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
>> >
>> > Is it something missing in Xserver or in UDL driver?
>>
>> Use the -modesetting driverr for UDL, that one works correctly.
>
> If you're talking about "modesetting" driver of Xserver [1] then indeed
> picture is displayed on the screen. But there I guess won't be any 3D acceleration.
>
> At least that's what was suggested to me earlier here [2] by Lucas:
> ---------------------------->8---------------------------
> For 3D acceleration to work under X you need the etnaviv specific DDX
> driver, which can be found here:
>
> http://git.arm.linux.org.uk/cgit/xf86-video-armada.git/log/?h=unstable-devel

You definitely want to use -modesetting for UDL. And I thought with
glamour and the corresponding mesa work you should also get
accelaration. Insisting that you must use a driver-specific ddx is
broken, the world doesn't work like that anymore.

Lucas, can you pls clarify? Also, why does -armada bind against all
kms drivers, that's probaly too much.
-Daniel

> ---------------------------->8---------------------------
>
> [1] https://cgit.freedesktop.org/xorg/xserver/tree/hw/xfree86/drivers/modesetting
> [2] http://lists.infradead.org/pipermail/linux-snps-arc/2017-November/003031.html
>
> -Alexey



-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* DRM_UDL and GPU under Xserver
  2018-04-05  9:32       ` Daniel Vetter
@ 2018-04-05 10:10         ` Jose Abreu
  -1 siblings, 0 replies; 30+ messages in thread
From: Jose Abreu @ 2018-04-05 10:10 UTC (permalink / raw)
  To: linux-snps-arc

Hi Alexey, Daniel,

On 05-04-2018 10:32, Daniel Vetter wrote:
> On Thu, Apr 5, 2018 at 9:16 AM, Alexey Brodkin
> <Alexey.Brodkin@synopsys.com> wrote:
>> Hi Daniel,
>>
>> On Thu, 2018-04-05@08:18 +0200, Daniel Vetter wrote:
>>> On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
>>> <Alexey.Brodkin@synopsys.com> wrote:
>>>> Hello,
>>>>
>>>> We're trying to use DisplayLink USB2-to-HDMI adapter to render GPU-accelerated graphics.
>>>> Hardware setup is as simple as a devboard + DisplayLink adapter.
>>>> Devboards we use for this experiment are:
>>>>  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
>>>>  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as well)
>>>>
>>>> I'm sure any other board with DRM supported GPU will work, those we just used
>>>> as the very recent Linux kernels could be easily run on them both.
>>>>
>>>> Basically the problem is UDL needs to be explicitly notified about new data
>>>> to be rendered on the screen compared to typical bit-streamers that infinitely
>>>> scan a dedicated buffer in memory.
>>>>
>>>> In case of UDL there're just 2 ways for this notification:
>>>>  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs->page_flip()
>>>>  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs->dirty()
>>>>
>>>> But neither of IOCTLs happen when we run Xserver with xf86-video-armada driver
>>>> (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-3Dunstable-2Ddevel&d=DwIBaQ&
>>>> c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
>>>> 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
>>>>
>>>> Is it something missing in Xserver or in UDL driver?
>>> Use the -modesetting driverr for UDL, that one works correctly.
>> If you're talking about "modesetting" driver of Xserver [1] then indeed
>> picture is displayed on the screen. But there I guess won't be any 3D acceleration.
>>
>> At least that's what was suggested to me earlier here [2] by Lucas:
>> ---------------------------->8---------------------------
>> For 3D acceleration to work under X you need the etnaviv specific DDX
>> driver, which can be found here:
>>
>> https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-3Dunstable-2Ddevel&d=DwIGaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=yaVFU4TjGY0gVF8El1uKcisy6TPsyCl9uN7Wsis-qhY&m=NxAlhKaLZI6JlMs1pUBPHr79zFQ8ytECx0wtkVRrkeQ&s=9XSI0qYPrADUy1eUuKDexVOT98l9APph-ArYowGWwow&e=
> You definitely want to use -modesetting for UDL. And I thought with
> glamour and the corresponding mesa work you should also get
> accelaration. Insisting that you must use a driver-specific ddx is
> broken, the world doesn't work like that anymore.

I think what Alexey wants to do is not supported by -modesetting
driver. He wants to offload rendering to a Vivante GPU and then
display the result in *another* output ... For this I think full
PRIME support is needed, right? I see -modesetting has
drmPrimeFDToHandle but no drmPrimeHandleToFD support. In other
words -modesetting can not export buffers to another -modesetting
driver, it can only import them (?)

Thanks and Best Regards,
Jose Miguel Abreu

>
> Lucas, can you pls clarify? Also, why does -armada bind against all
> kms drivers, that's probaly too much.
> -Daniel
>
>> ---------------------------->8---------------------------
>>
>> [1] https://urldefense.proofpoint.com/v2/url?u=https-3A__cgit.freedesktop.org_xorg_xserver_tree_hw_xfree86_drivers_modesetting&d=DwIGaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=yaVFU4TjGY0gVF8El1uKcisy6TPsyCl9uN7Wsis-qhY&m=NxAlhKaLZI6JlMs1pUBPHr79zFQ8ytECx0wtkVRrkeQ&s=yvnVItPaOgvVT8aJFwTO5XXLCCmlSiD89JwhcGeo7MI&e=
>> [2] https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.infradead.org_pipermail_linux-2Dsnps-2Darc_2017-2DNovember_003031.html&d=DwIGaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=yaVFU4TjGY0gVF8El1uKcisy6TPsyCl9uN7Wsis-qhY&m=NxAlhKaLZI6JlMs1pUBPHr79zFQ8ytECx0wtkVRrkeQ&s=8gdiQaxAN7AT_2vwaIpXpXfVPSPKPM275rlmcQZKu28&e=
>>
>> -Alexey
>
>

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: DRM_UDL and GPU under Xserver
@ 2018-04-05 10:10         ` Jose Abreu
  0 siblings, 0 replies; 30+ messages in thread
From: Jose Abreu @ 2018-04-05 10:10 UTC (permalink / raw)
  To: Daniel Vetter, Alexey Brodkin
  Cc: Jose.Abreu, airlied, dri-devel, airlied, alexander.deucher,
	daniel.vetter, linux-snps-arc

Hi Alexey, Daniel,

On 05-04-2018 10:32, Daniel Vetter wrote:
> On Thu, Apr 5, 2018 at 9:16 AM, Alexey Brodkin
> <Alexey.Brodkin@synopsys.com> wrote:
>> Hi Daniel,
>>
>> On Thu, 2018-04-05 at 08:18 +0200, Daniel Vetter wrote:
>>> On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
>>> <Alexey.Brodkin@synopsys.com> wrote:
>>>> Hello,
>>>>
>>>> We're trying to use DisplayLink USB2-to-HDMI adapter to render GPU-accelerated graphics.
>>>> Hardware setup is as simple as a devboard + DisplayLink adapter.
>>>> Devboards we use for this experiment are:
>>>>  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
>>>>  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as well)
>>>>
>>>> I'm sure any other board with DRM supported GPU will work, those we just used
>>>> as the very recent Linux kernels could be easily run on them both.
>>>>
>>>> Basically the problem is UDL needs to be explicitly notified about new data
>>>> to be rendered on the screen compared to typical bit-streamers that infinitely
>>>> scan a dedicated buffer in memory.
>>>>
>>>> In case of UDL there're just 2 ways for this notification:
>>>>  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs->page_flip()
>>>>  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs->dirty()
>>>>
>>>> But neither of IOCTLs happen when we run Xserver with xf86-video-armada driver
>>>> (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-3Dunstable-2Ddevel&d=DwIBaQ&
>>>> c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
>>>> 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
>>>>
>>>> Is it something missing in Xserver or in UDL driver?
>>> Use the -modesetting driverr for UDL, that one works correctly.
>> If you're talking about "modesetting" driver of Xserver [1] then indeed
>> picture is displayed on the screen. But there I guess won't be any 3D acceleration.
>>
>> At least that's what was suggested to me earlier here [2] by Lucas:
>> ---------------------------->8---------------------------
>> For 3D acceleration to work under X you need the etnaviv specific DDX
>> driver, which can be found here:
>>
>> https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-3Dunstable-2Ddevel&d=DwIGaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=yaVFU4TjGY0gVF8El1uKcisy6TPsyCl9uN7Wsis-qhY&m=NxAlhKaLZI6JlMs1pUBPHr79zFQ8ytECx0wtkVRrkeQ&s=9XSI0qYPrADUy1eUuKDexVOT98l9APph-ArYowGWwow&e=
> You definitely want to use -modesetting for UDL. And I thought with
> glamour and the corresponding mesa work you should also get
> accelaration. Insisting that you must use a driver-specific ddx is
> broken, the world doesn't work like that anymore.

I think what Alexey wants to do is not supported by -modesetting
driver. He wants to offload rendering to a Vivante GPU and then
display the result in *another* output ... For this I think full
PRIME support is needed, right? I see -modesetting has
drmPrimeFDToHandle but no drmPrimeHandleToFD support. In other
words -modesetting can not export buffers to another -modesetting
driver, it can only import them (?)

Thanks and Best Regards,
Jose Miguel Abreu

>
> Lucas, can you pls clarify? Also, why does -armada bind against all
> kms drivers, that's probaly too much.
> -Daniel
>
>> ---------------------------->8---------------------------
>>
>> [1] https://urldefense.proofpoint.com/v2/url?u=https-3A__cgit.freedesktop.org_xorg_xserver_tree_hw_xfree86_drivers_modesetting&d=DwIGaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=yaVFU4TjGY0gVF8El1uKcisy6TPsyCl9uN7Wsis-qhY&m=NxAlhKaLZI6JlMs1pUBPHr79zFQ8ytECx0wtkVRrkeQ&s=yvnVItPaOgvVT8aJFwTO5XXLCCmlSiD89JwhcGeo7MI&e=
>> [2] https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.infradead.org_pipermail_linux-2Dsnps-2Darc_2017-2DNovember_003031.html&d=DwIGaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=yaVFU4TjGY0gVF8El1uKcisy6TPsyCl9uN7Wsis-qhY&m=NxAlhKaLZI6JlMs1pUBPHr79zFQ8ytECx0wtkVRrkeQ&s=8gdiQaxAN7AT_2vwaIpXpXfVPSPKPM275rlmcQZKu28&e=
>>
>> -Alexey
>
>

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* DRM_UDL and GPU under Xserver
  2018-04-05  9:32       ` Daniel Vetter
@ 2018-04-05 10:29         ` Lucas Stach
  -1 siblings, 0 replies; 30+ messages in thread
From: Lucas Stach @ 2018-04-05 10:29 UTC (permalink / raw)
  To: linux-snps-arc

Am Donnerstag, den 05.04.2018, 11:32 +0200 schrieb Daniel Vetter:
> On Thu, Apr 5, 2018 at 9:16 AM, Alexey Brodkin
> <Alexey.Brodkin@synopsys.com> wrote:
> > Hi Daniel,
> > 
> > On Thu, 2018-04-05@08:18 +0200, Daniel Vetter wrote:
> > > On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
> > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > Hello,
> > > > 
> > > > We're trying to use DisplayLink USB2-to-HDMI adapter to render
> > > > GPU-accelerated graphics.
> > > > Hardware setup is as simple as a devboard + DisplayLink
> > > > adapter.
> > > > Devboards we use for this experiment are:
> > > > ?* Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
> > > > ?* HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as
> > > > well)
> > > > 
> > > > I'm sure any other board with DRM supported GPU will work,
> > > > those we just used
> > > > as the very recent Linux kernels could be easily run on them
> > > > both.
> > > > 
> > > > Basically the problem is UDL needs to be explicitly notified
> > > > about new data
> > > > to be rendered on the screen compared to typical bit-streamers
> > > > that infinitely
> > > > scan a dedicated buffer in memory.
> > > > 
> > > > In case of UDL there're just 2 ways for this notification:
> > > > ?1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs-
> > > > >page_flip()
> > > > ?2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs-
> > > > >dirty()
> > > > 
> > > > But neither of IOCTLs happen when we run Xserver with xf86-
> > > > video-armada driver
> > > > (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.ar
> > > > m.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-
> > > > 3Dunstable-2Ddevel&d=DwIBaQ&;
> > > > c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkh
> > > > pk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
> > > > 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
> > > > 
> > > > Is it something missing in Xserver or in UDL driver?
> > > 
> > > Use the -modesetting driverr for UDL, that one works correctly.
> > 
> > If you're talking about "modesetting" driver of Xserver [1] then
> > indeed
> > picture is displayed on the screen. But there I guess won't be any
> > 3D acceleration.
> > 
> > At least that's what was suggested to me earlier here [2] by Lucas:
> > ---------------------------->8---------------------------
> > For 3D acceleration to work under X you need the etnaviv specific
> > DDX
> > driver, which can be found here:
> > 
> > http://git.arm.linux.org.uk/cgit/xf86-video-armada.git/log/?h=unsta
> > ble-devel
> 
> You definitely want to use -modesetting for UDL. And I thought with
> glamour and the corresponding mesa work you should also get
> accelaration. Insisting that you must use a driver-specific ddx is
> broken, the world doesn't work like that anymore.

On etnaviv the world definitely still works like this. The etnaviv DDX
uses the dedicated 2D hardware of the Vivante GPUs, which is much
faster and efficient than going through Glamor.
Especially since almost all X accel operations are done on linear
buffers, while the 3D GPU can only ever do tiled on both sampler and
render, where some multi-pipe 3D cores can't even read the tiling they
write out. So Glamor is an endless copy fest using the resolve engine
on those.

If using etnaviv with UDL is a use-case that need to be supported, one
would need to port the UDL specifics from -modesetting to the -armada
DDX.

> Lucas, can you pls clarify? Also, why does -armada bind against all
> kms drivers, that's probaly too much.

I think that's a local modification done by Alexey. The armada driver
only binds to armada and imx-drm by default.

Regards,
Lucas

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: DRM_UDL and GPU under Xserver
@ 2018-04-05 10:29         ` Lucas Stach
  0 siblings, 0 replies; 30+ messages in thread
From: Lucas Stach @ 2018-04-05 10:29 UTC (permalink / raw)
  To: Daniel Vetter, Alexey Brodkin
  Cc: Jose.Abreu, airlied, dri-devel, airlied, alexander.deucher,
	daniel.vetter, linux-snps-arc

Am Donnerstag, den 05.04.2018, 11:32 +0200 schrieb Daniel Vetter:
> On Thu, Apr 5, 2018 at 9:16 AM, Alexey Brodkin
> <Alexey.Brodkin@synopsys.com> wrote:
> > Hi Daniel,
> > 
> > On Thu, 2018-04-05 at 08:18 +0200, Daniel Vetter wrote:
> > > On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
> > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > Hello,
> > > > 
> > > > We're trying to use DisplayLink USB2-to-HDMI adapter to render
> > > > GPU-accelerated graphics.
> > > > Hardware setup is as simple as a devboard + DisplayLink
> > > > adapter.
> > > > Devboards we use for this experiment are:
> > > >  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
> > > >  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as
> > > > well)
> > > > 
> > > > I'm sure any other board with DRM supported GPU will work,
> > > > those we just used
> > > > as the very recent Linux kernels could be easily run on them
> > > > both.
> > > > 
> > > > Basically the problem is UDL needs to be explicitly notified
> > > > about new data
> > > > to be rendered on the screen compared to typical bit-streamers
> > > > that infinitely
> > > > scan a dedicated buffer in memory.
> > > > 
> > > > In case of UDL there're just 2 ways for this notification:
> > > >  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs-
> > > > >page_flip()
> > > >  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs-
> > > > >dirty()
> > > > 
> > > > But neither of IOCTLs happen when we run Xserver with xf86-
> > > > video-armada driver
> > > > (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.ar
> > > > m.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-
> > > > 3Dunstable-2Ddevel&d=DwIBaQ&;
> > > > c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkh
> > > > pk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
> > > > 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
> > > > 
> > > > Is it something missing in Xserver or in UDL driver?
> > > 
> > > Use the -modesetting driverr for UDL, that one works correctly.
> > 
> > If you're talking about "modesetting" driver of Xserver [1] then
> > indeed
> > picture is displayed on the screen. But there I guess won't be any
> > 3D acceleration.
> > 
> > At least that's what was suggested to me earlier here [2] by Lucas:
> > ---------------------------->8---------------------------
> > For 3D acceleration to work under X you need the etnaviv specific
> > DDX
> > driver, which can be found here:
> > 
> > http://git.arm.linux.org.uk/cgit/xf86-video-armada.git/log/?h=unsta
> > ble-devel
> 
> You definitely want to use -modesetting for UDL. And I thought with
> glamour and the corresponding mesa work you should also get
> accelaration. Insisting that you must use a driver-specific ddx is
> broken, the world doesn't work like that anymore.

On etnaviv the world definitely still works like this. The etnaviv DDX
uses the dedicated 2D hardware of the Vivante GPUs, which is much
faster and efficient than going through Glamor.
Especially since almost all X accel operations are done on linear
buffers, while the 3D GPU can only ever do tiled on both sampler and
render, where some multi-pipe 3D cores can't even read the tiling they
write out. So Glamor is an endless copy fest using the resolve engine
on those.

If using etnaviv with UDL is a use-case that need to be supported, one
would need to port the UDL specifics from -modesetting to the -armada
DDX.

> Lucas, can you pls clarify? Also, why does -armada bind against all
> kms drivers, that's probaly too much.

I think that's a local modification done by Alexey. The armada driver
only binds to armada and imx-drm by default.

Regards,
Lucas
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* DRM_UDL and GPU under Xserver
  2018-04-05 10:29         ` Lucas Stach
@ 2018-04-05 10:59           ` Daniel Vetter
  -1 siblings, 0 replies; 30+ messages in thread
From: Daniel Vetter @ 2018-04-05 10:59 UTC (permalink / raw)
  To: linux-snps-arc

On Thu, Apr 5, 2018@12:29 PM, Lucas Stach <l.stach@pengutronix.de> wrote:
> Am Donnerstag, den 05.04.2018, 11:32 +0200 schrieb Daniel Vetter:
>> On Thu, Apr 5, 2018 at 9:16 AM, Alexey Brodkin
>> <Alexey.Brodkin@synopsys.com> wrote:
>> > Hi Daniel,
>> >
>> > On Thu, 2018-04-05@08:18 +0200, Daniel Vetter wrote:
>> > > On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
>> > > <Alexey.Brodkin@synopsys.com> wrote:
>> > > > Hello,
>> > > >
>> > > > We're trying to use DisplayLink USB2-to-HDMI adapter to render
>> > > > GPU-accelerated graphics.
>> > > > Hardware setup is as simple as a devboard + DisplayLink
>> > > > adapter.
>> > > > Devboards we use for this experiment are:
>> > > >  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
>> > > >  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as
>> > > > well)
>> > > >
>> > > > I'm sure any other board with DRM supported GPU will work,
>> > > > those we just used
>> > > > as the very recent Linux kernels could be easily run on them
>> > > > both.
>> > > >
>> > > > Basically the problem is UDL needs to be explicitly notified
>> > > > about new data
>> > > > to be rendered on the screen compared to typical bit-streamers
>> > > > that infinitely
>> > > > scan a dedicated buffer in memory.
>> > > >
>> > > > In case of UDL there're just 2 ways for this notification:
>> > > >  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs-
>> > > > >page_flip()
>> > > >  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs-
>> > > > >dirty()
>> > > >
>> > > > But neither of IOCTLs happen when we run Xserver with xf86-
>> > > > video-armada driver
>> > > > (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.ar
>> > > > m.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-
>> > > > 3Dunstable-2Ddevel&d=DwIBaQ&;
>> > > > c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkh
>> > > > pk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
>> > > > 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
>> > > >
>> > > > Is it something missing in Xserver or in UDL driver?
>> > >
>> > > Use the -modesetting driverr for UDL, that one works correctly.
>> >
>> > If you're talking about "modesetting" driver of Xserver [1] then
>> > indeed
>> > picture is displayed on the screen. But there I guess won't be any
>> > 3D acceleration.
>> >
>> > At least that's what was suggested to me earlier here [2] by Lucas:
>> > ---------------------------->8---------------------------
>> > For 3D acceleration to work under X you need the etnaviv specific
>> > DDX
>> > driver, which can be found here:
>> >
>> > http://git.arm.linux.org.uk/cgit/xf86-video-armada.git/log/?h=unsta
>> > ble-devel
>>
>> You definitely want to use -modesetting for UDL. And I thought with
>> glamour and the corresponding mesa work you should also get
>> accelaration. Insisting that you must use a driver-specific ddx is
>> broken, the world doesn't work like that anymore.
>
> On etnaviv the world definitely still works like this. The etnaviv DDX
> uses the dedicated 2D hardware of the Vivante GPUs, which is much
> faster and efficient than going through Glamor.
> Especially since almost all X accel operations are done on linear
> buffers, while the 3D GPU can only ever do tiled on both sampler and
> render, where some multi-pipe 3D cores can't even read the tiling they
> write out. So Glamor is an endless copy fest using the resolve engine
> on those.

Ah right, I've forgotten about the vivante 2d cores again.

> If using etnaviv with UDL is a use-case that need to be supported, one
> would need to port the UDL specifics from -modesetting to the -armada
> DDX.

I don't think this makes sense.

>> Lucas, can you pls clarify? Also, why does -armada bind against all
>> kms drivers, that's probaly too much.
>
> I think that's a local modification done by Alexey. The armada driver
> only binds to armada and imx-drm by default.

Yeah, that sounds a lot more reasonable than trying to teach -armada
about all the things -modesetting already knows to be able to be a
generic kms driver.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: DRM_UDL and GPU under Xserver
@ 2018-04-05 10:59           ` Daniel Vetter
  0 siblings, 0 replies; 30+ messages in thread
From: Daniel Vetter @ 2018-04-05 10:59 UTC (permalink / raw)
  To: Lucas Stach
  Cc: Jose.Abreu, airlied, Alexey Brodkin, dri-devel, airlied,
	alexander.deucher, daniel.vetter, linux-snps-arc

On Thu, Apr 5, 2018 at 12:29 PM, Lucas Stach <l.stach@pengutronix.de> wrote:
> Am Donnerstag, den 05.04.2018, 11:32 +0200 schrieb Daniel Vetter:
>> On Thu, Apr 5, 2018 at 9:16 AM, Alexey Brodkin
>> <Alexey.Brodkin@synopsys.com> wrote:
>> > Hi Daniel,
>> >
>> > On Thu, 2018-04-05 at 08:18 +0200, Daniel Vetter wrote:
>> > > On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
>> > > <Alexey.Brodkin@synopsys.com> wrote:
>> > > > Hello,
>> > > >
>> > > > We're trying to use DisplayLink USB2-to-HDMI adapter to render
>> > > > GPU-accelerated graphics.
>> > > > Hardware setup is as simple as a devboard + DisplayLink
>> > > > adapter.
>> > > > Devboards we use for this experiment are:
>> > > >  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
>> > > >  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as
>> > > > well)
>> > > >
>> > > > I'm sure any other board with DRM supported GPU will work,
>> > > > those we just used
>> > > > as the very recent Linux kernels could be easily run on them
>> > > > both.
>> > > >
>> > > > Basically the problem is UDL needs to be explicitly notified
>> > > > about new data
>> > > > to be rendered on the screen compared to typical bit-streamers
>> > > > that infinitely
>> > > > scan a dedicated buffer in memory.
>> > > >
>> > > > In case of UDL there're just 2 ways for this notification:
>> > > >  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs-
>> > > > >page_flip()
>> > > >  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs-
>> > > > >dirty()
>> > > >
>> > > > But neither of IOCTLs happen when we run Xserver with xf86-
>> > > > video-armada driver
>> > > > (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.ar
>> > > > m.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-
>> > > > 3Dunstable-2Ddevel&d=DwIBaQ&;
>> > > > c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkh
>> > > > pk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
>> > > > 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
>> > > >
>> > > > Is it something missing in Xserver or in UDL driver?
>> > >
>> > > Use the -modesetting driverr for UDL, that one works correctly.
>> >
>> > If you're talking about "modesetting" driver of Xserver [1] then
>> > indeed
>> > picture is displayed on the screen. But there I guess won't be any
>> > 3D acceleration.
>> >
>> > At least that's what was suggested to me earlier here [2] by Lucas:
>> > ---------------------------->8---------------------------
>> > For 3D acceleration to work under X you need the etnaviv specific
>> > DDX
>> > driver, which can be found here:
>> >
>> > http://git.arm.linux.org.uk/cgit/xf86-video-armada.git/log/?h=unsta
>> > ble-devel
>>
>> You definitely want to use -modesetting for UDL. And I thought with
>> glamour and the corresponding mesa work you should also get
>> accelaration. Insisting that you must use a driver-specific ddx is
>> broken, the world doesn't work like that anymore.
>
> On etnaviv the world definitely still works like this. The etnaviv DDX
> uses the dedicated 2D hardware of the Vivante GPUs, which is much
> faster and efficient than going through Glamor.
> Especially since almost all X accel operations are done on linear
> buffers, while the 3D GPU can only ever do tiled on both sampler and
> render, where some multi-pipe 3D cores can't even read the tiling they
> write out. So Glamor is an endless copy fest using the resolve engine
> on those.

Ah right, I've forgotten about the vivante 2d cores again.

> If using etnaviv with UDL is a use-case that need to be supported, one
> would need to port the UDL specifics from -modesetting to the -armada
> DDX.

I don't think this makes sense.

>> Lucas, can you pls clarify? Also, why does -armada bind against all
>> kms drivers, that's probaly too much.
>
> I think that's a local modification done by Alexey. The armada driver
> only binds to armada and imx-drm by default.

Yeah, that sounds a lot more reasonable than trying to teach -armada
about all the things -modesetting already knows to be able to be a
generic kms driver.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* DRM_UDL and GPU under Xserver
  2018-04-05 10:59           ` Daniel Vetter
@ 2018-04-05 11:10             ` Alexey Brodkin
  -1 siblings, 0 replies; 30+ messages in thread
From: Alexey Brodkin @ 2018-04-05 11:10 UTC (permalink / raw)
  To: linux-snps-arc

Hi Daniel, Lucas,

On Thu, 2018-04-05@12:59 +0200, Daniel Vetter wrote:
> On Thu, Apr 5, 2018@12:29 PM, Lucas Stach <l.stach@pengutronix.de> wrote:
> > Am Donnerstag, den 05.04.2018, 11:32 +0200 schrieb Daniel Vetter:
> > > On Thu, Apr 5, 2018 at 9:16 AM, Alexey Brodkin
> > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > Hi Daniel,
> > > > 
> > > > On Thu, 2018-04-05@08:18 +0200, Daniel Vetter wrote:
> > > > > On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
> > > > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > > > Hello,
> > > > > > 
> > > > > > We're trying to use DisplayLink USB2-to-HDMI adapter to render
> > > > > > GPU-accelerated graphics.
> > > > > > Hardware setup is as simple as a devboard + DisplayLink
> > > > > > adapter.
> > > > > > Devboards we use for this experiment are:
> > > > > >  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
> > > > > >  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as
> > > > > > well)
> > > > > > 
> > > > > > I'm sure any other board with DRM supported GPU will work,
> > > > > > those we just used
> > > > > > as the very recent Linux kernels could be easily run on them
> > > > > > both.
> > > > > > 
> > > > > > Basically the problem is UDL needs to be explicitly notified
> > > > > > about new data
> > > > > > to be rendered on the screen compared to typical bit-streamers
> > > > > > that infinitely
> > > > > > scan a dedicated buffer in memory.
> > > > > > 
> > > > > > In case of UDL there're just 2 ways for this notification:
> > > > > >  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs-
> > > > > > > page_flip()
> > > > > > 
> > > > > >  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs-
> > > > > > > dirty()
> > > > > > 
> > > > > > But neither of IOCTLs happen when we run Xserver with xf86-
> > > > > > video-armada driver
> > > > > > (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.ar
> > > > > > m.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-
> > > > > > 3Dunstable-2Ddevel&d=DwIBaQ&;
> > > > > > c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkh
> > > > > > pk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
> > > > > > 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
> > > > > > 
> > > > > > Is it something missing in Xserver or in UDL driver?
> > > > > 
> > > > > Use the -modesetting driverr for UDL, that one works correctly.
> > > > 
> > > > If you're talking about "modesetting" driver of Xserver [1] then
> > > > indeed
> > > > picture is displayed on the screen. But there I guess won't be any
> > > > 3D acceleration.
> > > > 
> > > > At least that's what was suggested to me earlier here [2] by Lucas:
> > > > ---------------------------->8---------------------------
> > > > For 3D acceleration to work under X you need the etnaviv specific
> > > > DDX
> > > > driver, which can be found here:
> > > > 
> > > > https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-3Dunsta&d=DwIBaQ&c=DPL6_X_6Jk
> > > > XFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=FleDFAQb2lBcZk5DMld7qpeSrB5Srsb4XPQecA5BPvU&s=YUzMQWe3lpC_pjGqRjb4MvRYh16ZBbealqf
> > > > rywlqjKE&e=
> > > > ble-devel
> > > 
> > > You definitely want to use -modesetting for UDL. And I thought with
> > > glamour and the corresponding mesa work you should also get
> > > accelaration. Insisting that you must use a driver-specific ddx is
> > > broken, the world doesn't work like that anymore.
> > 
> > On etnaviv the world definitely still works like this. The etnaviv DDX
> > uses the dedicated 2D hardware of the Vivante GPUs, which is much
> > faster and efficient than going through Glamor.
> > Especially since almost all X accel operations are done on linear
> > buffers, while the 3D GPU can only ever do tiled on both sampler and
> > render, where some multi-pipe 3D cores can't even read the tiling they
> > write out. So Glamor is an endless copy fest using the resolve engine
> > on those.
> 
> Ah right, I've forgotten about the vivante 2d cores again.
> 
> > If using etnaviv with UDL is a use-case that need to be supported, one
> > would need to port the UDL specifics from -modesetting to the -armada
> > DDX.
> 
> I don't think this makes sense.

I'm not really sure it has something to do with Etnaviv in particular.
Given UDL might be attached to any board with any GPU that would mean we'd
need to add those "UDL specifics from -modesetting" in all xf86-video-drivers,
right?

> > > Lucas, can you pls clarify? Also, why does -armada bind against all
> > > kms drivers, that's probaly too much.
> > 
> > I think that's a local modification done by Alexey. The armada driver
> > only binds to armada and imx-drm by default.

Actually it all magically works without any modifications.
I just start X with the following xorg.conf [1]:
------------------------>8--------------------------
Section "Device"
	Identifier	"Driver0"
	Screen		0
	Driver		"armada"
EndSection
------------------------>8--------------------------

In fact in case of "kmscube" I had to trick Mesa like that:
------------------------>8--------------------------
export MESA_LOADER_DRIVER_OVERRIDE=imx-drm
------------------------>8--------------------------
And then UDL out works perfectly fine (that's because "kmscube"
explicitly calls drmModePageFlip()).

As for Xserver nothing special was done.

[1] http://git.arm.linux.org.uk/cgit/xf86-video-armada.git/tree/conf/xorg-sample.conf?h=unstable-devel

-Alexey

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: DRM_UDL and GPU under Xserver
@ 2018-04-05 11:10             ` Alexey Brodkin
  0 siblings, 0 replies; 30+ messages in thread
From: Alexey Brodkin @ 2018-04-05 11:10 UTC (permalink / raw)
  To: l.stach, daniel.vetter
  Cc: Jose.Abreu, airlied, dri-devel, seanpaul, airlied,
	alexander.deucher, daniel.vetter, linux-snps-arc

Hi Daniel, Lucas,

On Thu, 2018-04-05 at 12:59 +0200, Daniel Vetter wrote:
> On Thu, Apr 5, 2018 at 12:29 PM, Lucas Stach <l.stach@pengutronix.de> wrote:
> > Am Donnerstag, den 05.04.2018, 11:32 +0200 schrieb Daniel Vetter:
> > > On Thu, Apr 5, 2018 at 9:16 AM, Alexey Brodkin
> > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > Hi Daniel,
> > > > 
> > > > On Thu, 2018-04-05 at 08:18 +0200, Daniel Vetter wrote:
> > > > > On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
> > > > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > > > Hello,
> > > > > > 
> > > > > > We're trying to use DisplayLink USB2-to-HDMI adapter to render
> > > > > > GPU-accelerated graphics.
> > > > > > Hardware setup is as simple as a devboard + DisplayLink
> > > > > > adapter.
> > > > > > Devboards we use for this experiment are:
> > > > > >  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
> > > > > >  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as
> > > > > > well)
> > > > > > 
> > > > > > I'm sure any other board with DRM supported GPU will work,
> > > > > > those we just used
> > > > > > as the very recent Linux kernels could be easily run on them
> > > > > > both.
> > > > > > 
> > > > > > Basically the problem is UDL needs to be explicitly notified
> > > > > > about new data
> > > > > > to be rendered on the screen compared to typical bit-streamers
> > > > > > that infinitely
> > > > > > scan a dedicated buffer in memory.
> > > > > > 
> > > > > > In case of UDL there're just 2 ways for this notification:
> > > > > >  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs-
> > > > > > > page_flip()
> > > > > > 
> > > > > >  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs-
> > > > > > > dirty()
> > > > > > 
> > > > > > But neither of IOCTLs happen when we run Xserver with xf86-
> > > > > > video-armada driver
> > > > > > (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.ar
> > > > > > m.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-
> > > > > > 3Dunstable-2Ddevel&d=DwIBaQ&;
> > > > > > c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkh
> > > > > > pk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
> > > > > > 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
> > > > > > 
> > > > > > Is it something missing in Xserver or in UDL driver?
> > > > > 
> > > > > Use the -modesetting driverr for UDL, that one works correctly.
> > > > 
> > > > If you're talking about "modesetting" driver of Xserver [1] then
> > > > indeed
> > > > picture is displayed on the screen. But there I guess won't be any
> > > > 3D acceleration.
> > > > 
> > > > At least that's what was suggested to me earlier here [2] by Lucas:
> > > > ---------------------------->8---------------------------
> > > > For 3D acceleration to work under X you need the etnaviv specific
> > > > DDX
> > > > driver, which can be found here:
> > > > 
> > > > https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-3Dunsta&d=DwIBaQ&c=DPL6_X_6Jk
> > > > XFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=FleDFAQb2lBcZk5DMld7qpeSrB5Srsb4XPQecA5BPvU&s=YUzMQWe3lpC_pjGqRjb4MvRYh16ZBbealqf
> > > > rywlqjKE&e=
> > > > ble-devel
> > > 
> > > You definitely want to use -modesetting for UDL. And I thought with
> > > glamour and the corresponding mesa work you should also get
> > > accelaration. Insisting that you must use a driver-specific ddx is
> > > broken, the world doesn't work like that anymore.
> > 
> > On etnaviv the world definitely still works like this. The etnaviv DDX
> > uses the dedicated 2D hardware of the Vivante GPUs, which is much
> > faster and efficient than going through Glamor.
> > Especially since almost all X accel operations are done on linear
> > buffers, while the 3D GPU can only ever do tiled on both sampler and
> > render, where some multi-pipe 3D cores can't even read the tiling they
> > write out. So Glamor is an endless copy fest using the resolve engine
> > on those.
> 
> Ah right, I've forgotten about the vivante 2d cores again.
> 
> > If using etnaviv with UDL is a use-case that need to be supported, one
> > would need to port the UDL specifics from -modesetting to the -armada
> > DDX.
> 
> I don't think this makes sense.

I'm not really sure it has something to do with Etnaviv in particular.
Given UDL might be attached to any board with any GPU that would mean we'd
need to add those "UDL specifics from -modesetting" in all xf86-video-drivers,
right?

> > > Lucas, can you pls clarify? Also, why does -armada bind against all
> > > kms drivers, that's probaly too much.
> > 
> > I think that's a local modification done by Alexey. The armada driver
> > only binds to armada and imx-drm by default.

Actually it all magically works without any modifications.
I just start X with the following xorg.conf [1]:
------------------------>8--------------------------
Section "Device"
	Identifier	"Driver0"
	Screen		0
	Driver		"armada"
EndSection
------------------------>8--------------------------

In fact in case of "kmscube" I had to trick Mesa like that:
------------------------>8--------------------------
export MESA_LOADER_DRIVER_OVERRIDE=imx-drm
------------------------>8--------------------------
And then UDL out works perfectly fine (that's because "kmscube"
explicitly calls drmModePageFlip()).

As for Xserver nothing special was done.

[1] http://git.arm.linux.org.uk/cgit/xf86-video-armada.git/tree/conf/xorg-sample.conf?h=unstable-devel

-Alexey

^ permalink raw reply	[flat|nested] 30+ messages in thread

* DRM_UDL and GPU under Xserver
  2018-04-05 11:10             ` Alexey Brodkin
@ 2018-04-05 13:44               ` Daniel Vetter
  -1 siblings, 0 replies; 30+ messages in thread
From: Daniel Vetter @ 2018-04-05 13:44 UTC (permalink / raw)
  To: linux-snps-arc

On Thu, Apr 05, 2018@11:10:03AM +0000, Alexey Brodkin wrote:
> Hi Daniel, Lucas,
> 
> On Thu, 2018-04-05@12:59 +0200, Daniel Vetter wrote:
> > On Thu, Apr 5, 2018@12:29 PM, Lucas Stach <l.stach@pengutronix.de> wrote:
> > > Am Donnerstag, den 05.04.2018, 11:32 +0200 schrieb Daniel Vetter:
> > > > On Thu, Apr 5, 2018 at 9:16 AM, Alexey Brodkin
> > > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > > Hi Daniel,
> > > > > 
> > > > > On Thu, 2018-04-05@08:18 +0200, Daniel Vetter wrote:
> > > > > > On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
> > > > > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > > > > Hello,
> > > > > > > 
> > > > > > > We're trying to use DisplayLink USB2-to-HDMI adapter to render
> > > > > > > GPU-accelerated graphics.
> > > > > > > Hardware setup is as simple as a devboard + DisplayLink
> > > > > > > adapter.
> > > > > > > Devboards we use for this experiment are:
> > > > > > >  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
> > > > > > >  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as
> > > > > > > well)
> > > > > > > 
> > > > > > > I'm sure any other board with DRM supported GPU will work,
> > > > > > > those we just used
> > > > > > > as the very recent Linux kernels could be easily run on them
> > > > > > > both.
> > > > > > > 
> > > > > > > Basically the problem is UDL needs to be explicitly notified
> > > > > > > about new data
> > > > > > > to be rendered on the screen compared to typical bit-streamers
> > > > > > > that infinitely
> > > > > > > scan a dedicated buffer in memory.
> > > > > > > 
> > > > > > > In case of UDL there're just 2 ways for this notification:
> > > > > > >  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs-
> > > > > > > > page_flip()
> > > > > > > 
> > > > > > >  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs-
> > > > > > > > dirty()
> > > > > > > 
> > > > > > > But neither of IOCTLs happen when we run Xserver with xf86-
> > > > > > > video-armada driver
> > > > > > > (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.ar
> > > > > > > m.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-
> > > > > > > 3Dunstable-2Ddevel&d=DwIBaQ&;
> > > > > > > c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkh
> > > > > > > pk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
> > > > > > > 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
> > > > > > > 
> > > > > > > Is it something missing in Xserver or in UDL driver?
> > > > > > 
> > > > > > Use the -modesetting driverr for UDL, that one works correctly.
> > > > > 
> > > > > If you're talking about "modesetting" driver of Xserver [1] then
> > > > > indeed
> > > > > picture is displayed on the screen. But there I guess won't be any
> > > > > 3D acceleration.
> > > > > 
> > > > > At least that's what was suggested to me earlier here [2] by Lucas:
> > > > > ---------------------------->8---------------------------
> > > > > For 3D acceleration to work under X you need the etnaviv specific
> > > > > DDX
> > > > > driver, which can be found here:
> > > > > 
> > > > > https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-3Dunsta&d=DwIBaQ&c=DPL6_X_6Jk
> > > > > XFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=FleDFAQb2lBcZk5DMld7qpeSrB5Srsb4XPQecA5BPvU&s=YUzMQWe3lpC_pjGqRjb4MvRYh16ZBbealqf
> > > > > rywlqjKE&e=
> > > > > ble-devel
> > > > 
> > > > You definitely want to use -modesetting for UDL. And I thought with
> > > > glamour and the corresponding mesa work you should also get
> > > > accelaration. Insisting that you must use a driver-specific ddx is
> > > > broken, the world doesn't work like that anymore.
> > > 
> > > On etnaviv the world definitely still works like this. The etnaviv DDX
> > > uses the dedicated 2D hardware of the Vivante GPUs, which is much
> > > faster and efficient than going through Glamor.
> > > Especially since almost all X accel operations are done on linear
> > > buffers, while the 3D GPU can only ever do tiled on both sampler and
> > > render, where some multi-pipe 3D cores can't even read the tiling they
> > > write out. So Glamor is an endless copy fest using the resolve engine
> > > on those.
> > 
> > Ah right, I've forgotten about the vivante 2d cores again.
> > 
> > > If using etnaviv with UDL is a use-case that need to be supported, one
> > > would need to port the UDL specifics from -modesetting to the -armada
> > > DDX.
> > 
> > I don't think this makes sense.
> 
> I'm not really sure it has something to do with Etnaviv in particular.
> Given UDL might be attached to any board with any GPU that would mean we'd
> need to add those "UDL specifics from -modesetting" in all xf86-video-drivers,
> right?

X server supports multiple drivers (for different devices) in parallel.
You should be using armada for the imx-drm thing, and modesetting for udl.
And through the magic of prime it should even figure out that the device

> > > > Lucas, can you pls clarify? Also, why does -armada bind against all
> > > > kms drivers, that's probaly too much.
> > > 
> > > I think that's a local modification done by Alexey. The armada driver
> > > only binds to armada and imx-drm by default.
> 
> Actually it all magically works without any modifications.
> I just start X with the following xorg.conf [1]:
> ------------------------>8--------------------------
> Section "Device"
> 	Identifier	"Driver0"
> 	Screen		0
> 	Driver		"armada"
> EndSection
> ------------------------>8--------------------------
> 
> In fact in case of "kmscube" I had to trick Mesa like that:
> ------------------------>8--------------------------
> export MESA_LOADER_DRIVER_OVERRIDE=imx-drm

Yeah this shouldn't be necessary at all.

> ------------------------>8--------------------------
> And then UDL out works perfectly fine (that's because "kmscube"
> explicitly calls drmModePageFlip()).
> 
> As for Xserver nothing special was done.
> 
> [1] http://git.arm.linux.org.uk/cgit/xf86-video-armada.git/tree/conf/xorg-sample.conf?h=unstable-devel

xorg.log is probably more interesting. No idea whether your Xorg.conf
snippet is needed for armada or not.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: DRM_UDL and GPU under Xserver
@ 2018-04-05 13:44               ` Daniel Vetter
  0 siblings, 0 replies; 30+ messages in thread
From: Daniel Vetter @ 2018-04-05 13:44 UTC (permalink / raw)
  To: Alexey Brodkin
  Cc: Jose.Abreu, airlied, daniel.vetter, dri-devel, airlied,
	alexander.deucher, daniel.vetter, linux-snps-arc

On Thu, Apr 05, 2018 at 11:10:03AM +0000, Alexey Brodkin wrote:
> Hi Daniel, Lucas,
> 
> On Thu, 2018-04-05 at 12:59 +0200, Daniel Vetter wrote:
> > On Thu, Apr 5, 2018 at 12:29 PM, Lucas Stach <l.stach@pengutronix.de> wrote:
> > > Am Donnerstag, den 05.04.2018, 11:32 +0200 schrieb Daniel Vetter:
> > > > On Thu, Apr 5, 2018 at 9:16 AM, Alexey Brodkin
> > > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > > Hi Daniel,
> > > > > 
> > > > > On Thu, 2018-04-05 at 08:18 +0200, Daniel Vetter wrote:
> > > > > > On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
> > > > > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > > > > Hello,
> > > > > > > 
> > > > > > > We're trying to use DisplayLink USB2-to-HDMI adapter to render
> > > > > > > GPU-accelerated graphics.
> > > > > > > Hardware setup is as simple as a devboard + DisplayLink
> > > > > > > adapter.
> > > > > > > Devboards we use for this experiment are:
> > > > > > >  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
> > > > > > >  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as
> > > > > > > well)
> > > > > > > 
> > > > > > > I'm sure any other board with DRM supported GPU will work,
> > > > > > > those we just used
> > > > > > > as the very recent Linux kernels could be easily run on them
> > > > > > > both.
> > > > > > > 
> > > > > > > Basically the problem is UDL needs to be explicitly notified
> > > > > > > about new data
> > > > > > > to be rendered on the screen compared to typical bit-streamers
> > > > > > > that infinitely
> > > > > > > scan a dedicated buffer in memory.
> > > > > > > 
> > > > > > > In case of UDL there're just 2 ways for this notification:
> > > > > > >  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs-
> > > > > > > > page_flip()
> > > > > > > 
> > > > > > >  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs-
> > > > > > > > dirty()
> > > > > > > 
> > > > > > > But neither of IOCTLs happen when we run Xserver with xf86-
> > > > > > > video-armada driver
> > > > > > > (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.ar
> > > > > > > m.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-
> > > > > > > 3Dunstable-2Ddevel&d=DwIBaQ&;
> > > > > > > c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkh
> > > > > > > pk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
> > > > > > > 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
> > > > > > > 
> > > > > > > Is it something missing in Xserver or in UDL driver?
> > > > > > 
> > > > > > Use the -modesetting driverr for UDL, that one works correctly.
> > > > > 
> > > > > If you're talking about "modesetting" driver of Xserver [1] then
> > > > > indeed
> > > > > picture is displayed on the screen. But there I guess won't be any
> > > > > 3D acceleration.
> > > > > 
> > > > > At least that's what was suggested to me earlier here [2] by Lucas:
> > > > > ---------------------------->8---------------------------
> > > > > For 3D acceleration to work under X you need the etnaviv specific
> > > > > DDX
> > > > > driver, which can be found here:
> > > > > 
> > > > > https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-3Dunsta&d=DwIBaQ&c=DPL6_X_6Jk
> > > > > XFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=FleDFAQb2lBcZk5DMld7qpeSrB5Srsb4XPQecA5BPvU&s=YUzMQWe3lpC_pjGqRjb4MvRYh16ZBbealqf
> > > > > rywlqjKE&e=
> > > > > ble-devel
> > > > 
> > > > You definitely want to use -modesetting for UDL. And I thought with
> > > > glamour and the corresponding mesa work you should also get
> > > > accelaration. Insisting that you must use a driver-specific ddx is
> > > > broken, the world doesn't work like that anymore.
> > > 
> > > On etnaviv the world definitely still works like this. The etnaviv DDX
> > > uses the dedicated 2D hardware of the Vivante GPUs, which is much
> > > faster and efficient than going through Glamor.
> > > Especially since almost all X accel operations are done on linear
> > > buffers, while the 3D GPU can only ever do tiled on both sampler and
> > > render, where some multi-pipe 3D cores can't even read the tiling they
> > > write out. So Glamor is an endless copy fest using the resolve engine
> > > on those.
> > 
> > Ah right, I've forgotten about the vivante 2d cores again.
> > 
> > > If using etnaviv with UDL is a use-case that need to be supported, one
> > > would need to port the UDL specifics from -modesetting to the -armada
> > > DDX.
> > 
> > I don't think this makes sense.
> 
> I'm not really sure it has something to do with Etnaviv in particular.
> Given UDL might be attached to any board with any GPU that would mean we'd
> need to add those "UDL specifics from -modesetting" in all xf86-video-drivers,
> right?

X server supports multiple drivers (for different devices) in parallel.
You should be using armada for the imx-drm thing, and modesetting for udl.
And through the magic of prime it should even figure out that the device

> > > > Lucas, can you pls clarify? Also, why does -armada bind against all
> > > > kms drivers, that's probaly too much.
> > > 
> > > I think that's a local modification done by Alexey. The armada driver
> > > only binds to armada and imx-drm by default.
> 
> Actually it all magically works without any modifications.
> I just start X with the following xorg.conf [1]:
> ------------------------>8--------------------------
> Section "Device"
> 	Identifier	"Driver0"
> 	Screen		0
> 	Driver		"armada"
> EndSection
> ------------------------>8--------------------------
> 
> In fact in case of "kmscube" I had to trick Mesa like that:
> ------------------------>8--------------------------
> export MESA_LOADER_DRIVER_OVERRIDE=imx-drm

Yeah this shouldn't be necessary at all.

> ------------------------>8--------------------------
> And then UDL out works perfectly fine (that's because "kmscube"
> explicitly calls drmModePageFlip()).
> 
> As for Xserver nothing special was done.
> 
> [1] http://git.arm.linux.org.uk/cgit/xf86-video-armada.git/tree/conf/xorg-sample.conf?h=unstable-devel

xorg.log is probably more interesting. No idea whether your Xorg.conf
snippet is needed for armada or not.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* DRM_UDL and GPU under Xserver
  2018-04-05 13:44               ` Daniel Vetter
@ 2018-04-05 18:39                 ` Alexey Brodkin
  -1 siblings, 0 replies; 30+ messages in thread
From: Alexey Brodkin @ 2018-04-05 18:39 UTC (permalink / raw)
  To: linux-snps-arc

Hi Daniel, all,

On Thu, 2018-04-05@15:44 +0200, Daniel Vetter wrote:
> On Thu, Apr 05, 2018@11:10:03AM +0000, Alexey Brodkin wrote:
> > Hi Daniel, Lucas,
> > 
> > On Thu, 2018-04-05@12:59 +0200, Daniel Vetter wrote:
> > > On Thu, Apr 5, 2018@12:29 PM, Lucas Stach <l.stach@pengutronix.de> wrote:
> > > > Am Donnerstag, den 05.04.2018, 11:32 +0200 schrieb Daniel Vetter:
> > > > > On Thu, Apr 5, 2018 at 9:16 AM, Alexey Brodkin
> > > > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > > > Hi Daniel,
> > > > > > 
> > > > > > On Thu, 2018-04-05@08:18 +0200, Daniel Vetter wrote:
> > > > > > > On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
> > > > > > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > > > > > Hello,
> > > > > > > > 
> > > > > > > > We're trying to use DisplayLink USB2-to-HDMI adapter to render
> > > > > > > > GPU-accelerated graphics.
> > > > > > > > Hardware setup is as simple as a devboard + DisplayLink
> > > > > > > > adapter.
> > > > > > > > Devboards we use for this experiment are:
> > > > > > > >  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
> > > > > > > >  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as
> > > > > > > > well)
> > > > > > > > 
> > > > > > > > I'm sure any other board with DRM supported GPU will work,
> > > > > > > > those we just used
> > > > > > > > as the very recent Linux kernels could be easily run on them
> > > > > > > > both.
> > > > > > > > 
> > > > > > > > Basically the problem is UDL needs to be explicitly notified
> > > > > > > > about new data
> > > > > > > > to be rendered on the screen compared to typical bit-streamers
> > > > > > > > that infinitely
> > > > > > > > scan a dedicated buffer in memory.
> > > > > > > > 
> > > > > > > > In case of UDL there're just 2 ways for this notification:
> > > > > > > >  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs-
> > > > > > > > > page_flip()
> > > > > > > > 
> > > > > > > >  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs-
> > > > > > > > > dirty()
> > > > > > > > 
> > > > > > > > But neither of IOCTLs happen when we run Xserver with xf86-
> > > > > > > > video-armada driver
> > > > > > > > (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.ar
> > > > > > > > m.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-
> > > > > > > > 3Dunstable-2Ddevel&d=DwIBaQ&;
> > > > > > > > c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkh
> > > > > > > > pk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
> > > > > > > > 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
> > > > > > > > 
> > > > > > > > Is it something missing in Xserver or in UDL driver?
> > > > > > > 
> > > > > > > Use the -modesetting driverr for UDL, that one works correctly.
> > > > > > 
> > > > > > If you're talking about "modesetting" driver of Xserver [1] then
> > > > > > indeed
> > > > > > picture is displayed on the screen. But there I guess won't be any
> > > > > > 3D acceleration.
> > > > > > 
> > > > > > At least that's what was suggested to me earlier here [2] by Lucas:
> > > > > > ---------------------------->8---------------------------
> > > > > > For 3D acceleration to work under X you need the etnaviv specific
> > > > > > DDX
> > > > > > driver, which can be found here:
> > > > > > 
> > > > > > https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-3Dunsta&d=DwIBaQ&c=DPL6_X
> > > > > > _6Jk
> > > > > > XFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=FleDFAQb2lBcZk5DMld7qpeSrB5Srsb4XPQecA5BPvU&s=YUzMQWe3lpC_pjGqRjb4MvRYh16ZBbe
> > > > > > alqf
> > > > > > rywlqjKE&e=
> > > > > > ble-devel
> > > > > 
> > > > > You definitely want to use -modesetting for UDL. And I thought with
> > > > > glamour and the corresponding mesa work you should also get
> > > > > accelaration. Insisting that you must use a driver-specific ddx is
> > > > > broken, the world doesn't work like that anymore.
> > > > 
> > > > On etnaviv the world definitely still works like this. The etnaviv DDX
> > > > uses the dedicated 2D hardware of the Vivante GPUs, which is much
> > > > faster and efficient than going through Glamor.
> > > > Especially since almost all X accel operations are done on linear
> > > > buffers, while the 3D GPU can only ever do tiled on both sampler and
> > > > render, where some multi-pipe 3D cores can't even read the tiling they
> > > > write out. So Glamor is an endless copy fest using the resolve engine
> > > > on those.
> > > 
> > > Ah right, I've forgotten about the vivante 2d cores again.
> > > 
> > > > If using etnaviv with UDL is a use-case that need to be supported, one
> > > > would need to port the UDL specifics from -modesetting to the -armada
> > > > DDX.
> > > 
> > > I don't think this makes sense.
> > 
> > I'm not really sure it has something to do with Etnaviv in particular.
> > Given UDL might be attached to any board with any GPU that would mean we'd
> > need to add those "UDL specifics from -modesetting" in all xf86-video-drivers,
> > right?
> 
> X server supports multiple drivers (for different devices) in parallel.
> You should be using armada for the imx-drm thing, and modesetting for udl.
> And through the magic of prime it should even figure out that the device
> 
> > > > > Lucas, can you pls clarify? Also, why does -armada bind against all
> > > > > kms drivers, that's probaly too much.
> > > > 
> > > > I think that's a local modification done by Alexey. The armada driver
> > > > only binds to armada and imx-drm by default.
> > 
> > Actually it all magically works without any modifications.
> > I just start X with the following xorg.conf [1]:
> > ------------------------>8--------------------------
> > Section "Device"
> > 	Identifier	"Driver0"
> > 	Screen		0
> > 	Driver		"armada"
> > EndSection
> > ------------------------>8--------------------------

Ok it was quite some time ago so I forgot about that completely.
I really made one trivial change in xf86-video-armada:
------------------------>8--------------------------
--- a/src/armada_module.c
+++ b/src/armada_module.c
@@ -26,7 +26,7 @@
 #define ARMADA_NAME            "armada"
 #define ARMADA_DRIVER_NAME     "armada"
 
-#define DRM_MODULE_NAMES       "armada-drm", "imx-drm"
+#define DRM_MODULE_NAMES       "armada-drm", "imx-drm", "udl"
 #define DRM_DEFAULT_BUS_ID     NULL
------------------------>8--------------------------

Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed.

> > In fact in case of "kmscube" I had to trick Mesa like that:
> > ------------------------>8--------------------------
> > export MESA_LOADER_DRIVER_OVERRIDE=imx-drm
> 
> Yeah this shouldn't be necessary at all.
> 
> > ------------------------>8--------------------------
> > And then UDL out works perfectly fine (that's because "kmscube"
> > explicitly calls drmModePageFlip()).
> > 
> > As for Xserver nothing special was done.
> > 
> > [1] https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_tree_conf_xorg-2Dsample.conf-3Fh-3Duns
> > table-
> > 2Ddevel&d=DwIBAg&c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=PGNfmLiN38EmKHzRyuZpX3Lsc9grXsJBx2tkJubl4t0&s=IUChhhP3eD
> > PEiH3QdN6CxhfFaBCZIya0KEWDbCcDtGI&e=
> 
> xorg.log is probably more interesting. No idea whether your Xorg.conf
> snippet is needed for armada or not.

Below is my full Xorg.log output with change above in place:
------------------------>8--------------------------
[     8.941]
X.Org X Server 1.19.6
Release Date: 2017-12-20
[     8.941] X Protocol Version 11, Revision 0
[     8.941] Build Operating System: Linux 3.10.0-514.el7.x86_64 x86_64
[     8.941] Current Operating System: Linux buildroot 4.16.0 #3 SMP PREEMPT Thu Apr 5 21:28:25 MSK 2018 arc
[     8.941] Kernel command line: earlycon=uart8250,mmio32,0xf0005000,115200n8 console=ttyS0,115200n8 debug print-fatal-signals=1 drm.debug=0x3f
[     8.942] Build Date: 05 April 2018  06:48:58PM
[     8.942]
[     8.942] Current version of pixman: 0.34.0
[     8.942]    Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
[     8.942] Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[     8.942] (==) Log file: "/var/log/Xorg.0.log", Time: Thu Jan  1 00:00:08 1970
[     8.942] (==) Using config file: "/etc/X11/xorg.conf"
[     8.942] (==) No Layout section.  Using the first Screen section.
[     8.942] (==) No screen section available. Using defaults.
[     8.942] (**) |-->Screen "Default Screen Section" (0)
[     8.942] (**) |   |-->Monitor "<default monitor>"
[     8.944] (==) No device specified for screen "Default Screen Section".
        Using the first device section listed.
[     8.944] (**) |   |-->Device "Driver0"
[     8.944] (==) No monitor specified for screen "Default Screen Section".
        Using a default monitor configuration.
[     8.944] (==) Not automatically adding devices
[     8.944] (==) Not automatically enabling devices
[     8.944] (==) Not automatically adding GPU devices
[     8.944] (==) Max clients allowed: 256, resource mask: 0x1fffff
[     8.944] (WW) The directory "/usr/share/fonts/X11//TTF/" does not exist.
[     8.944]    Entry deleted from font path.
[     8.944] (WW) The directory "/usr/share/fonts/X11//OTF/" does not exist.
[     8.944]    Entry deleted from font path.
[     8.944] (WW) The directory "/usr/share/fonts/X11//Type1/" does not exist.
[     8.944]    Entry deleted from font path.
[     8.944] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/X11//100dpi/".
[     8.944]    Entry deleted from font path.
[     8.945]    (Run 'mkfontdir' on "/usr/share/fonts/X11//100dpi/").
[     8.945] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/X11//75dpi/".
[     8.945]    Entry deleted from font path.
[     8.945]    (Run 'mkfontdir' on "/usr/share/fonts/X11//75dpi/").
[     8.945] (==) FontPath set to:
        /usr/share/fonts/X11//misc/
[     8.945] (==) ModulePath set to "/usr/lib/xorg/modules"
[     8.945] (==) |-->Input Device "<default pointer>"
[     8.945] (==) |-->Input Device "<default keyboard>"
[     8.945] (==) No Layout section. Using the default mouse configuration.
[     8.945] (==) No Layout section. Using the default keyboard configuration.
[     8.945] (II) Loader magic: 0x16c510
[     8.945] (II) Module ABI versions:
[     8.945]    X.Org ANSI C Emulation: 0.4
[     8.945]    X.Org Video Driver: 23.0
[     8.945]    X.Org XInput driver : 24.1
[     8.945]    X.Org Server Extension : 10.0
[     8.945] (II) LoadModule: "armada"
[     8.946] (II) Loading /usr/lib/xorg/modules/drivers/armada_drv.so
[     8.947] (II) Module armada: vendor="X.Org Foundation"
[     8.947]    compiled for 1.19.6, module version = 0.0.0
[     8.947]    Module class: X.Org Video Driver
[     8.947]    ABI class: X.Org Video Driver, version 23.0
[     8.947] (II) LoadModule: "mouse"
[     8.948] (WW) Warning, couldn't open module mouse
[     8.948] (II) UnloadModule: "mouse"
[     8.948] (II) Unloading mouse
[     8.948] (EE) Failed to load module "mouse" (module does not exist, 0)
[     8.948] (II) LoadModule: "kbd"
[     8.948] (WW) Warning, couldn't open module kbd
[     8.948] (II) UnloadModule: "kbd"
[     8.948] (II) Unloading kbd
[     8.948] (EE) Failed to load module "kbd" (module does not exist, 0)
[     8.948] (II) armada: Support for Marvell LCD Controller: 88AP510
[     8.948] (II) armada: Support for Freescale IPU: i.MX6
[     8.949] (--) using VT number 2
[     8.949] (WW) Falling back to old probe method for armada
[     9.415] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[     9.438] (II) armada(0): hardware: udl
[     9.438] (II) armada(0): Creating default Display subsection in Screen section
        "Default Screen Section" for depth/fbbpp 24/32
[     9.438] (==) armada(0): Depth 24, (--) framebuffer bpp 32
[     9.438] (==) armada(0): RGB weight 888
[     9.438] (==) armada(0): Default visual is TrueColor                          
[     9.438] (II) Loading sub module "etnadrm_gpu"                          
[     9.438] (II) LoadModule: "etnadrm_gpu"                                    
[     9.439] (II) Loading /usr/lib/xorg/modules/drivers/etnadrm_gpu.so         
[     9.439] (II) Module Etnaviv GPU driver (DRM): vendor="X.Org Foundation"              
[     9.439]    compiled for 1.19.6, module version = 0.0.0                               
[     9.440]    ABI class: X.Org ANSI C Emulation, version 0.4                   
[     9.774] (II) armada(0): Output DVI1 has no monitor section                          
[    10.069] (II) armada(0): EDID for output DVI1                                        
[    10.069] (II) armada(0): Manufacturer: SAM  Model: 1bb  Serial#: 1212231993
[    10.070] (II) armada(0): Year: 2005  Week: 50                            
[    10.070] (II) armada(0): EDID Version: 1.3                                    
[    10.070] (II) armada(0): Digital Display Input                                  
[    10.070] (II) armada(0): Max Image Size [cm]: horiz.: 38  vert.: 30             
[    10.070] (II) armada(0): Gamma: 2.20                                            
[    10.070] (II) armada(0): DPMS capabilities: Off                                 
[    10.070] (II) armada(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4       
[    10.070] (II) armada(0): First detailed timing is preferred mode                
[    10.070] (II) armada(0): redX: 0.640 redY: 0.329   greenX: 0.300 greenY: 0.600  
[    10.070] (II) armada(0): blueX: 0.150 blueY: 0.060   whiteX: 0.313 whiteY: 0.329
[    10.070] (II) armada(0): Supported established timings:                  
[    10.070] (II) armada(0): 720x400 at 70Hz                                       
[    10.070] (II) armada(0): 640x480 at 60Hz                                         
[    10.070] (II) armada(0): 640x480 at 67Hz                                           
[    10.070] (II) armada(0): 640x480 at 72Hz                                   
[    10.070] (II) armada(0): 640x480 at 75Hz                                     
[    10.070] (II) armada(0): 800x600 at 56Hz                                     
[    10.070] (II) armada(0): 800x600 at 60Hz                                                 
[    10.071] (II) armada(0): 800x600 at 72Hz                                                 
[    10.071] (II) armada(0): 800x600 at 75Hz                                                 
[    10.071] (II) armada(0): 832x624 at 75Hz                                                
[    10.071] (II) armada(0): 1024x768 at 60Hz                                               
[    10.071] (II) armada(0): 1024x768 at 70Hz                                               
[    10.071] (II) armada(0): 1024x768 at 75Hz                                       
[    10.071] (II) armada(0): 1280x1024 at 75Hz                                      
[    10.071] (II) armada(0): 1152x864 at 75Hz                                       
[    10.071] (II) armada(0): Manufacturer's mask: 0                                                    
[    10.071] (II) armada(0): Supported standard timings:                                               
[    10.071] (II) armada(0): #0: hsize: 1280  vsize 1024  refresh: 60  vid: 32897                         
[    10.071] (II) armada(0): #1: hsize: 1280  vsize 960  refresh: 60  vid: 16513                          
[    10.071] (II) armada(0): #2: hsize: 1152  vsize 864  refresh: 75  vid: 20337                          
[    10.071] (II) armada(0): Supported detailed timing:                                                   
[    10.071] (II) armada(0): clock: 108.0 MHz   Image Size:  376 x 301 mm                                 
[    10.071] (II) armada(0): h_active: 1280  h_sync: 1328  h_sync_end 1440 h_blank_end 1688 h_border: 0   
[    10.071] (II) armada(0): v_active: 1024  v_sync: 1025  v_sync_end 1028 v_blanking: 1066 v_border: 0   
[    10.071] (II) armada(0): Ranges: V min: 56 V max: 75 Hz, H min: 30 H max: 81 kHz, PixClock max 145 MHz
[    10.071] (II) armada(0): Monitor name: SyncMaster                               
[    10.071] (II) armada(0): Serial No: HSGYC00767                                                     
[    10.072] (II) armada(0): EDID (in hex):                                                            
[    10.072] (II) armada(0):    00ffffffffffff004c2dbb0139314148                                          
[    10.072] (II) armada(0):    320f010380261e782ade95a3544c9926  
[    10.072] (II) armada(0):    0f5054bfef8081808140714f01010101                                                                    
[    10.072] (II) armada(0):    010101010101302a009851002a403070                                                                    
[    10.072] (II) armada(0):    1300782d1100001e000000fd00384b1e                                                                    
[    10.072] (II) armada(0):    510e000a202020202020000000fc0053                                                                    
[    10.072] (II) armada(0):    796e634d61737465720a2020000000ff                                                                    
[    10.072] (II) armada(0):    00485347594330303736370a2020003c                                                                    
[    10.072] (II) armada(0): Printing probed modes for output DVI1                                                                  
[    10.072] (II) armada(0): Modeline "1280x1024"x60.0  108.00  1280 1328 1440 1688  1024 1025 1028 1066 +hsync +vsync (64.0 kHz eP)
[    10.073] (II) armada(0): Modeline "1280x1024"x75.0  135.00  1280 1296 1440 1688  1024 1025 1028 1066 +hsync +vsync (80.0 kHz e)
[    10.073] (II) armada(0): Modeline "1280x960"x60.0  108.00  1280 1376 1488 1800  960 961 964 1000 +hsync +vsync (60.0 kHz e)
[    10.073] (II) armada(0): Modeline "1152x864"x75.0  108.00  1152 1216 1344 1600  864 865 868 900 +hsync +vsync (67.5 kHz e)
[    10.073] (II) armada(0): Modeline "1024x768"x75.0   78.75  1024 1040 1136 1312  768 769 772 800 +hsync +vsync (60.0 kHz e)      
[    10.073] (II) armada(0): Modeline "1024x768"x70.1   75.00  1024 1048 1184 1328  768 771 777 806 -hsync -vsync (56.5 kHz e)     
[    10.073] (II) armada(0): Modeline "1024x768"x60.0   65.00  1024 1048 1184 1344  768 771 777 806 -hsync -vsync (48.4 kHz e) 
[    10.073] (II) armada(0): Modeline "832x624"x74.6   57.28  832 864 928 1152  624 625 628 667 -hsync -vsync (49.7 kHz e)    
[    10.073] (II) armada(0): Modeline "800x600"x72.2   50.00  800 856 976 1040  600 637 643 666 +hsync +vsync (48.1 kHz e)    
[    10.073] (II) armada(0): Modeline "800x600"x75.0   49.50  800 816 896 1056  600 601 604 625 +hsync +vsync (46.9 kHz e)    
[    10.074] (II) armada(0): Modeline "800x600"x60.3   40.00  800 840 968 1056  600 601 605 628 +hsync +vsync (37.9 kHz e)    
[    10.074] (II) armada(0): Modeline "800x600"x56.3   36.00  800 824 896 1024  600 601 603 625 +hsync +vsync (35.2 kHz e)
[    10.074] (II) armada(0): Modeline "640x480"x75.0   31.50  640 656 720 840  480 481 484 500 -hsync -vsync (37.5 kHz e) 
[    10.074] (II) armada(0): Modeline "640x480"x72.8   31.50  640 664 704 832  480 489 492 520 -hsync -vsync (37.9 kHz e) 
[    10.074] (II) armada(0): Modeline "640x480"x66.7   30.24  640 704 768 864  480 483 486 525 -hsync -vsync (35.0 kHz e) 
[    10.074] (II) armada(0): Modeline "640x480"x59.9   25.18  640 656 752 800  480 490 492 525 -hsync -vsync (31.5 kHz e) 
[    10.074] (II) armada(0): Modeline "720x400"x70.1   28.32  720 738 846 900  400 412 414 449 -hsync +vsync (31.5 kHz e)
[    10.074] (II) armada(0): Output DVI1 connected                                        
[    10.074] (II) armada(0): Using exact sizes for initial modes                          
[    10.074] (II) armada(0): Output DVI1 using initial mode 1280x1024 +0+0                
[    10.074] (==) armada(0): Using gamma correction (1.0, 1.0, 1.0)                      
[    10.074] (==) armada(0): DPI set to (96, 96)                                         
[    10.075] (II) Loading sub module "fb"                                                
[    10.075] (II) LoadModule: "fb"                                               
[    10.075] (II) Loading /usr/lib/xorg/modules/libfb.so                                                                            
[    10.076] (II) Module fb: vendor="X.Org Foundation"                                                                             
[    10.076]    compiled for 1.19.6, module version = 1.0.0                                                                    
[    10.076]    ABI class: X.Org ANSI C Emulation, version 0.4                                                                
[    10.083] (==) Depth 24 pixmap format is 32 bpp                                                                            
[    10.125] (==) armada(0): Backing store disabled                                                                           
[    10.125] (==) armada(0): Silken mouse enabled                                                                             
[    10.243] (--) armada(0): Vivante GC880 GPU revision 5124 (etnaviv) 2d PE2.0                                           
[    10.254] (II) armada(0): [DRI2] Setup complete                                                                        
[    10.254] (II) armada(0): [DRI2]   DRI driver: etnaviv                                                                 
[    10.254] (II) armada(0): direct rendering: DRI2 enabled                                                               
[    10.255] (II) armada(0): RandR 1.2 enabled, ignore the following RandR disabled message.                              
[    10.306] (==) armada(0): DPMS enabled                                                                                
[    10.309] (II) armada(0): etnaviv: Xv: using YUY2 format intermediate YUV target                                      
[    10.585] (--) RandR disabled                                                                                         
[    10.618] (II) armada(0): etnaviv: A8 target not supported                                                            
[    10.624] (II) armada(0): Setting screen physical size to 338 x 270                                                   
[    10.843] (II) LoadModule: "mouse"                                                                                               
[    10.843] (WW) Warning, couldn't open module mouse                                                                               
[    10.843] (II) UnloadModule: "mouse"                                                                                             
[    10.843] (II) Unloading mouse                                                                                                   
[    10.843] (EE) Failed to load module "mouse" (module does not exist, 0)                                                          
[    10.843] (EE) No input driver matching `mouse'                                                                                  
[    10.843] (II) Falling back to input driver `libinput'                                                                           
[    10.844] (II) LoadModule: "libinput"                                                                                            
[    10.844] (WW) Warning, couldn't open module libinput                                                                           
[    10.844] (II) UnloadModule: "libinput"                                                                                     
[    10.844] (II) Unloading libinput                                                                                          
[    10.844] (EE) Failed to load module "libinput" (module does not exist, 0)                                                       
[    10.844] (II) LoadModule: "kbd"                                                                                                
[    10.845] (WW) Warning, couldn't open module kbd                                                                            
[    10.845] (II) UnloadModule: "kbd"                                                                                         
[    10.845] (II) Unloading kbd                                                                                               
[    10.845] (EE) Failed to load module "kbd" (module does not exist, 0)                                                      
[    10.845] (EE) No input driver matching `kbd'                                                                              
[    10.845] (II) Falling back to input driver `libinput'                                                                 
[    10.845] (II) LoadModule: "libinput"                                                                                  
[    10.845] (WW) Warning, couldn't open module libinput                                                                  
[    10.846] (II) UnloadModule: "libinput"                                                                                
[    10.846] (II) Unloading libinput                                                                                      
[    10.846] (EE) Failed to load module "libinput" (module does not exist, 0)
------------------------>8--------------------------

-Alexey

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: DRM_UDL and GPU under Xserver
@ 2018-04-05 18:39                 ` Alexey Brodkin
  0 siblings, 0 replies; 30+ messages in thread
From: Alexey Brodkin @ 2018-04-05 18:39 UTC (permalink / raw)
  To: daniel
  Cc: Jose.Abreu, airlied, daniel.vetter, dri-devel, seanpaul, airlied,
	alexander.deucher, daniel.vetter, linux-snps-arc, l.stach

Hi Daniel, all,

On Thu, 2018-04-05 at 15:44 +0200, Daniel Vetter wrote:
> On Thu, Apr 05, 2018 at 11:10:03AM +0000, Alexey Brodkin wrote:
> > Hi Daniel, Lucas,
> > 
> > On Thu, 2018-04-05 at 12:59 +0200, Daniel Vetter wrote:
> > > On Thu, Apr 5, 2018 at 12:29 PM, Lucas Stach <l.stach@pengutronix.de> wrote:
> > > > Am Donnerstag, den 05.04.2018, 11:32 +0200 schrieb Daniel Vetter:
> > > > > On Thu, Apr 5, 2018 at 9:16 AM, Alexey Brodkin
> > > > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > > > Hi Daniel,
> > > > > > 
> > > > > > On Thu, 2018-04-05 at 08:18 +0200, Daniel Vetter wrote:
> > > > > > > On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
> > > > > > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > > > > > Hello,
> > > > > > > > 
> > > > > > > > We're trying to use DisplayLink USB2-to-HDMI adapter to render
> > > > > > > > GPU-accelerated graphics.
> > > > > > > > Hardware setup is as simple as a devboard + DisplayLink
> > > > > > > > adapter.
> > > > > > > > Devboards we use for this experiment are:
> > > > > > > >  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
> > > > > > > >  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as
> > > > > > > > well)
> > > > > > > > 
> > > > > > > > I'm sure any other board with DRM supported GPU will work,
> > > > > > > > those we just used
> > > > > > > > as the very recent Linux kernels could be easily run on them
> > > > > > > > both.
> > > > > > > > 
> > > > > > > > Basically the problem is UDL needs to be explicitly notified
> > > > > > > > about new data
> > > > > > > > to be rendered on the screen compared to typical bit-streamers
> > > > > > > > that infinitely
> > > > > > > > scan a dedicated buffer in memory.
> > > > > > > > 
> > > > > > > > In case of UDL there're just 2 ways for this notification:
> > > > > > > >  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs-
> > > > > > > > > page_flip()
> > > > > > > > 
> > > > > > > >  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs-
> > > > > > > > > dirty()
> > > > > > > > 
> > > > > > > > But neither of IOCTLs happen when we run Xserver with xf86-
> > > > > > > > video-armada driver
> > > > > > > > (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.ar
> > > > > > > > m.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-
> > > > > > > > 3Dunstable-2Ddevel&d=DwIBaQ&;
> > > > > > > > c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkh
> > > > > > > > pk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
> > > > > > > > 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
> > > > > > > > 
> > > > > > > > Is it something missing in Xserver or in UDL driver?
> > > > > > > 
> > > > > > > Use the -modesetting driverr for UDL, that one works correctly.
> > > > > > 
> > > > > > If you're talking about "modesetting" driver of Xserver [1] then
> > > > > > indeed
> > > > > > picture is displayed on the screen. But there I guess won't be any
> > > > > > 3D acceleration.
> > > > > > 
> > > > > > At least that's what was suggested to me earlier here [2] by Lucas:
> > > > > > ---------------------------->8---------------------------
> > > > > > For 3D acceleration to work under X you need the etnaviv specific
> > > > > > DDX
> > > > > > driver, which can be found here:
> > > > > > 
> > > > > > https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-3Dunsta&d=DwIBaQ&c=DPL6_X
> > > > > > _6Jk
> > > > > > XFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=FleDFAQb2lBcZk5DMld7qpeSrB5Srsb4XPQecA5BPvU&s=YUzMQWe3lpC_pjGqRjb4MvRYh16ZBbe
> > > > > > alqf
> > > > > > rywlqjKE&e=
> > > > > > ble-devel
> > > > > 
> > > > > You definitely want to use -modesetting for UDL. And I thought with
> > > > > glamour and the corresponding mesa work you should also get
> > > > > accelaration. Insisting that you must use a driver-specific ddx is
> > > > > broken, the world doesn't work like that anymore.
> > > > 
> > > > On etnaviv the world definitely still works like this. The etnaviv DDX
> > > > uses the dedicated 2D hardware of the Vivante GPUs, which is much
> > > > faster and efficient than going through Glamor.
> > > > Especially since almost all X accel operations are done on linear
> > > > buffers, while the 3D GPU can only ever do tiled on both sampler and
> > > > render, where some multi-pipe 3D cores can't even read the tiling they
> > > > write out. So Glamor is an endless copy fest using the resolve engine
> > > > on those.
> > > 
> > > Ah right, I've forgotten about the vivante 2d cores again.
> > > 
> > > > If using etnaviv with UDL is a use-case that need to be supported, one
> > > > would need to port the UDL specifics from -modesetting to the -armada
> > > > DDX.
> > > 
> > > I don't think this makes sense.
> > 
> > I'm not really sure it has something to do with Etnaviv in particular.
> > Given UDL might be attached to any board with any GPU that would mean we'd
> > need to add those "UDL specifics from -modesetting" in all xf86-video-drivers,
> > right?
> 
> X server supports multiple drivers (for different devices) in parallel.
> You should be using armada for the imx-drm thing, and modesetting for udl.
> And through the magic of prime it should even figure out that the device
> 
> > > > > Lucas, can you pls clarify? Also, why does -armada bind against all
> > > > > kms drivers, that's probaly too much.
> > > > 
> > > > I think that's a local modification done by Alexey. The armada driver
> > > > only binds to armada and imx-drm by default.
> > 
> > Actually it all magically works without any modifications.
> > I just start X with the following xorg.conf [1]:
> > ------------------------>8--------------------------
> > Section "Device"
> > 	Identifier	"Driver0"
> > 	Screen		0
> > 	Driver		"armada"
> > EndSection
> > ------------------------>8--------------------------

Ok it was quite some time ago so I forgot about that completely.
I really made one trivial change in xf86-video-armada:
------------------------>8--------------------------
--- a/src/armada_module.c
+++ b/src/armada_module.c
@@ -26,7 +26,7 @@
 #define ARMADA_NAME            "armada"
 #define ARMADA_DRIVER_NAME     "armada"
 
-#define DRM_MODULE_NAMES       "armada-drm", "imx-drm"
+#define DRM_MODULE_NAMES       "armada-drm", "imx-drm", "udl"
 #define DRM_DEFAULT_BUS_ID     NULL
------------------------>8--------------------------

Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed.

> > In fact in case of "kmscube" I had to trick Mesa like that:
> > ------------------------>8--------------------------
> > export MESA_LOADER_DRIVER_OVERRIDE=imx-drm
> 
> Yeah this shouldn't be necessary at all.
> 
> > ------------------------>8--------------------------
> > And then UDL out works perfectly fine (that's because "kmscube"
> > explicitly calls drmModePageFlip()).
> > 
> > As for Xserver nothing special was done.
> > 
> > [1] https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_tree_conf_xorg-2Dsample.conf-3Fh-3Duns
> > table-
> > 2Ddevel&d=DwIBAg&c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=PGNfmLiN38EmKHzRyuZpX3Lsc9grXsJBx2tkJubl4t0&s=IUChhhP3eD
> > PEiH3QdN6CxhfFaBCZIya0KEWDbCcDtGI&e=
> 
> xorg.log is probably more interesting. No idea whether your Xorg.conf
> snippet is needed for armada or not.

Below is my full Xorg.log output with change above in place:
------------------------>8--------------------------
[     8.941]
X.Org X Server 1.19.6
Release Date: 2017-12-20
[     8.941] X Protocol Version 11, Revision 0
[     8.941] Build Operating System: Linux 3.10.0-514.el7.x86_64 x86_64
[     8.941] Current Operating System: Linux buildroot 4.16.0 #3 SMP PREEMPT Thu Apr 5 21:28:25 MSK 2018 arc
[     8.941] Kernel command line: earlycon=uart8250,mmio32,0xf0005000,115200n8 console=ttyS0,115200n8 debug print-fatal-signals=1 drm.debug=0x3f
[     8.942] Build Date: 05 April 2018  06:48:58PM
[     8.942]
[     8.942] Current version of pixman: 0.34.0
[     8.942]    Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
[     8.942] Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[     8.942] (==) Log file: "/var/log/Xorg.0.log", Time: Thu Jan  1 00:00:08 1970
[     8.942] (==) Using config file: "/etc/X11/xorg.conf"
[     8.942] (==) No Layout section.  Using the first Screen section.
[     8.942] (==) No screen section available. Using defaults.
[     8.942] (**) |-->Screen "Default Screen Section" (0)
[     8.942] (**) |   |-->Monitor "<default monitor>"
[     8.944] (==) No device specified for screen "Default Screen Section".
        Using the first device section listed.
[     8.944] (**) |   |-->Device "Driver0"
[     8.944] (==) No monitor specified for screen "Default Screen Section".
        Using a default monitor configuration.
[     8.944] (==) Not automatically adding devices
[     8.944] (==) Not automatically enabling devices
[     8.944] (==) Not automatically adding GPU devices
[     8.944] (==) Max clients allowed: 256, resource mask: 0x1fffff
[     8.944] (WW) The directory "/usr/share/fonts/X11//TTF/" does not exist.
[     8.944]    Entry deleted from font path.
[     8.944] (WW) The directory "/usr/share/fonts/X11//OTF/" does not exist.
[     8.944]    Entry deleted from font path.
[     8.944] (WW) The directory "/usr/share/fonts/X11//Type1/" does not exist.
[     8.944]    Entry deleted from font path.
[     8.944] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/X11//100dpi/".
[     8.944]    Entry deleted from font path.
[     8.945]    (Run 'mkfontdir' on "/usr/share/fonts/X11//100dpi/").
[     8.945] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/X11//75dpi/".
[     8.945]    Entry deleted from font path.
[     8.945]    (Run 'mkfontdir' on "/usr/share/fonts/X11//75dpi/").
[     8.945] (==) FontPath set to:
        /usr/share/fonts/X11//misc/
[     8.945] (==) ModulePath set to "/usr/lib/xorg/modules"
[     8.945] (==) |-->Input Device "<default pointer>"
[     8.945] (==) |-->Input Device "<default keyboard>"
[     8.945] (==) No Layout section. Using the default mouse configuration.
[     8.945] (==) No Layout section. Using the default keyboard configuration.
[     8.945] (II) Loader magic: 0x16c510
[     8.945] (II) Module ABI versions:
[     8.945]    X.Org ANSI C Emulation: 0.4
[     8.945]    X.Org Video Driver: 23.0
[     8.945]    X.Org XInput driver : 24.1
[     8.945]    X.Org Server Extension : 10.0
[     8.945] (II) LoadModule: "armada"
[     8.946] (II) Loading /usr/lib/xorg/modules/drivers/armada_drv.so
[     8.947] (II) Module armada: vendor="X.Org Foundation"
[     8.947]    compiled for 1.19.6, module version = 0.0.0
[     8.947]    Module class: X.Org Video Driver
[     8.947]    ABI class: X.Org Video Driver, version 23.0
[     8.947] (II) LoadModule: "mouse"
[     8.948] (WW) Warning, couldn't open module mouse
[     8.948] (II) UnloadModule: "mouse"
[     8.948] (II) Unloading mouse
[     8.948] (EE) Failed to load module "mouse" (module does not exist, 0)
[     8.948] (II) LoadModule: "kbd"
[     8.948] (WW) Warning, couldn't open module kbd
[     8.948] (II) UnloadModule: "kbd"
[     8.948] (II) Unloading kbd
[     8.948] (EE) Failed to load module "kbd" (module does not exist, 0)
[     8.948] (II) armada: Support for Marvell LCD Controller: 88AP510
[     8.948] (II) armada: Support for Freescale IPU: i.MX6
[     8.949] (--) using VT number 2
[     8.949] (WW) Falling back to old probe method for armada
[     9.415] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[     9.438] (II) armada(0): hardware: udl
[     9.438] (II) armada(0): Creating default Display subsection in Screen section
        "Default Screen Section" for depth/fbbpp 24/32
[     9.438] (==) armada(0): Depth 24, (--) framebuffer bpp 32
[     9.438] (==) armada(0): RGB weight 888
[     9.438] (==) armada(0): Default visual is TrueColor                          
[     9.438] (II) Loading sub module "etnadrm_gpu"                          
[     9.438] (II) LoadModule: "etnadrm_gpu"                                    
[     9.439] (II) Loading /usr/lib/xorg/modules/drivers/etnadrm_gpu.so         
[     9.439] (II) Module Etnaviv GPU driver (DRM): vendor="X.Org Foundation"              
[     9.439]    compiled for 1.19.6, module version = 0.0.0                               
[     9.440]    ABI class: X.Org ANSI C Emulation, version 0.4                   
[     9.774] (II) armada(0): Output DVI1 has no monitor section                          
[    10.069] (II) armada(0): EDID for output DVI1                                        
[    10.069] (II) armada(0): Manufacturer: SAM  Model: 1bb  Serial#: 1212231993
[    10.070] (II) armada(0): Year: 2005  Week: 50                            
[    10.070] (II) armada(0): EDID Version: 1.3                                    
[    10.070] (II) armada(0): Digital Display Input                                  
[    10.070] (II) armada(0): Max Image Size [cm]: horiz.: 38  vert.: 30             
[    10.070] (II) armada(0): Gamma: 2.20                                            
[    10.070] (II) armada(0): DPMS capabilities: Off                                 
[    10.070] (II) armada(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4       
[    10.070] (II) armada(0): First detailed timing is preferred mode                
[    10.070] (II) armada(0): redX: 0.640 redY: 0.329   greenX: 0.300 greenY: 0.600  
[    10.070] (II) armada(0): blueX: 0.150 blueY: 0.060   whiteX: 0.313 whiteY: 0.329
[    10.070] (II) armada(0): Supported established timings:                  
[    10.070] (II) armada(0): 720x400@70Hz                                       
[    10.070] (II) armada(0): 640x480@60Hz                                         
[    10.070] (II) armada(0): 640x480@67Hz                                           
[    10.070] (II) armada(0): 640x480@72Hz                                   
[    10.070] (II) armada(0): 640x480@75Hz                                     
[    10.070] (II) armada(0): 800x600@56Hz                                     
[    10.070] (II) armada(0): 800x600@60Hz                                                 
[    10.071] (II) armada(0): 800x600@72Hz                                                 
[    10.071] (II) armada(0): 800x600@75Hz                                                 
[    10.071] (II) armada(0): 832x624@75Hz                                                
[    10.071] (II) armada(0): 1024x768@60Hz                                               
[    10.071] (II) armada(0): 1024x768@70Hz                                               
[    10.071] (II) armada(0): 1024x768@75Hz                                       
[    10.071] (II) armada(0): 1280x1024@75Hz                                      
[    10.071] (II) armada(0): 1152x864@75Hz                                       
[    10.071] (II) armada(0): Manufacturer's mask: 0                                                    
[    10.071] (II) armada(0): Supported standard timings:                                               
[    10.071] (II) armada(0): #0: hsize: 1280  vsize 1024  refresh: 60  vid: 32897                         
[    10.071] (II) armada(0): #1: hsize: 1280  vsize 960  refresh: 60  vid: 16513                          
[    10.071] (II) armada(0): #2: hsize: 1152  vsize 864  refresh: 75  vid: 20337                          
[    10.071] (II) armada(0): Supported detailed timing:                                                   
[    10.071] (II) armada(0): clock: 108.0 MHz   Image Size:  376 x 301 mm                                 
[    10.071] (II) armada(0): h_active: 1280  h_sync: 1328  h_sync_end 1440 h_blank_end 1688 h_border: 0   
[    10.071] (II) armada(0): v_active: 1024  v_sync: 1025  v_sync_end 1028 v_blanking: 1066 v_border: 0   
[    10.071] (II) armada(0): Ranges: V min: 56 V max: 75 Hz, H min: 30 H max: 81 kHz, PixClock max 145 MHz
[    10.071] (II) armada(0): Monitor name: SyncMaster                               
[    10.071] (II) armada(0): Serial No: HSGYC00767                                                     
[    10.072] (II) armada(0): EDID (in hex):                                                            
[    10.072] (II) armada(0):    00ffffffffffff004c2dbb0139314148                                          
[    10.072] (II) armada(0):    320f010380261e782ade95a3544c9926  
[    10.072] (II) armada(0):    0f5054bfef8081808140714f01010101                                                                    
[    10.072] (II) armada(0):    010101010101302a009851002a403070                                                                    
[    10.072] (II) armada(0):    1300782d1100001e000000fd00384b1e                                                                    
[    10.072] (II) armada(0):    510e000a202020202020000000fc0053                                                                    
[    10.072] (II) armada(0):    796e634d61737465720a2020000000ff                                                                    
[    10.072] (II) armada(0):    00485347594330303736370a2020003c                                                                    
[    10.072] (II) armada(0): Printing probed modes for output DVI1                                                                  
[    10.072] (II) armada(0): Modeline "1280x1024"x60.0  108.00  1280 1328 1440 1688  1024 1025 1028 1066 +hsync +vsync (64.0 kHz eP)
[    10.073] (II) armada(0): Modeline "1280x1024"x75.0  135.00  1280 1296 1440 1688  1024 1025 1028 1066 +hsync +vsync (80.0 kHz e)
[    10.073] (II) armada(0): Modeline "1280x960"x60.0  108.00  1280 1376 1488 1800  960 961 964 1000 +hsync +vsync (60.0 kHz e)
[    10.073] (II) armada(0): Modeline "1152x864"x75.0  108.00  1152 1216 1344 1600  864 865 868 900 +hsync +vsync (67.5 kHz e)
[    10.073] (II) armada(0): Modeline "1024x768"x75.0   78.75  1024 1040 1136 1312  768 769 772 800 +hsync +vsync (60.0 kHz e)      
[    10.073] (II) armada(0): Modeline "1024x768"x70.1   75.00  1024 1048 1184 1328  768 771 777 806 -hsync -vsync (56.5 kHz e)     
[    10.073] (II) armada(0): Modeline "1024x768"x60.0   65.00  1024 1048 1184 1344  768 771 777 806 -hsync -vsync (48.4 kHz e) 
[    10.073] (II) armada(0): Modeline "832x624"x74.6   57.28  832 864 928 1152  624 625 628 667 -hsync -vsync (49.7 kHz e)    
[    10.073] (II) armada(0): Modeline "800x600"x72.2   50.00  800 856 976 1040  600 637 643 666 +hsync +vsync (48.1 kHz e)    
[    10.073] (II) armada(0): Modeline "800x600"x75.0   49.50  800 816 896 1056  600 601 604 625 +hsync +vsync (46.9 kHz e)    
[    10.074] (II) armada(0): Modeline "800x600"x60.3   40.00  800 840 968 1056  600 601 605 628 +hsync +vsync (37.9 kHz e)    
[    10.074] (II) armada(0): Modeline "800x600"x56.3   36.00  800 824 896 1024  600 601 603 625 +hsync +vsync (35.2 kHz e)
[    10.074] (II) armada(0): Modeline "640x480"x75.0   31.50  640 656 720 840  480 481 484 500 -hsync -vsync (37.5 kHz e) 
[    10.074] (II) armada(0): Modeline "640x480"x72.8   31.50  640 664 704 832  480 489 492 520 -hsync -vsync (37.9 kHz e) 
[    10.074] (II) armada(0): Modeline "640x480"x66.7   30.24  640 704 768 864  480 483 486 525 -hsync -vsync (35.0 kHz e) 
[    10.074] (II) armada(0): Modeline "640x480"x59.9   25.18  640 656 752 800  480 490 492 525 -hsync -vsync (31.5 kHz e) 
[    10.074] (II) armada(0): Modeline "720x400"x70.1   28.32  720 738 846 900  400 412 414 449 -hsync +vsync (31.5 kHz e)
[    10.074] (II) armada(0): Output DVI1 connected                                        
[    10.074] (II) armada(0): Using exact sizes for initial modes                          
[    10.074] (II) armada(0): Output DVI1 using initial mode 1280x1024 +0+0                
[    10.074] (==) armada(0): Using gamma correction (1.0, 1.0, 1.0)                      
[    10.074] (==) armada(0): DPI set to (96, 96)                                         
[    10.075] (II) Loading sub module "fb"                                                
[    10.075] (II) LoadModule: "fb"                                               
[    10.075] (II) Loading /usr/lib/xorg/modules/libfb.so                                                                            
[    10.076] (II) Module fb: vendor="X.Org Foundation"                                                                             
[    10.076]    compiled for 1.19.6, module version = 1.0.0                                                                    
[    10.076]    ABI class: X.Org ANSI C Emulation, version 0.4                                                                
[    10.083] (==) Depth 24 pixmap format is 32 bpp                                                                            
[    10.125] (==) armada(0): Backing store disabled                                                                           
[    10.125] (==) armada(0): Silken mouse enabled                                                                             
[    10.243] (--) armada(0): Vivante GC880 GPU revision 5124 (etnaviv) 2d PE2.0                                           
[    10.254] (II) armada(0): [DRI2] Setup complete                                                                        
[    10.254] (II) armada(0): [DRI2]   DRI driver: etnaviv                                                                 
[    10.254] (II) armada(0): direct rendering: DRI2 enabled                                                               
[    10.255] (II) armada(0): RandR 1.2 enabled, ignore the following RandR disabled message.                              
[    10.306] (==) armada(0): DPMS enabled                                                                                
[    10.309] (II) armada(0): etnaviv: Xv: using YUY2 format intermediate YUV target                                      
[    10.585] (--) RandR disabled                                                                                         
[    10.618] (II) armada(0): etnaviv: A8 target not supported                                                            
[    10.624] (II) armada(0): Setting screen physical size to 338 x 270                                                   
[    10.843] (II) LoadModule: "mouse"                                                                                               
[    10.843] (WW) Warning, couldn't open module mouse                                                                               
[    10.843] (II) UnloadModule: "mouse"                                                                                             
[    10.843] (II) Unloading mouse                                                                                                   
[    10.843] (EE) Failed to load module "mouse" (module does not exist, 0)                                                          
[    10.843] (EE) No input driver matching `mouse'                                                                                  
[    10.843] (II) Falling back to input driver `libinput'                                                                           
[    10.844] (II) LoadModule: "libinput"                                                                                            
[    10.844] (WW) Warning, couldn't open module libinput                                                                           
[    10.844] (II) UnloadModule: "libinput"                                                                                     
[    10.844] (II) Unloading libinput                                                                                          
[    10.844] (EE) Failed to load module "libinput" (module does not exist, 0)                                                       
[    10.844] (II) LoadModule: "kbd"                                                                                                
[    10.845] (WW) Warning, couldn't open module kbd                                                                            
[    10.845] (II) UnloadModule: "kbd"                                                                                         
[    10.845] (II) Unloading kbd                                                                                               
[    10.845] (EE) Failed to load module "kbd" (module does not exist, 0)                                                      
[    10.845] (EE) No input driver matching `kbd'                                                                              
[    10.845] (II) Falling back to input driver `libinput'                                                                 
[    10.845] (II) LoadModule: "libinput"                                                                                  
[    10.845] (WW) Warning, couldn't open module libinput                                                                  
[    10.846] (II) UnloadModule: "libinput"                                                                                
[    10.846] (II) Unloading libinput                                                                                      
[    10.846] (EE) Failed to load module "libinput" (module does not exist, 0)
------------------------>8--------------------------

-Alexey

^ permalink raw reply	[flat|nested] 30+ messages in thread

* DRM_UDL and GPU under Xserver
  2018-04-05 18:39                 ` Alexey Brodkin
@ 2018-04-09  8:31                   ` Daniel Vetter
  -1 siblings, 0 replies; 30+ messages in thread
From: Daniel Vetter @ 2018-04-09  8:31 UTC (permalink / raw)
  To: linux-snps-arc

On Thu, Apr 05, 2018@06:39:41PM +0000, Alexey Brodkin wrote:
> Hi Daniel, all,
> 
> On Thu, 2018-04-05@15:44 +0200, Daniel Vetter wrote:
> > On Thu, Apr 05, 2018@11:10:03AM +0000, Alexey Brodkin wrote:
> > > Hi Daniel, Lucas,
> > > 
> > > On Thu, 2018-04-05@12:59 +0200, Daniel Vetter wrote:
> > > > On Thu, Apr 5, 2018@12:29 PM, Lucas Stach <l.stach@pengutronix.de> wrote:
> > > > > Am Donnerstag, den 05.04.2018, 11:32 +0200 schrieb Daniel Vetter:
> > > > > > On Thu, Apr 5, 2018 at 9:16 AM, Alexey Brodkin
> > > > > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > > > > Hi Daniel,
> > > > > > > 
> > > > > > > On Thu, 2018-04-05@08:18 +0200, Daniel Vetter wrote:
> > > > > > > > On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
> > > > > > > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > > > > > > Hello,
> > > > > > > > > 
> > > > > > > > > We're trying to use DisplayLink USB2-to-HDMI adapter to render
> > > > > > > > > GPU-accelerated graphics.
> > > > > > > > > Hardware setup is as simple as a devboard + DisplayLink
> > > > > > > > > adapter.
> > > > > > > > > Devboards we use for this experiment are:
> > > > > > > > >  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
> > > > > > > > >  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as
> > > > > > > > > well)
> > > > > > > > > 
> > > > > > > > > I'm sure any other board with DRM supported GPU will work,
> > > > > > > > > those we just used
> > > > > > > > > as the very recent Linux kernels could be easily run on them
> > > > > > > > > both.
> > > > > > > > > 
> > > > > > > > > Basically the problem is UDL needs to be explicitly notified
> > > > > > > > > about new data
> > > > > > > > > to be rendered on the screen compared to typical bit-streamers
> > > > > > > > > that infinitely
> > > > > > > > > scan a dedicated buffer in memory.
> > > > > > > > > 
> > > > > > > > > In case of UDL there're just 2 ways for this notification:
> > > > > > > > >  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs-
> > > > > > > > > > page_flip()
> > > > > > > > > 
> > > > > > > > >  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs-
> > > > > > > > > > dirty()
> > > > > > > > > 
> > > > > > > > > But neither of IOCTLs happen when we run Xserver with xf86-
> > > > > > > > > video-armada driver
> > > > > > > > > (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.ar
> > > > > > > > > m.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-
> > > > > > > > > 3Dunstable-2Ddevel&d=DwIBaQ&;
> > > > > > > > > c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkh
> > > > > > > > > pk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
> > > > > > > > > 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
> > > > > > > > > 
> > > > > > > > > Is it something missing in Xserver or in UDL driver?
> > > > > > > > 
> > > > > > > > Use the -modesetting driverr for UDL, that one works correctly.
> > > > > > > 
> > > > > > > If you're talking about "modesetting" driver of Xserver [1] then
> > > > > > > indeed
> > > > > > > picture is displayed on the screen. But there I guess won't be any
> > > > > > > 3D acceleration.
> > > > > > > 
> > > > > > > At least that's what was suggested to me earlier here [2] by Lucas:
> > > > > > > ---------------------------->8---------------------------
> > > > > > > For 3D acceleration to work under X you need the etnaviv specific
> > > > > > > DDX
> > > > > > > driver, which can be found here:
> > > > > > > 
> > > > > > > https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-3Dunsta&d=DwIBaQ&c=DPL6_X
> > > > > > > _6Jk
> > > > > > > XFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=FleDFAQb2lBcZk5DMld7qpeSrB5Srsb4XPQecA5BPvU&s=YUzMQWe3lpC_pjGqRjb4MvRYh16ZBbe
> > > > > > > alqf
> > > > > > > rywlqjKE&e=
> > > > > > > ble-devel
> > > > > > 
> > > > > > You definitely want to use -modesetting for UDL. And I thought with
> > > > > > glamour and the corresponding mesa work you should also get
> > > > > > accelaration. Insisting that you must use a driver-specific ddx is
> > > > > > broken, the world doesn't work like that anymore.
> > > > > 
> > > > > On etnaviv the world definitely still works like this. The etnaviv DDX
> > > > > uses the dedicated 2D hardware of the Vivante GPUs, which is much
> > > > > faster and efficient than going through Glamor.
> > > > > Especially since almost all X accel operations are done on linear
> > > > > buffers, while the 3D GPU can only ever do tiled on both sampler and
> > > > > render, where some multi-pipe 3D cores can't even read the tiling they
> > > > > write out. So Glamor is an endless copy fest using the resolve engine
> > > > > on those.
> > > > 
> > > > Ah right, I've forgotten about the vivante 2d cores again.
> > > > 
> > > > > If using etnaviv with UDL is a use-case that need to be supported, one
> > > > > would need to port the UDL specifics from -modesetting to the -armada
> > > > > DDX.
> > > > 
> > > > I don't think this makes sense.
> > > 
> > > I'm not really sure it has something to do with Etnaviv in particular.
> > > Given UDL might be attached to any board with any GPU that would mean we'd
> > > need to add those "UDL specifics from -modesetting" in all xf86-video-drivers,
> > > right?
> > 
> > X server supports multiple drivers (for different devices) in parallel.
> > You should be using armada for the imx-drm thing, and modesetting for udl.
> > And through the magic of prime it should even figure out that the device
> > 
> > > > > > Lucas, can you pls clarify? Also, why does -armada bind against all
> > > > > > kms drivers, that's probaly too much.
> > > > > 
> > > > > I think that's a local modification done by Alexey. The armada driver
> > > > > only binds to armada and imx-drm by default.
> > > 
> > > Actually it all magically works without any modifications.
> > > I just start X with the following xorg.conf [1]:
> > > ------------------------>8--------------------------
> > > Section "Device"
> > > 	Identifier	"Driver0"
> > > 	Screen		0
> > > 	Driver		"armada"
> > > EndSection
> > > ------------------------>8--------------------------
> 
> Ok it was quite some time ago so I forgot about that completely.
> I really made one trivial change in xf86-video-armada:
> ------------------------>8--------------------------
> --- a/src/armada_module.c
> +++ b/src/armada_module.c
> @@ -26,7 +26,7 @@
>  #define ARMADA_NAME            "armada"
>  #define ARMADA_DRIVER_NAME     "armada"
>  
> -#define DRM_MODULE_NAMES       "armada-drm", "imx-drm"
> +#define DRM_MODULE_NAMES       "armada-drm", "imx-drm", "udl"
>  #define DRM_DEFAULT_BUS_ID     NULL
> ------------------------>8--------------------------
> 
> Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed.

You need to keep imx-drm around. And then light up the udl display using
prime. Afaiui it should all just work (but with maybe a few disconnected
outputs from imx-drm around that you don't need, but that's not a
problem).
-Daniel
> 
> > > In fact in case of "kmscube" I had to trick Mesa like that:
> > > ------------------------>8--------------------------
> > > export MESA_LOADER_DRIVER_OVERRIDE=imx-drm
> > 
> > Yeah this shouldn't be necessary at all.
> > 
> > > ------------------------>8--------------------------
> > > And then UDL out works perfectly fine (that's because "kmscube"
> > > explicitly calls drmModePageFlip()).
> > > 
> > > As for Xserver nothing special was done.
> > > 
> > > [1] https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_tree_conf_xorg-2Dsample.conf-3Fh-3Duns
> > > table-
> > > 2Ddevel&d=DwIBAg&c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=PGNfmLiN38EmKHzRyuZpX3Lsc9grXsJBx2tkJubl4t0&s=IUChhhP3eD
> > > PEiH3QdN6CxhfFaBCZIya0KEWDbCcDtGI&e=
> > 
> > xorg.log is probably more interesting. No idea whether your Xorg.conf
> > snippet is needed for armada or not.
> 
> Below is my full Xorg.log output with change above in place:
> ------------------------>8--------------------------
> [     8.941]
> X.Org X Server 1.19.6
> Release Date: 2017-12-20
> [     8.941] X Protocol Version 11, Revision 0
> [     8.941] Build Operating System: Linux 3.10.0-514.el7.x86_64 x86_64
> [     8.941] Current Operating System: Linux buildroot 4.16.0 #3 SMP PREEMPT Thu Apr 5 21:28:25 MSK 2018 arc
> [     8.941] Kernel command line: earlycon=uart8250,mmio32,0xf0005000,115200n8 console=ttyS0,115200n8 debug print-fatal-signals=1 drm.debug=0x3f
> [     8.942] Build Date: 05 April 2018  06:48:58PM
> [     8.942]
> [     8.942] Current version of pixman: 0.34.0
> [     8.942]    Before reporting problems, check http://wiki.x.org
>         to make sure that you have the latest version.
> [     8.942] Markers: (--) probed, (**) from config file, (==) default setting,
>         (++) from command line, (!!) notice, (II) informational,
>         (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
> [     8.942] (==) Log file: "/var/log/Xorg.0.log", Time: Thu Jan  1 00:00:08 1970
> [     8.942] (==) Using config file: "/etc/X11/xorg.conf"
> [     8.942] (==) No Layout section.  Using the first Screen section.
> [     8.942] (==) No screen section available. Using defaults.
> [     8.942] (**) |-->Screen "Default Screen Section" (0)
> [     8.942] (**) |   |-->Monitor "<default monitor>"
> [     8.944] (==) No device specified for screen "Default Screen Section".
>         Using the first device section listed.
> [     8.944] (**) |   |-->Device "Driver0"
> [     8.944] (==) No monitor specified for screen "Default Screen Section".
>         Using a default monitor configuration.
> [     8.944] (==) Not automatically adding devices
> [     8.944] (==) Not automatically enabling devices
> [     8.944] (==) Not automatically adding GPU devices
> [     8.944] (==) Max clients allowed: 256, resource mask: 0x1fffff
> [     8.944] (WW) The directory "/usr/share/fonts/X11//TTF/" does not exist.
> [     8.944]    Entry deleted from font path.
> [     8.944] (WW) The directory "/usr/share/fonts/X11//OTF/" does not exist.
> [     8.944]    Entry deleted from font path.
> [     8.944] (WW) The directory "/usr/share/fonts/X11//Type1/" does not exist.
> [     8.944]    Entry deleted from font path.
> [     8.944] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/X11//100dpi/".
> [     8.944]    Entry deleted from font path.
> [     8.945]    (Run 'mkfontdir' on "/usr/share/fonts/X11//100dpi/").
> [     8.945] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/X11//75dpi/".
> [     8.945]    Entry deleted from font path.
> [     8.945]    (Run 'mkfontdir' on "/usr/share/fonts/X11//75dpi/").
> [     8.945] (==) FontPath set to:
>         /usr/share/fonts/X11//misc/
> [     8.945] (==) ModulePath set to "/usr/lib/xorg/modules"
> [     8.945] (==) |-->Input Device "<default pointer>"
> [     8.945] (==) |-->Input Device "<default keyboard>"
> [     8.945] (==) No Layout section. Using the default mouse configuration.
> [     8.945] (==) No Layout section. Using the default keyboard configuration.
> [     8.945] (II) Loader magic: 0x16c510
> [     8.945] (II) Module ABI versions:
> [     8.945]    X.Org ANSI C Emulation: 0.4
> [     8.945]    X.Org Video Driver: 23.0
> [     8.945]    X.Org XInput driver : 24.1
> [     8.945]    X.Org Server Extension : 10.0
> [     8.945] (II) LoadModule: "armada"
> [     8.946] (II) Loading /usr/lib/xorg/modules/drivers/armada_drv.so
> [     8.947] (II) Module armada: vendor="X.Org Foundation"
> [     8.947]    compiled for 1.19.6, module version = 0.0.0
> [     8.947]    Module class: X.Org Video Driver
> [     8.947]    ABI class: X.Org Video Driver, version 23.0
> [     8.947] (II) LoadModule: "mouse"
> [     8.948] (WW) Warning, couldn't open module mouse
> [     8.948] (II) UnloadModule: "mouse"
> [     8.948] (II) Unloading mouse
> [     8.948] (EE) Failed to load module "mouse" (module does not exist, 0)
> [     8.948] (II) LoadModule: "kbd"
> [     8.948] (WW) Warning, couldn't open module kbd
> [     8.948] (II) UnloadModule: "kbd"
> [     8.948] (II) Unloading kbd
> [     8.948] (EE) Failed to load module "kbd" (module does not exist, 0)
> [     8.948] (II) armada: Support for Marvell LCD Controller: 88AP510
> [     8.948] (II) armada: Support for Freescale IPU: i.MX6
> [     8.949] (--) using VT number 2
> [     8.949] (WW) Falling back to old probe method for armada
> [     9.415] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
> [     9.438] (II) armada(0): hardware: udl
> [     9.438] (II) armada(0): Creating default Display subsection in Screen section
>         "Default Screen Section" for depth/fbbpp 24/32
> [     9.438] (==) armada(0): Depth 24, (--) framebuffer bpp 32
> [     9.438] (==) armada(0): RGB weight 888
> [     9.438] (==) armada(0): Default visual is TrueColor                          
> [     9.438] (II) Loading sub module "etnadrm_gpu"                          
> [     9.438] (II) LoadModule: "etnadrm_gpu"                                    
> [     9.439] (II) Loading /usr/lib/xorg/modules/drivers/etnadrm_gpu.so         
> [     9.439] (II) Module Etnaviv GPU driver (DRM): vendor="X.Org Foundation"              
> [     9.439]    compiled for 1.19.6, module version = 0.0.0                               
> [     9.440]    ABI class: X.Org ANSI C Emulation, version 0.4                   
> [     9.774] (II) armada(0): Output DVI1 has no monitor section                          
> [    10.069] (II) armada(0): EDID for output DVI1                                        
> [    10.069] (II) armada(0): Manufacturer: SAM  Model: 1bb  Serial#: 1212231993
> [    10.070] (II) armada(0): Year: 2005  Week: 50                            
> [    10.070] (II) armada(0): EDID Version: 1.3                                    
> [    10.070] (II) armada(0): Digital Display Input                                  
> [    10.070] (II) armada(0): Max Image Size [cm]: horiz.: 38  vert.: 30             
> [    10.070] (II) armada(0): Gamma: 2.20                                            
> [    10.070] (II) armada(0): DPMS capabilities: Off                                 
> [    10.070] (II) armada(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4       
> [    10.070] (II) armada(0): First detailed timing is preferred mode                
> [    10.070] (II) armada(0): redX: 0.640 redY: 0.329   greenX: 0.300 greenY: 0.600  
> [    10.070] (II) armada(0): blueX: 0.150 blueY: 0.060   whiteX: 0.313 whiteY: 0.329
> [    10.070] (II) armada(0): Supported established timings:                  
> [    10.070] (II) armada(0): 720x400 at 70Hz                                       
> [    10.070] (II) armada(0): 640x480 at 60Hz                                         
> [    10.070] (II) armada(0): 640x480 at 67Hz                                           
> [    10.070] (II) armada(0): 640x480 at 72Hz                                   
> [    10.070] (II) armada(0): 640x480 at 75Hz                                     
> [    10.070] (II) armada(0): 800x600 at 56Hz                                     
> [    10.070] (II) armada(0): 800x600 at 60Hz                                                 
> [    10.071] (II) armada(0): 800x600 at 72Hz                                                 
> [    10.071] (II) armada(0): 800x600 at 75Hz                                                 
> [    10.071] (II) armada(0): 832x624 at 75Hz                                                
> [    10.071] (II) armada(0): 1024x768 at 60Hz                                               
> [    10.071] (II) armada(0): 1024x768 at 70Hz                                               
> [    10.071] (II) armada(0): 1024x768 at 75Hz                                       
> [    10.071] (II) armada(0): 1280x1024 at 75Hz                                      
> [    10.071] (II) armada(0): 1152x864 at 75Hz                                       
> [    10.071] (II) armada(0): Manufacturer's mask: 0                                                    
> [    10.071] (II) armada(0): Supported standard timings:                                               
> [    10.071] (II) armada(0): #0: hsize: 1280  vsize 1024  refresh: 60  vid: 32897                         
> [    10.071] (II) armada(0): #1: hsize: 1280  vsize 960  refresh: 60  vid: 16513                          
> [    10.071] (II) armada(0): #2: hsize: 1152  vsize 864  refresh: 75  vid: 20337                          
> [    10.071] (II) armada(0): Supported detailed timing:                                                   
> [    10.071] (II) armada(0): clock: 108.0 MHz   Image Size:  376 x 301 mm                                 
> [    10.071] (II) armada(0): h_active: 1280  h_sync: 1328  h_sync_end 1440 h_blank_end 1688 h_border: 0   
> [    10.071] (II) armada(0): v_active: 1024  v_sync: 1025  v_sync_end 1028 v_blanking: 1066 v_border: 0   
> [    10.071] (II) armada(0): Ranges: V min: 56 V max: 75 Hz, H min: 30 H max: 81 kHz, PixClock max 145 MHz
> [    10.071] (II) armada(0): Monitor name: SyncMaster                               
> [    10.071] (II) armada(0): Serial No: HSGYC00767                                                     
> [    10.072] (II) armada(0): EDID (in hex):                                                            
> [    10.072] (II) armada(0):    00ffffffffffff004c2dbb0139314148                                          
> [    10.072] (II) armada(0):    320f010380261e782ade95a3544c9926  
> [    10.072] (II) armada(0):    0f5054bfef8081808140714f01010101                                                                    
> [    10.072] (II) armada(0):    010101010101302a009851002a403070                                                                    
> [    10.072] (II) armada(0):    1300782d1100001e000000fd00384b1e                                                                    
> [    10.072] (II) armada(0):    510e000a202020202020000000fc0053                                                                    
> [    10.072] (II) armada(0):    796e634d61737465720a2020000000ff                                                                    
> [    10.072] (II) armada(0):    00485347594330303736370a2020003c                                                                    
> [    10.072] (II) armada(0): Printing probed modes for output DVI1                                                                  
> [    10.072] (II) armada(0): Modeline "1280x1024"x60.0  108.00  1280 1328 1440 1688  1024 1025 1028 1066 +hsync +vsync (64.0 kHz eP)
> [    10.073] (II) armada(0): Modeline "1280x1024"x75.0  135.00  1280 1296 1440 1688  1024 1025 1028 1066 +hsync +vsync (80.0 kHz e)
> [    10.073] (II) armada(0): Modeline "1280x960"x60.0  108.00  1280 1376 1488 1800  960 961 964 1000 +hsync +vsync (60.0 kHz e)
> [    10.073] (II) armada(0): Modeline "1152x864"x75.0  108.00  1152 1216 1344 1600  864 865 868 900 +hsync +vsync (67.5 kHz e)
> [    10.073] (II) armada(0): Modeline "1024x768"x75.0   78.75  1024 1040 1136 1312  768 769 772 800 +hsync +vsync (60.0 kHz e)      
> [    10.073] (II) armada(0): Modeline "1024x768"x70.1   75.00  1024 1048 1184 1328  768 771 777 806 -hsync -vsync (56.5 kHz e)     
> [    10.073] (II) armada(0): Modeline "1024x768"x60.0   65.00  1024 1048 1184 1344  768 771 777 806 -hsync -vsync (48.4 kHz e) 
> [    10.073] (II) armada(0): Modeline "832x624"x74.6   57.28  832 864 928 1152  624 625 628 667 -hsync -vsync (49.7 kHz e)    
> [    10.073] (II) armada(0): Modeline "800x600"x72.2   50.00  800 856 976 1040  600 637 643 666 +hsync +vsync (48.1 kHz e)    
> [    10.073] (II) armada(0): Modeline "800x600"x75.0   49.50  800 816 896 1056  600 601 604 625 +hsync +vsync (46.9 kHz e)    
> [    10.074] (II) armada(0): Modeline "800x600"x60.3   40.00  800 840 968 1056  600 601 605 628 +hsync +vsync (37.9 kHz e)    
> [    10.074] (II) armada(0): Modeline "800x600"x56.3   36.00  800 824 896 1024  600 601 603 625 +hsync +vsync (35.2 kHz e)
> [    10.074] (II) armada(0): Modeline "640x480"x75.0   31.50  640 656 720 840  480 481 484 500 -hsync -vsync (37.5 kHz e) 
> [    10.074] (II) armada(0): Modeline "640x480"x72.8   31.50  640 664 704 832  480 489 492 520 -hsync -vsync (37.9 kHz e) 
> [    10.074] (II) armada(0): Modeline "640x480"x66.7   30.24  640 704 768 864  480 483 486 525 -hsync -vsync (35.0 kHz e) 
> [    10.074] (II) armada(0): Modeline "640x480"x59.9   25.18  640 656 752 800  480 490 492 525 -hsync -vsync (31.5 kHz e) 
> [    10.074] (II) armada(0): Modeline "720x400"x70.1   28.32  720 738 846 900  400 412 414 449 -hsync +vsync (31.5 kHz e)
> [    10.074] (II) armada(0): Output DVI1 connected                                        
> [    10.074] (II) armada(0): Using exact sizes for initial modes                          
> [    10.074] (II) armada(0): Output DVI1 using initial mode 1280x1024 +0+0                
> [    10.074] (==) armada(0): Using gamma correction (1.0, 1.0, 1.0)                      
> [    10.074] (==) armada(0): DPI set to (96, 96)                                         
> [    10.075] (II) Loading sub module "fb"                                                
> [    10.075] (II) LoadModule: "fb"                                               
> [    10.075] (II) Loading /usr/lib/xorg/modules/libfb.so                                                                            
> [    10.076] (II) Module fb: vendor="X.Org Foundation"                                                                             
> [    10.076]    compiled for 1.19.6, module version = 1.0.0                                                                    
> [    10.076]    ABI class: X.Org ANSI C Emulation, version 0.4                                                                
> [    10.083] (==) Depth 24 pixmap format is 32 bpp                                                                            
> [    10.125] (==) armada(0): Backing store disabled                                                                           
> [    10.125] (==) armada(0): Silken mouse enabled                                                                             
> [    10.243] (--) armada(0): Vivante GC880 GPU revision 5124 (etnaviv) 2d PE2.0                                           
> [    10.254] (II) armada(0): [DRI2] Setup complete                                                                        
> [    10.254] (II) armada(0): [DRI2]   DRI driver: etnaviv                                                                 
> [    10.254] (II) armada(0): direct rendering: DRI2 enabled                                                               
> [    10.255] (II) armada(0): RandR 1.2 enabled, ignore the following RandR disabled message.                              
> [    10.306] (==) armada(0): DPMS enabled                                                                                
> [    10.309] (II) armada(0): etnaviv: Xv: using YUY2 format intermediate YUV target                                      
> [    10.585] (--) RandR disabled                                                                                         
> [    10.618] (II) armada(0): etnaviv: A8 target not supported                                                            
> [    10.624] (II) armada(0): Setting screen physical size to 338 x 270                                                   
> [    10.843] (II) LoadModule: "mouse"                                                                                               
> [    10.843] (WW) Warning, couldn't open module mouse                                                                               
> [    10.843] (II) UnloadModule: "mouse"                                                                                             
> [    10.843] (II) Unloading mouse                                                                                                   
> [    10.843] (EE) Failed to load module "mouse" (module does not exist, 0)                                                          
> [    10.843] (EE) No input driver matching `mouse'                                                                                  
> [    10.843] (II) Falling back to input driver `libinput'                                                                           
> [    10.844] (II) LoadModule: "libinput"                                                                                            
> [    10.844] (WW) Warning, couldn't open module libinput                                                                           
> [    10.844] (II) UnloadModule: "libinput"                                                                                     
> [    10.844] (II) Unloading libinput                                                                                          
> [    10.844] (EE) Failed to load module "libinput" (module does not exist, 0)                                                       
> [    10.844] (II) LoadModule: "kbd"                                                                                                
> [    10.845] (WW) Warning, couldn't open module kbd                                                                            
> [    10.845] (II) UnloadModule: "kbd"                                                                                         
> [    10.845] (II) Unloading kbd                                                                                               
> [    10.845] (EE) Failed to load module "kbd" (module does not exist, 0)                                                      
> [    10.845] (EE) No input driver matching `kbd'                                                                              
> [    10.845] (II) Falling back to input driver `libinput'                                                                 
> [    10.845] (II) LoadModule: "libinput"                                                                                  
> [    10.845] (WW) Warning, couldn't open module libinput                                                                  
> [    10.846] (II) UnloadModule: "libinput"                                                                                
> [    10.846] (II) Unloading libinput                                                                                      
> [    10.846] (EE) Failed to load module "libinput" (module does not exist, 0)
> ------------------------>8--------------------------
> 
> -Alexey

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: DRM_UDL and GPU under Xserver
@ 2018-04-09  8:31                   ` Daniel Vetter
  0 siblings, 0 replies; 30+ messages in thread
From: Daniel Vetter @ 2018-04-09  8:31 UTC (permalink / raw)
  To: Alexey Brodkin
  Cc: Jose.Abreu, airlied, daniel.vetter, dri-devel, airlied,
	alexander.deucher, daniel.vetter, linux-snps-arc

On Thu, Apr 05, 2018 at 06:39:41PM +0000, Alexey Brodkin wrote:
> Hi Daniel, all,
> 
> On Thu, 2018-04-05 at 15:44 +0200, Daniel Vetter wrote:
> > On Thu, Apr 05, 2018 at 11:10:03AM +0000, Alexey Brodkin wrote:
> > > Hi Daniel, Lucas,
> > > 
> > > On Thu, 2018-04-05 at 12:59 +0200, Daniel Vetter wrote:
> > > > On Thu, Apr 5, 2018 at 12:29 PM, Lucas Stach <l.stach@pengutronix.de> wrote:
> > > > > Am Donnerstag, den 05.04.2018, 11:32 +0200 schrieb Daniel Vetter:
> > > > > > On Thu, Apr 5, 2018 at 9:16 AM, Alexey Brodkin
> > > > > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > > > > Hi Daniel,
> > > > > > > 
> > > > > > > On Thu, 2018-04-05 at 08:18 +0200, Daniel Vetter wrote:
> > > > > > > > On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin
> > > > > > > > <Alexey.Brodkin@synopsys.com> wrote:
> > > > > > > > > Hello,
> > > > > > > > > 
> > > > > > > > > We're trying to use DisplayLink USB2-to-HDMI adapter to render
> > > > > > > > > GPU-accelerated graphics.
> > > > > > > > > Hardware setup is as simple as a devboard + DisplayLink
> > > > > > > > > adapter.
> > > > > > > > > Devboards we use for this experiment are:
> > > > > > > > >  * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or
> > > > > > > > >  * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as
> > > > > > > > > well)
> > > > > > > > > 
> > > > > > > > > I'm sure any other board with DRM supported GPU will work,
> > > > > > > > > those we just used
> > > > > > > > > as the very recent Linux kernels could be easily run on them
> > > > > > > > > both.
> > > > > > > > > 
> > > > > > > > > Basically the problem is UDL needs to be explicitly notified
> > > > > > > > > about new data
> > > > > > > > > to be rendered on the screen compared to typical bit-streamers
> > > > > > > > > that infinitely
> > > > > > > > > scan a dedicated buffer in memory.
> > > > > > > > > 
> > > > > > > > > In case of UDL there're just 2 ways for this notification:
> > > > > > > > >  1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs-
> > > > > > > > > > page_flip()
> > > > > > > > > 
> > > > > > > > >  2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs-
> > > > > > > > > > dirty()
> > > > > > > > > 
> > > > > > > > > But neither of IOCTLs happen when we run Xserver with xf86-
> > > > > > > > > video-armada driver
> > > > > > > > > (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.ar
> > > > > > > > > m.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-
> > > > > > > > > 3Dunstable-2Ddevel&d=DwIBaQ&;
> > > > > > > > > c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkh
> > > > > > > > > pk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj-
> > > > > > > > > 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=).
> > > > > > > > > 
> > > > > > > > > Is it something missing in Xserver or in UDL driver?
> > > > > > > > 
> > > > > > > > Use the -modesetting driverr for UDL, that one works correctly.
> > > > > > > 
> > > > > > > If you're talking about "modesetting" driver of Xserver [1] then
> > > > > > > indeed
> > > > > > > picture is displayed on the screen. But there I guess won't be any
> > > > > > > 3D acceleration.
> > > > > > > 
> > > > > > > At least that's what was suggested to me earlier here [2] by Lucas:
> > > > > > > ---------------------------->8---------------------------
> > > > > > > For 3D acceleration to work under X you need the etnaviv specific
> > > > > > > DDX
> > > > > > > driver, which can be found here:
> > > > > > > 
> > > > > > > https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-3Dunsta&d=DwIBaQ&c=DPL6_X
> > > > > > > _6Jk
> > > > > > > XFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=FleDFAQb2lBcZk5DMld7qpeSrB5Srsb4XPQecA5BPvU&s=YUzMQWe3lpC_pjGqRjb4MvRYh16ZBbe
> > > > > > > alqf
> > > > > > > rywlqjKE&e=
> > > > > > > ble-devel
> > > > > > 
> > > > > > You definitely want to use -modesetting for UDL. And I thought with
> > > > > > glamour and the corresponding mesa work you should also get
> > > > > > accelaration. Insisting that you must use a driver-specific ddx is
> > > > > > broken, the world doesn't work like that anymore.
> > > > > 
> > > > > On etnaviv the world definitely still works like this. The etnaviv DDX
> > > > > uses the dedicated 2D hardware of the Vivante GPUs, which is much
> > > > > faster and efficient than going through Glamor.
> > > > > Especially since almost all X accel operations are done on linear
> > > > > buffers, while the 3D GPU can only ever do tiled on both sampler and
> > > > > render, where some multi-pipe 3D cores can't even read the tiling they
> > > > > write out. So Glamor is an endless copy fest using the resolve engine
> > > > > on those.
> > > > 
> > > > Ah right, I've forgotten about the vivante 2d cores again.
> > > > 
> > > > > If using etnaviv with UDL is a use-case that need to be supported, one
> > > > > would need to port the UDL specifics from -modesetting to the -armada
> > > > > DDX.
> > > > 
> > > > I don't think this makes sense.
> > > 
> > > I'm not really sure it has something to do with Etnaviv in particular.
> > > Given UDL might be attached to any board with any GPU that would mean we'd
> > > need to add those "UDL specifics from -modesetting" in all xf86-video-drivers,
> > > right?
> > 
> > X server supports multiple drivers (for different devices) in parallel.
> > You should be using armada for the imx-drm thing, and modesetting for udl.
> > And through the magic of prime it should even figure out that the device
> > 
> > > > > > Lucas, can you pls clarify? Also, why does -armada bind against all
> > > > > > kms drivers, that's probaly too much.
> > > > > 
> > > > > I think that's a local modification done by Alexey. The armada driver
> > > > > only binds to armada and imx-drm by default.
> > > 
> > > Actually it all magically works without any modifications.
> > > I just start X with the following xorg.conf [1]:
> > > ------------------------>8--------------------------
> > > Section "Device"
> > > 	Identifier	"Driver0"
> > > 	Screen		0
> > > 	Driver		"armada"
> > > EndSection
> > > ------------------------>8--------------------------
> 
> Ok it was quite some time ago so I forgot about that completely.
> I really made one trivial change in xf86-video-armada:
> ------------------------>8--------------------------
> --- a/src/armada_module.c
> +++ b/src/armada_module.c
> @@ -26,7 +26,7 @@
>  #define ARMADA_NAME            "armada"
>  #define ARMADA_DRIVER_NAME     "armada"
>  
> -#define DRM_MODULE_NAMES       "armada-drm", "imx-drm"
> +#define DRM_MODULE_NAMES       "armada-drm", "imx-drm", "udl"
>  #define DRM_DEFAULT_BUS_ID     NULL
> ------------------------>8--------------------------
> 
> Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed.

You need to keep imx-drm around. And then light up the udl display using
prime. Afaiui it should all just work (but with maybe a few disconnected
outputs from imx-drm around that you don't need, but that's not a
problem).
-Daniel
> 
> > > In fact in case of "kmscube" I had to trick Mesa like that:
> > > ------------------------>8--------------------------
> > > export MESA_LOADER_DRIVER_OVERRIDE=imx-drm
> > 
> > Yeah this shouldn't be necessary at all.
> > 
> > > ------------------------>8--------------------------
> > > And then UDL out works perfectly fine (that's because "kmscube"
> > > explicitly calls drmModePageFlip()).
> > > 
> > > As for Xserver nothing special was done.
> > > 
> > > [1] https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_tree_conf_xorg-2Dsample.conf-3Fh-3Duns
> > > table-
> > > 2Ddevel&d=DwIBAg&c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=PGNfmLiN38EmKHzRyuZpX3Lsc9grXsJBx2tkJubl4t0&s=IUChhhP3eD
> > > PEiH3QdN6CxhfFaBCZIya0KEWDbCcDtGI&e=
> > 
> > xorg.log is probably more interesting. No idea whether your Xorg.conf
> > snippet is needed for armada or not.
> 
> Below is my full Xorg.log output with change above in place:
> ------------------------>8--------------------------
> [     8.941]
> X.Org X Server 1.19.6
> Release Date: 2017-12-20
> [     8.941] X Protocol Version 11, Revision 0
> [     8.941] Build Operating System: Linux 3.10.0-514.el7.x86_64 x86_64
> [     8.941] Current Operating System: Linux buildroot 4.16.0 #3 SMP PREEMPT Thu Apr 5 21:28:25 MSK 2018 arc
> [     8.941] Kernel command line: earlycon=uart8250,mmio32,0xf0005000,115200n8 console=ttyS0,115200n8 debug print-fatal-signals=1 drm.debug=0x3f
> [     8.942] Build Date: 05 April 2018  06:48:58PM
> [     8.942]
> [     8.942] Current version of pixman: 0.34.0
> [     8.942]    Before reporting problems, check http://wiki.x.org
>         to make sure that you have the latest version.
> [     8.942] Markers: (--) probed, (**) from config file, (==) default setting,
>         (++) from command line, (!!) notice, (II) informational,
>         (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
> [     8.942] (==) Log file: "/var/log/Xorg.0.log", Time: Thu Jan  1 00:00:08 1970
> [     8.942] (==) Using config file: "/etc/X11/xorg.conf"
> [     8.942] (==) No Layout section.  Using the first Screen section.
> [     8.942] (==) No screen section available. Using defaults.
> [     8.942] (**) |-->Screen "Default Screen Section" (0)
> [     8.942] (**) |   |-->Monitor "<default monitor>"
> [     8.944] (==) No device specified for screen "Default Screen Section".
>         Using the first device section listed.
> [     8.944] (**) |   |-->Device "Driver0"
> [     8.944] (==) No monitor specified for screen "Default Screen Section".
>         Using a default monitor configuration.
> [     8.944] (==) Not automatically adding devices
> [     8.944] (==) Not automatically enabling devices
> [     8.944] (==) Not automatically adding GPU devices
> [     8.944] (==) Max clients allowed: 256, resource mask: 0x1fffff
> [     8.944] (WW) The directory "/usr/share/fonts/X11//TTF/" does not exist.
> [     8.944]    Entry deleted from font path.
> [     8.944] (WW) The directory "/usr/share/fonts/X11//OTF/" does not exist.
> [     8.944]    Entry deleted from font path.
> [     8.944] (WW) The directory "/usr/share/fonts/X11//Type1/" does not exist.
> [     8.944]    Entry deleted from font path.
> [     8.944] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/X11//100dpi/".
> [     8.944]    Entry deleted from font path.
> [     8.945]    (Run 'mkfontdir' on "/usr/share/fonts/X11//100dpi/").
> [     8.945] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/X11//75dpi/".
> [     8.945]    Entry deleted from font path.
> [     8.945]    (Run 'mkfontdir' on "/usr/share/fonts/X11//75dpi/").
> [     8.945] (==) FontPath set to:
>         /usr/share/fonts/X11//misc/
> [     8.945] (==) ModulePath set to "/usr/lib/xorg/modules"
> [     8.945] (==) |-->Input Device "<default pointer>"
> [     8.945] (==) |-->Input Device "<default keyboard>"
> [     8.945] (==) No Layout section. Using the default mouse configuration.
> [     8.945] (==) No Layout section. Using the default keyboard configuration.
> [     8.945] (II) Loader magic: 0x16c510
> [     8.945] (II) Module ABI versions:
> [     8.945]    X.Org ANSI C Emulation: 0.4
> [     8.945]    X.Org Video Driver: 23.0
> [     8.945]    X.Org XInput driver : 24.1
> [     8.945]    X.Org Server Extension : 10.0
> [     8.945] (II) LoadModule: "armada"
> [     8.946] (II) Loading /usr/lib/xorg/modules/drivers/armada_drv.so
> [     8.947] (II) Module armada: vendor="X.Org Foundation"
> [     8.947]    compiled for 1.19.6, module version = 0.0.0
> [     8.947]    Module class: X.Org Video Driver
> [     8.947]    ABI class: X.Org Video Driver, version 23.0
> [     8.947] (II) LoadModule: "mouse"
> [     8.948] (WW) Warning, couldn't open module mouse
> [     8.948] (II) UnloadModule: "mouse"
> [     8.948] (II) Unloading mouse
> [     8.948] (EE) Failed to load module "mouse" (module does not exist, 0)
> [     8.948] (II) LoadModule: "kbd"
> [     8.948] (WW) Warning, couldn't open module kbd
> [     8.948] (II) UnloadModule: "kbd"
> [     8.948] (II) Unloading kbd
> [     8.948] (EE) Failed to load module "kbd" (module does not exist, 0)
> [     8.948] (II) armada: Support for Marvell LCD Controller: 88AP510
> [     8.948] (II) armada: Support for Freescale IPU: i.MX6
> [     8.949] (--) using VT number 2
> [     8.949] (WW) Falling back to old probe method for armada
> [     9.415] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
> [     9.438] (II) armada(0): hardware: udl
> [     9.438] (II) armada(0): Creating default Display subsection in Screen section
>         "Default Screen Section" for depth/fbbpp 24/32
> [     9.438] (==) armada(0): Depth 24, (--) framebuffer bpp 32
> [     9.438] (==) armada(0): RGB weight 888
> [     9.438] (==) armada(0): Default visual is TrueColor                          
> [     9.438] (II) Loading sub module "etnadrm_gpu"                          
> [     9.438] (II) LoadModule: "etnadrm_gpu"                                    
> [     9.439] (II) Loading /usr/lib/xorg/modules/drivers/etnadrm_gpu.so         
> [     9.439] (II) Module Etnaviv GPU driver (DRM): vendor="X.Org Foundation"              
> [     9.439]    compiled for 1.19.6, module version = 0.0.0                               
> [     9.440]    ABI class: X.Org ANSI C Emulation, version 0.4                   
> [     9.774] (II) armada(0): Output DVI1 has no monitor section                          
> [    10.069] (II) armada(0): EDID for output DVI1                                        
> [    10.069] (II) armada(0): Manufacturer: SAM  Model: 1bb  Serial#: 1212231993
> [    10.070] (II) armada(0): Year: 2005  Week: 50                            
> [    10.070] (II) armada(0): EDID Version: 1.3                                    
> [    10.070] (II) armada(0): Digital Display Input                                  
> [    10.070] (II) armada(0): Max Image Size [cm]: horiz.: 38  vert.: 30             
> [    10.070] (II) armada(0): Gamma: 2.20                                            
> [    10.070] (II) armada(0): DPMS capabilities: Off                                 
> [    10.070] (II) armada(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4       
> [    10.070] (II) armada(0): First detailed timing is preferred mode                
> [    10.070] (II) armada(0): redX: 0.640 redY: 0.329   greenX: 0.300 greenY: 0.600  
> [    10.070] (II) armada(0): blueX: 0.150 blueY: 0.060   whiteX: 0.313 whiteY: 0.329
> [    10.070] (II) armada(0): Supported established timings:                  
> [    10.070] (II) armada(0): 720x400@70Hz                                       
> [    10.070] (II) armada(0): 640x480@60Hz                                         
> [    10.070] (II) armada(0): 640x480@67Hz                                           
> [    10.070] (II) armada(0): 640x480@72Hz                                   
> [    10.070] (II) armada(0): 640x480@75Hz                                     
> [    10.070] (II) armada(0): 800x600@56Hz                                     
> [    10.070] (II) armada(0): 800x600@60Hz                                                 
> [    10.071] (II) armada(0): 800x600@72Hz                                                 
> [    10.071] (II) armada(0): 800x600@75Hz                                                 
> [    10.071] (II) armada(0): 832x624@75Hz                                                
> [    10.071] (II) armada(0): 1024x768@60Hz                                               
> [    10.071] (II) armada(0): 1024x768@70Hz                                               
> [    10.071] (II) armada(0): 1024x768@75Hz                                       
> [    10.071] (II) armada(0): 1280x1024@75Hz                                      
> [    10.071] (II) armada(0): 1152x864@75Hz                                       
> [    10.071] (II) armada(0): Manufacturer's mask: 0                                                    
> [    10.071] (II) armada(0): Supported standard timings:                                               
> [    10.071] (II) armada(0): #0: hsize: 1280  vsize 1024  refresh: 60  vid: 32897                         
> [    10.071] (II) armada(0): #1: hsize: 1280  vsize 960  refresh: 60  vid: 16513                          
> [    10.071] (II) armada(0): #2: hsize: 1152  vsize 864  refresh: 75  vid: 20337                          
> [    10.071] (II) armada(0): Supported detailed timing:                                                   
> [    10.071] (II) armada(0): clock: 108.0 MHz   Image Size:  376 x 301 mm                                 
> [    10.071] (II) armada(0): h_active: 1280  h_sync: 1328  h_sync_end 1440 h_blank_end 1688 h_border: 0   
> [    10.071] (II) armada(0): v_active: 1024  v_sync: 1025  v_sync_end 1028 v_blanking: 1066 v_border: 0   
> [    10.071] (II) armada(0): Ranges: V min: 56 V max: 75 Hz, H min: 30 H max: 81 kHz, PixClock max 145 MHz
> [    10.071] (II) armada(0): Monitor name: SyncMaster                               
> [    10.071] (II) armada(0): Serial No: HSGYC00767                                                     
> [    10.072] (II) armada(0): EDID (in hex):                                                            
> [    10.072] (II) armada(0):    00ffffffffffff004c2dbb0139314148                                          
> [    10.072] (II) armada(0):    320f010380261e782ade95a3544c9926  
> [    10.072] (II) armada(0):    0f5054bfef8081808140714f01010101                                                                    
> [    10.072] (II) armada(0):    010101010101302a009851002a403070                                                                    
> [    10.072] (II) armada(0):    1300782d1100001e000000fd00384b1e                                                                    
> [    10.072] (II) armada(0):    510e000a202020202020000000fc0053                                                                    
> [    10.072] (II) armada(0):    796e634d61737465720a2020000000ff                                                                    
> [    10.072] (II) armada(0):    00485347594330303736370a2020003c                                                                    
> [    10.072] (II) armada(0): Printing probed modes for output DVI1                                                                  
> [    10.072] (II) armada(0): Modeline "1280x1024"x60.0  108.00  1280 1328 1440 1688  1024 1025 1028 1066 +hsync +vsync (64.0 kHz eP)
> [    10.073] (II) armada(0): Modeline "1280x1024"x75.0  135.00  1280 1296 1440 1688  1024 1025 1028 1066 +hsync +vsync (80.0 kHz e)
> [    10.073] (II) armada(0): Modeline "1280x960"x60.0  108.00  1280 1376 1488 1800  960 961 964 1000 +hsync +vsync (60.0 kHz e)
> [    10.073] (II) armada(0): Modeline "1152x864"x75.0  108.00  1152 1216 1344 1600  864 865 868 900 +hsync +vsync (67.5 kHz e)
> [    10.073] (II) armada(0): Modeline "1024x768"x75.0   78.75  1024 1040 1136 1312  768 769 772 800 +hsync +vsync (60.0 kHz e)      
> [    10.073] (II) armada(0): Modeline "1024x768"x70.1   75.00  1024 1048 1184 1328  768 771 777 806 -hsync -vsync (56.5 kHz e)     
> [    10.073] (II) armada(0): Modeline "1024x768"x60.0   65.00  1024 1048 1184 1344  768 771 777 806 -hsync -vsync (48.4 kHz e) 
> [    10.073] (II) armada(0): Modeline "832x624"x74.6   57.28  832 864 928 1152  624 625 628 667 -hsync -vsync (49.7 kHz e)    
> [    10.073] (II) armada(0): Modeline "800x600"x72.2   50.00  800 856 976 1040  600 637 643 666 +hsync +vsync (48.1 kHz e)    
> [    10.073] (II) armada(0): Modeline "800x600"x75.0   49.50  800 816 896 1056  600 601 604 625 +hsync +vsync (46.9 kHz e)    
> [    10.074] (II) armada(0): Modeline "800x600"x60.3   40.00  800 840 968 1056  600 601 605 628 +hsync +vsync (37.9 kHz e)    
> [    10.074] (II) armada(0): Modeline "800x600"x56.3   36.00  800 824 896 1024  600 601 603 625 +hsync +vsync (35.2 kHz e)
> [    10.074] (II) armada(0): Modeline "640x480"x75.0   31.50  640 656 720 840  480 481 484 500 -hsync -vsync (37.5 kHz e) 
> [    10.074] (II) armada(0): Modeline "640x480"x72.8   31.50  640 664 704 832  480 489 492 520 -hsync -vsync (37.9 kHz e) 
> [    10.074] (II) armada(0): Modeline "640x480"x66.7   30.24  640 704 768 864  480 483 486 525 -hsync -vsync (35.0 kHz e) 
> [    10.074] (II) armada(0): Modeline "640x480"x59.9   25.18  640 656 752 800  480 490 492 525 -hsync -vsync (31.5 kHz e) 
> [    10.074] (II) armada(0): Modeline "720x400"x70.1   28.32  720 738 846 900  400 412 414 449 -hsync +vsync (31.5 kHz e)
> [    10.074] (II) armada(0): Output DVI1 connected                                        
> [    10.074] (II) armada(0): Using exact sizes for initial modes                          
> [    10.074] (II) armada(0): Output DVI1 using initial mode 1280x1024 +0+0                
> [    10.074] (==) armada(0): Using gamma correction (1.0, 1.0, 1.0)                      
> [    10.074] (==) armada(0): DPI set to (96, 96)                                         
> [    10.075] (II) Loading sub module "fb"                                                
> [    10.075] (II) LoadModule: "fb"                                               
> [    10.075] (II) Loading /usr/lib/xorg/modules/libfb.so                                                                            
> [    10.076] (II) Module fb: vendor="X.Org Foundation"                                                                             
> [    10.076]    compiled for 1.19.6, module version = 1.0.0                                                                    
> [    10.076]    ABI class: X.Org ANSI C Emulation, version 0.4                                                                
> [    10.083] (==) Depth 24 pixmap format is 32 bpp                                                                            
> [    10.125] (==) armada(0): Backing store disabled                                                                           
> [    10.125] (==) armada(0): Silken mouse enabled                                                                             
> [    10.243] (--) armada(0): Vivante GC880 GPU revision 5124 (etnaviv) 2d PE2.0                                           
> [    10.254] (II) armada(0): [DRI2] Setup complete                                                                        
> [    10.254] (II) armada(0): [DRI2]   DRI driver: etnaviv                                                                 
> [    10.254] (II) armada(0): direct rendering: DRI2 enabled                                                               
> [    10.255] (II) armada(0): RandR 1.2 enabled, ignore the following RandR disabled message.                              
> [    10.306] (==) armada(0): DPMS enabled                                                                                
> [    10.309] (II) armada(0): etnaviv: Xv: using YUY2 format intermediate YUV target                                      
> [    10.585] (--) RandR disabled                                                                                         
> [    10.618] (II) armada(0): etnaviv: A8 target not supported                                                            
> [    10.624] (II) armada(0): Setting screen physical size to 338 x 270                                                   
> [    10.843] (II) LoadModule: "mouse"                                                                                               
> [    10.843] (WW) Warning, couldn't open module mouse                                                                               
> [    10.843] (II) UnloadModule: "mouse"                                                                                             
> [    10.843] (II) Unloading mouse                                                                                                   
> [    10.843] (EE) Failed to load module "mouse" (module does not exist, 0)                                                          
> [    10.843] (EE) No input driver matching `mouse'                                                                                  
> [    10.843] (II) Falling back to input driver `libinput'                                                                           
> [    10.844] (II) LoadModule: "libinput"                                                                                            
> [    10.844] (WW) Warning, couldn't open module libinput                                                                           
> [    10.844] (II) UnloadModule: "libinput"                                                                                     
> [    10.844] (II) Unloading libinput                                                                                          
> [    10.844] (EE) Failed to load module "libinput" (module does not exist, 0)                                                       
> [    10.844] (II) LoadModule: "kbd"                                                                                                
> [    10.845] (WW) Warning, couldn't open module kbd                                                                            
> [    10.845] (II) UnloadModule: "kbd"                                                                                         
> [    10.845] (II) Unloading kbd                                                                                               
> [    10.845] (EE) Failed to load module "kbd" (module does not exist, 0)                                                      
> [    10.845] (EE) No input driver matching `kbd'                                                                              
> [    10.845] (II) Falling back to input driver `libinput'                                                                 
> [    10.845] (II) LoadModule: "libinput"                                                                                  
> [    10.845] (WW) Warning, couldn't open module libinput                                                                  
> [    10.846] (II) UnloadModule: "libinput"                                                                                
> [    10.846] (II) Unloading libinput                                                                                      
> [    10.846] (EE) Failed to load module "libinput" (module does not exist, 0)
> ------------------------>8--------------------------
> 
> -Alexey

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* DRM_UDL and GPU under Xserver
  2018-04-09  8:31                   ` Daniel Vetter
@ 2018-04-09  8:55                     ` Alexey Brodkin
  -1 siblings, 0 replies; 30+ messages in thread
From: Alexey Brodkin @ 2018-04-09  8:55 UTC (permalink / raw)
  To: linux-snps-arc

Hi Daniel,

On Mon, 2018-04-09@10:31 +0200, Daniel Vetter wrote:
> On Thu, Apr 05, 2018@06:39:41PM +0000, Alexey Brodkin wrote:
> > Hi Daniel, all,

[snip]

> > Ok it was quite some time ago so I forgot about that completely.
> > I really made one trivial change in xf86-video-armada:
> > ------------------------>8--------------------------
> > --- a/src/armada_module.c
> > +++ b/src/armada_module.c
> > @@ -26,7 +26,7 @@
> >  #define ARMADA_NAME            "armada"
> >  #define ARMADA_DRIVER_NAME     "armada"
> >  
> > -#define DRM_MODULE_NAMES       "armada-drm", "imx-drm"
> > +#define DRM_MODULE_NAMES       "armada-drm", "imx-drm", "udl"
> >  #define DRM_DEFAULT_BUS_ID     NULL
> > ------------------------>8--------------------------
> > 
> > Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed.

Here I meant I explicitly disabled DRM_IMX in the kernel configuraion
so that it is not used in run-time.

> You need to keep imx-drm around. And then light up the udl display using
> prime. Afaiui it should all just work (but with maybe a few disconnected
> outputs from imx-drm around that you don't need, but that's not a
> problem).

And given my comment above I don't really see any difference between
DRM_IMX and DRM_UDL (except their HW implmentation which I guess should
not bother upper layers) so why do wee need to treat them differently?

Most probably I'm missing something but my thought was if we have
2 equally well supported KMS devices we may easily swap them and still
have resulting setup functional.

-Alexey

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: DRM_UDL and GPU under Xserver
@ 2018-04-09  8:55                     ` Alexey Brodkin
  0 siblings, 0 replies; 30+ messages in thread
From: Alexey Brodkin @ 2018-04-09  8:55 UTC (permalink / raw)
  To: daniel
  Cc: Jose.Abreu, airlied, daniel.vetter, dri-devel, seanpaul, airlied,
	alexander.deucher, daniel.vetter, linux-snps-arc, l.stach

Hi Daniel,

On Mon, 2018-04-09 at 10:31 +0200, Daniel Vetter wrote:
> On Thu, Apr 05, 2018 at 06:39:41PM +0000, Alexey Brodkin wrote:
> > Hi Daniel, all,

[snip]

> > Ok it was quite some time ago so I forgot about that completely.
> > I really made one trivial change in xf86-video-armada:
> > ------------------------>8--------------------------
> > --- a/src/armada_module.c
> > +++ b/src/armada_module.c
> > @@ -26,7 +26,7 @@
> >  #define ARMADA_NAME            "armada"
> >  #define ARMADA_DRIVER_NAME     "armada"
> >  
> > -#define DRM_MODULE_NAMES       "armada-drm", "imx-drm"
> > +#define DRM_MODULE_NAMES       "armada-drm", "imx-drm", "udl"
> >  #define DRM_DEFAULT_BUS_ID     NULL
> > ------------------------>8--------------------------
> > 
> > Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed.

Here I meant I explicitly disabled DRM_IMX in the kernel configuraion
so that it is not used in run-time.

> You need to keep imx-drm around. And then light up the udl display using
> prime. Afaiui it should all just work (but with maybe a few disconnected
> outputs from imx-drm around that you don't need, but that's not a
> problem).

And given my comment above I don't really see any difference between
DRM_IMX and DRM_UDL (except their HW implmentation which I guess should
not bother upper layers) so why do wee need to treat them differently?

Most probably I'm missing something but my thought was if we have
2 equally well supported KMS devices we may easily swap them and still
have resulting setup functional.

-Alexey

^ permalink raw reply	[flat|nested] 30+ messages in thread

* DRM_UDL and GPU under Xserver
  2018-04-09  8:55                     ` Alexey Brodkin
@ 2018-04-09  9:17                       ` Daniel Vetter
  -1 siblings, 0 replies; 30+ messages in thread
From: Daniel Vetter @ 2018-04-09  9:17 UTC (permalink / raw)
  To: linux-snps-arc

On Mon, Apr 09, 2018@08:55:36AM +0000, Alexey Brodkin wrote:
> Hi Daniel,
> 
> On Mon, 2018-04-09@10:31 +0200, Daniel Vetter wrote:
> > On Thu, Apr 05, 2018@06:39:41PM +0000, Alexey Brodkin wrote:
> > > Hi Daniel, all,
> 
> [snip]
> 
> > > Ok it was quite some time ago so I forgot about that completely.
> > > I really made one trivial change in xf86-video-armada:
> > > ------------------------>8--------------------------
> > > --- a/src/armada_module.c
> > > +++ b/src/armada_module.c
> > > @@ -26,7 +26,7 @@
> > >  #define ARMADA_NAME            "armada"
> > >  #define ARMADA_DRIVER_NAME     "armada"
> > >  
> > > -#define DRM_MODULE_NAMES       "armada-drm", "imx-drm"
> > > +#define DRM_MODULE_NAMES       "armada-drm", "imx-drm", "udl"
> > >  #define DRM_DEFAULT_BUS_ID     NULL
> > > ------------------------>8--------------------------
> > > 
> > > Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed.
> 
> Here I meant I explicitly disabled DRM_IMX in the kernel configuraion
> so that it is not used in run-time.
> 
> > You need to keep imx-drm around. And then light up the udl display using
> > prime. Afaiui it should all just work (but with maybe a few disconnected
> > outputs from imx-drm around that you don't need, but that's not a
> > problem).
> 
> And given my comment above I don't really see any difference between
> DRM_IMX and DRM_UDL (except their HW implmentation which I guess should
> not bother upper layers) so why do wee need to treat them differently?
> 
> Most probably I'm missing something but my thought was if we have
> 2 equally well supported KMS devices we may easily swap them and still
> have resulting setup functional.

armada is not a generic drm driver, but can only be used for armada-drm
and imx-drm. You can't just use it with any drm device, for that you need
a generic driver like -modesetting.

Just enable all the drivers you have for your hw, and it should work.
Hacking on drivers without knowing what they expect tends to not work so
well.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: DRM_UDL and GPU under Xserver
@ 2018-04-09  9:17                       ` Daniel Vetter
  0 siblings, 0 replies; 30+ messages in thread
From: Daniel Vetter @ 2018-04-09  9:17 UTC (permalink / raw)
  To: Alexey Brodkin
  Cc: Jose.Abreu, airlied, daniel.vetter, dri-devel, airlied,
	alexander.deucher, daniel.vetter, linux-snps-arc

On Mon, Apr 09, 2018 at 08:55:36AM +0000, Alexey Brodkin wrote:
> Hi Daniel,
> 
> On Mon, 2018-04-09 at 10:31 +0200, Daniel Vetter wrote:
> > On Thu, Apr 05, 2018 at 06:39:41PM +0000, Alexey Brodkin wrote:
> > > Hi Daniel, all,
> 
> [snip]
> 
> > > Ok it was quite some time ago so I forgot about that completely.
> > > I really made one trivial change in xf86-video-armada:
> > > ------------------------>8--------------------------
> > > --- a/src/armada_module.c
> > > +++ b/src/armada_module.c
> > > @@ -26,7 +26,7 @@
> > >  #define ARMADA_NAME            "armada"
> > >  #define ARMADA_DRIVER_NAME     "armada"
> > >  
> > > -#define DRM_MODULE_NAMES       "armada-drm", "imx-drm"
> > > +#define DRM_MODULE_NAMES       "armada-drm", "imx-drm", "udl"
> > >  #define DRM_DEFAULT_BUS_ID     NULL
> > > ------------------------>8--------------------------
> > > 
> > > Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed.
> 
> Here I meant I explicitly disabled DRM_IMX in the kernel configuraion
> so that it is not used in run-time.
> 
> > You need to keep imx-drm around. And then light up the udl display using
> > prime. Afaiui it should all just work (but with maybe a few disconnected
> > outputs from imx-drm around that you don't need, but that's not a
> > problem).
> 
> And given my comment above I don't really see any difference between
> DRM_IMX and DRM_UDL (except their HW implmentation which I guess should
> not bother upper layers) so why do wee need to treat them differently?
> 
> Most probably I'm missing something but my thought was if we have
> 2 equally well supported KMS devices we may easily swap them and still
> have resulting setup functional.

armada is not a generic drm driver, but can only be used for armada-drm
and imx-drm. You can't just use it with any drm device, for that you need
a generic driver like -modesetting.

Just enable all the drivers you have for your hw, and it should work.
Hacking on drivers without knowing what they expect tends to not work so
well.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* DRM_UDL and GPU under Xserver
  2018-04-09  9:17                       ` Daniel Vetter
@ 2018-04-09  9:45                         ` Alexey Brodkin
  -1 siblings, 0 replies; 30+ messages in thread
From: Alexey Brodkin @ 2018-04-09  9:45 UTC (permalink / raw)
  To: linux-snps-arc

Hi Daniel,

On Mon, 2018-04-09@11:17 +0200, Daniel Vetter wrote:
> On Mon, Apr 09, 2018@08:55:36AM +0000, Alexey Brodkin wrote:
> > Hi Daniel,
> > 
> > On Mon, 2018-04-09@10:31 +0200, Daniel Vetter wrote:
> > > On Thu, Apr 05, 2018@06:39:41PM +0000, Alexey Brodkin wrote:
> > > > Hi Daniel, all,
> > 
> > [snip]
> > 
> > > > Ok it was quite some time ago so I forgot about that completely.
> > > > I really made one trivial change in xf86-video-armada:
> > > > ------------------------>8--------------------------
> > > > --- a/src/armada_module.c
> > > > +++ b/src/armada_module.c
> > > > @@ -26,7 +26,7 @@
> > > >  #define ARMADA_NAME            "armada"
> > > >  #define ARMADA_DRIVER_NAME     "armada"
> > > >  
> > > > -#define DRM_MODULE_NAMES       "armada-drm", "imx-drm"
> > > > +#define DRM_MODULE_NAMES       "armada-drm", "imx-drm", "udl"
> > > >  #define DRM_DEFAULT_BUS_ID     NULL
> > > > ------------------------>8--------------------------
> > > > 
> > > > Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed.
> > 
> > Here I meant I explicitly disabled DRM_IMX in the kernel configuraion
> > so that it is not used in run-time.
> > 
> > > You need to keep imx-drm around. And then light up the udl display using
> > > prime. Afaiui it should all just work (but with maybe a few disconnected
> > > outputs from imx-drm around that you don't need, but that's not a
> > > problem).
> > 
> > And given my comment above I don't really see any difference between
> > DRM_IMX and DRM_UDL (except their HW implmentation which I guess should
> > not bother upper layers) so why do wee need to treat them differently?
> > 
> > Most probably I'm missing something but my thought was if we have
> > 2 equally well supported KMS devices we may easily swap them and still
> > have resulting setup functional.
> 
> armada is not a generic drm driver, but can only be used for armada-drm
> and imx-drm. You can't just use it with any drm device, for that you need
> a generic driver like -modesetting.

But "armada" is the name of xf86 "driver" only which then uses true DRM_ETNAVIV
kernel driver. That's why I'm a bit confused.

And from what I see DRM_ETNAVIV happily works with either DRM_xxx frame-buffer
device be it DRM_IMX or DRM_UDL.

-Alexey

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: DRM_UDL and GPU under Xserver
@ 2018-04-09  9:45                         ` Alexey Brodkin
  0 siblings, 0 replies; 30+ messages in thread
From: Alexey Brodkin @ 2018-04-09  9:45 UTC (permalink / raw)
  To: daniel
  Cc: Jose.Abreu, airlied, daniel.vetter, dri-devel, seanpaul, airlied,
	alexander.deucher, daniel.vetter, linux-snps-arc, l.stach

Hi Daniel,

On Mon, 2018-04-09 at 11:17 +0200, Daniel Vetter wrote:
> On Mon, Apr 09, 2018 at 08:55:36AM +0000, Alexey Brodkin wrote:
> > Hi Daniel,
> > 
> > On Mon, 2018-04-09 at 10:31 +0200, Daniel Vetter wrote:
> > > On Thu, Apr 05, 2018 at 06:39:41PM +0000, Alexey Brodkin wrote:
> > > > Hi Daniel, all,
> > 
> > [snip]
> > 
> > > > Ok it was quite some time ago so I forgot about that completely.
> > > > I really made one trivial change in xf86-video-armada:
> > > > ------------------------>8--------------------------
> > > > --- a/src/armada_module.c
> > > > +++ b/src/armada_module.c
> > > > @@ -26,7 +26,7 @@
> > > >  #define ARMADA_NAME            "armada"
> > > >  #define ARMADA_DRIVER_NAME     "armada"
> > > >  
> > > > -#define DRM_MODULE_NAMES       "armada-drm", "imx-drm"
> > > > +#define DRM_MODULE_NAMES       "armada-drm", "imx-drm", "udl"
> > > >  #define DRM_DEFAULT_BUS_ID     NULL
> > > > ------------------------>8--------------------------
> > > > 
> > > > Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed.
> > 
> > Here I meant I explicitly disabled DRM_IMX in the kernel configuraion
> > so that it is not used in run-time.
> > 
> > > You need to keep imx-drm around. And then light up the udl display using
> > > prime. Afaiui it should all just work (but with maybe a few disconnected
> > > outputs from imx-drm around that you don't need, but that's not a
> > > problem).
> > 
> > And given my comment above I don't really see any difference between
> > DRM_IMX and DRM_UDL (except their HW implmentation which I guess should
> > not bother upper layers) so why do wee need to treat them differently?
> > 
> > Most probably I'm missing something but my thought was if we have
> > 2 equally well supported KMS devices we may easily swap them and still
> > have resulting setup functional.
> 
> armada is not a generic drm driver, but can only be used for armada-drm
> and imx-drm. You can't just use it with any drm device, for that you need
> a generic driver like -modesetting.

But "armada" is the name of xf86 "driver" only which then uses true DRM_ETNAVIV
kernel driver. That's why I'm a bit confused.

And from what I see DRM_ETNAVIV happily works with either DRM_xxx frame-buffer
device be it DRM_IMX or DRM_UDL.

-Alexey

^ permalink raw reply	[flat|nested] 30+ messages in thread

* DRM_UDL and GPU under Xserver
  2018-04-09  9:45                         ` Alexey Brodkin
@ 2018-04-13 15:52                           ` Daniel Vetter
  -1 siblings, 0 replies; 30+ messages in thread
From: Daniel Vetter @ 2018-04-13 15:52 UTC (permalink / raw)
  To: linux-snps-arc

On Mon, Apr 09, 2018@09:45:51AM +0000, Alexey Brodkin wrote:
> Hi Daniel,
> 
> On Mon, 2018-04-09@11:17 +0200, Daniel Vetter wrote:
> > On Mon, Apr 09, 2018@08:55:36AM +0000, Alexey Brodkin wrote:
> > > Hi Daniel,
> > > 
> > > On Mon, 2018-04-09@10:31 +0200, Daniel Vetter wrote:
> > > > On Thu, Apr 05, 2018@06:39:41PM +0000, Alexey Brodkin wrote:
> > > > > Hi Daniel, all,
> > > 
> > > [snip]
> > > 
> > > > > Ok it was quite some time ago so I forgot about that completely.
> > > > > I really made one trivial change in xf86-video-armada:
> > > > > ------------------------>8--------------------------
> > > > > --- a/src/armada_module.c
> > > > > +++ b/src/armada_module.c
> > > > > @@ -26,7 +26,7 @@
> > > > >  #define ARMADA_NAME            "armada"
> > > > >  #define ARMADA_DRIVER_NAME     "armada"
> > > > >  
> > > > > -#define DRM_MODULE_NAMES       "armada-drm", "imx-drm"
> > > > > +#define DRM_MODULE_NAMES       "armada-drm", "imx-drm", "udl"
> > > > >  #define DRM_DEFAULT_BUS_ID     NULL
> > > > > ------------------------>8--------------------------
> > > > > 
> > > > > Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed.
> > > 
> > > Here I meant I explicitly disabled DRM_IMX in the kernel configuraion
> > > so that it is not used in run-time.
> > > 
> > > > You need to keep imx-drm around. And then light up the udl display using
> > > > prime. Afaiui it should all just work (but with maybe a few disconnected
> > > > outputs from imx-drm around that you don't need, but that's not a
> > > > problem).
> > > 
> > > And given my comment above I don't really see any difference between
> > > DRM_IMX and DRM_UDL (except their HW implmentation which I guess should
> > > not bother upper layers) so why do wee need to treat them differently?
> > > 
> > > Most probably I'm missing something but my thought was if we have
> > > 2 equally well supported KMS devices we may easily swap them and still
> > > have resulting setup functional.
> > 
> > armada is not a generic drm driver, but can only be used for armada-drm
> > and imx-drm. You can't just use it with any drm device, for that you need
> > a generic driver like -modesetting.
> 
> But "armada" is the name of xf86 "driver" only which then uses true DRM_ETNAVIV
> kernel driver. That's why I'm a bit confused.
> 
> And from what I see DRM_ETNAVIV happily works with either DRM_xxx frame-buffer
> device be it DRM_IMX or DRM_UDL.

Names are irrelevant and often just historical accidents. Armada was
origianlly only for armada, but then extended to support etnaviv 2d core,
then extended to IMX.

That the kernel properly share buffers between all of them is kinda
orthogonal to what armada-the-X11-driver supports.

Yes graphics is complicated, that's why touching and changing random stuff
you don't fully understand is not a good idea :-)
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: DRM_UDL and GPU under Xserver
@ 2018-04-13 15:52                           ` Daniel Vetter
  0 siblings, 0 replies; 30+ messages in thread
From: Daniel Vetter @ 2018-04-13 15:52 UTC (permalink / raw)
  To: Alexey Brodkin
  Cc: Jose.Abreu, airlied, daniel.vetter, dri-devel, airlied,
	alexander.deucher, daniel.vetter, linux-snps-arc

On Mon, Apr 09, 2018 at 09:45:51AM +0000, Alexey Brodkin wrote:
> Hi Daniel,
> 
> On Mon, 2018-04-09 at 11:17 +0200, Daniel Vetter wrote:
> > On Mon, Apr 09, 2018 at 08:55:36AM +0000, Alexey Brodkin wrote:
> > > Hi Daniel,
> > > 
> > > On Mon, 2018-04-09 at 10:31 +0200, Daniel Vetter wrote:
> > > > On Thu, Apr 05, 2018 at 06:39:41PM +0000, Alexey Brodkin wrote:
> > > > > Hi Daniel, all,
> > > 
> > > [snip]
> > > 
> > > > > Ok it was quite some time ago so I forgot about that completely.
> > > > > I really made one trivial change in xf86-video-armada:
> > > > > ------------------------>8--------------------------
> > > > > --- a/src/armada_module.c
> > > > > +++ b/src/armada_module.c
> > > > > @@ -26,7 +26,7 @@
> > > > >  #define ARMADA_NAME            "armada"
> > > > >  #define ARMADA_DRIVER_NAME     "armada"
> > > > >  
> > > > > -#define DRM_MODULE_NAMES       "armada-drm", "imx-drm"
> > > > > +#define DRM_MODULE_NAMES       "armada-drm", "imx-drm", "udl"
> > > > >  #define DRM_DEFAULT_BUS_ID     NULL
> > > > > ------------------------>8--------------------------
> > > > > 
> > > > > Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed.
> > > 
> > > Here I meant I explicitly disabled DRM_IMX in the kernel configuraion
> > > so that it is not used in run-time.
> > > 
> > > > You need to keep imx-drm around. And then light up the udl display using
> > > > prime. Afaiui it should all just work (but with maybe a few disconnected
> > > > outputs from imx-drm around that you don't need, but that's not a
> > > > problem).
> > > 
> > > And given my comment above I don't really see any difference between
> > > DRM_IMX and DRM_UDL (except their HW implmentation which I guess should
> > > not bother upper layers) so why do wee need to treat them differently?
> > > 
> > > Most probably I'm missing something but my thought was if we have
> > > 2 equally well supported KMS devices we may easily swap them and still
> > > have resulting setup functional.
> > 
> > armada is not a generic drm driver, but can only be used for armada-drm
> > and imx-drm. You can't just use it with any drm device, for that you need
> > a generic driver like -modesetting.
> 
> But "armada" is the name of xf86 "driver" only which then uses true DRM_ETNAVIV
> kernel driver. That's why I'm a bit confused.
> 
> And from what I see DRM_ETNAVIV happily works with either DRM_xxx frame-buffer
> device be it DRM_IMX or DRM_UDL.

Names are irrelevant and often just historical accidents. Armada was
origianlly only for armada, but then extended to support etnaviv 2d core,
then extended to IMX.

That the kernel properly share buffers between all of them is kinda
orthogonal to what armada-the-X11-driver supports.

Yes graphics is complicated, that's why touching and changing random stuff
you don't fully understand is not a good idea :-)
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2018-04-13 15:52 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-04 20:06 DRM_UDL and GPU under Xserver Alexey Brodkin
2018-04-04 20:06 ` Alexey Brodkin
2018-04-05  6:18 ` Daniel Vetter
2018-04-05  6:18   ` Daniel Vetter
2018-04-05  7:16   ` Alexey Brodkin
2018-04-05  7:16     ` Alexey Brodkin
2018-04-05  9:32     ` Daniel Vetter
2018-04-05  9:32       ` Daniel Vetter
2018-04-05 10:10       ` Jose Abreu
2018-04-05 10:10         ` Jose Abreu
2018-04-05 10:29       ` Lucas Stach
2018-04-05 10:29         ` Lucas Stach
2018-04-05 10:59         ` Daniel Vetter
2018-04-05 10:59           ` Daniel Vetter
2018-04-05 11:10           ` Alexey Brodkin
2018-04-05 11:10             ` Alexey Brodkin
2018-04-05 13:44             ` Daniel Vetter
2018-04-05 13:44               ` Daniel Vetter
2018-04-05 18:39               ` Alexey Brodkin
2018-04-05 18:39                 ` Alexey Brodkin
2018-04-09  8:31                 ` Daniel Vetter
2018-04-09  8:31                   ` Daniel Vetter
2018-04-09  8:55                   ` Alexey Brodkin
2018-04-09  8:55                     ` Alexey Brodkin
2018-04-09  9:17                     ` Daniel Vetter
2018-04-09  9:17                       ` Daniel Vetter
2018-04-09  9:45                       ` Alexey Brodkin
2018-04-09  9:45                         ` Alexey Brodkin
2018-04-13 15:52                         ` Daniel Vetter
2018-04-13 15:52                           ` Daniel Vetter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.