Re: fbcon non-desktop display use

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Mar 15, 2018 at 9:03 PM, Charles Lohr <lohr85@xxxxxxxxx> wrote:
> To try to address both concerns, it feels easiest to do not in-line.
>
> 1) Just for background: The H3, and many other ARM systems use the
> framebuffer for all video access, 3D accelerated as well as X11. If we
> want to permit HMD (headmount display) or other non-desktop displays
> on these devices are going to be used at all, it seems DRM must be set
> up for them.  I don't think of this as a "feature".

There's no open source 3D stack using fbdev. And I really don't care
much about the others from an upstream pov.

> 2) Although I "wish" there was a way to permit non-desktop use with
> multiple displays, I am having difficulty finding a specific need to
> be able to turn it on/off.  All applications I can imagine with the
> HMD currently would involve the HMD being the only connected device.
> I am still "submitting" the patch with the parameter, however, if you
> folks decide not to accept it, I intend to re-submit with just the &&
> strict fix (which I just tested and it's good!) -- unless you (Keith)
> are willing to put forward the && strict as a patch.

I guess we can do that, but I'll defer to Keith/Dave on this since I'm
firmly meh for trying to get HMDs to show up on fbcon. Doesn't make
sense to me.
-Daniel

> 3) I am trying "plain text mode" for my patch, so hopefully it doesn't
> truncate the lines.  Also, I misunderstood "Signed-off-by" Thanks!
>
> Signed-off-by: Charles Lohr <lohr85@xxxxxxxxx>
>
> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
> index 035784ddd..e14624d0f 100644
> --- a/drivers/gpu/drm/drm_fb_helper.c
> +++ b/drivers/gpu/drm/drm_fb_helper.c
> @@ -55,6 +55,11 @@ MODULE_PARM_DESC(drm_fbdev_overalloc,
>                  "Overallocation of the fbdev buffer (%) [default="
>                  __MODULE_STRING(CONFIG_DRM_FBDEV_OVERALLOC) "]");
>
> +static bool drm_fbdev_permit_non_desktop;
> +module_param(drm_fbdev_permit_non_desktop, bool, 0644);
> +MODULE_PARM_DESC(drm_fbdev_permit_non_desktop,
> +               "Allow the framebuffer to use non-desktop displays
> [default=off]");
> +
>  static LIST_HEAD(kernel_fb_helper_list);
>  static DEFINE_MUTEX(kernel_fb_helper_lock);
>
> @@ -2109,7 +2114,7 @@ static bool drm_connector_enabled(struct
> drm_connector *connector, bool strict)
>  {
>         bool enable;
>
> -       if (connector->display_info.non_desktop)
> +       if (connector->display_info.non_desktop &&
> !drm_fbdev_permit_non_desktop && strict)
>                 return false;
>
>         if (strict)
>
> On Thu, Mar 15, 2018 at 2:30 PM, Keith Packard <keithp@xxxxxxxxxx> wrote:
>> Charles Lohr <lohr85@xxxxxxxxx> writes:
>>
>>> Even if the vive is the only device connected, it will still not permit it
>>> to be operated.  See https://github.com/linux-sunxi/linux-sunxi/issues/291
>>> for dri with a lot of debugging turned on.
>>
>> Oh, it's not supposed to do that. I had intended to write the code so
>> that if the only device available was a non-desktop device that it would
>> go ahead and use it. The X server patches did that, but the kernel ones
>> did not. It looks like that would be an easy patch -- just skip the
>> non_desktop check in the !strict case for drm_connector_enabled.
>>
>> However, your patch is a good addition as it will allow you to also
>> enable the HMD when other monitors are connected.
>>
>>> I can understand that most users would probably prefer that the vive isn't
>>> automatically used if no other displays are available, however, the current
>>> behavior prevents use of the vive on all devices that use fbdev for their
>>> primary output.
>>
>> That was definitely not my intention, and thanks for discovering this!
>>
>>> I've never sent an email to the kernel devel list, so I'm still a little
>>> nervous.  Especially because this is against a different branch, and I'm
>>> starting to think that I should be messaging there, but this is something
>>> that really needs to go upstream.
>>
>> We'll get it sorted out; I'm not sure what Dave's preference is these
>> days anyways.
>>
>> Aside from some minor formatting issues, this patch looks good to me.
>>
>>> Signed-off-by:
>>
>> You'll need to add your name and email address here.
>>
>>> diff --git a/drivers/gpu/drm/drm_fb_helper.c
>>> b/drivers/gpu/drm/drm_fb_helper.c
>>> index 035784ddd..8bfaf79ff 100644
>>> --- a/drivers/gpu/drm/drm_fb_helper.c
>>> +++ b/drivers/gpu/drm/drm_fb_helper.c
>>> @@ -55,6 +55,11 @@ MODULE_PARM_DESC(drm_fbdev_overalloc,
>>>                  "Overallocation of the fbdev buffer (%) [default="
>>>                  __MODULE_STRING(CONFIG_DRM_FBDEV_OVERALLOC) "]");
>>>
>>> +static bool drm_fbdev_permit_non_desktop;
>>> +module_param(drm_fbdev_permit_non_desktop, bool, 0644);
>>> +MODULE_PARM_DESC(drm_fbdev_permit_non_desktop,
>>> +               "Allow the framebuffer to use non-desktop displays
>>> [default=off]");
>>> +
>>
>> Your email client appears to be wrapping long lines, which breaks the patch.
>>
>>
>>>  static LIST_HEAD(kernel_fb_helper_list);
>>>  static DEFINE_MUTEX(kernel_fb_helper_lock);
>>>
>>> @@ -2109,7 +2114,7 @@ static bool drm_connector_enabled(struct
>>> drm_connector *connector, bool strict)
>>>  {
>>>         bool enable;
>>>
>>> -       if (connector->display_info.non_desktop)
>>> +       if (connector->display_info.non_desktop &&
>>> !drm_fbdev_permit_non_desktop)
>>
>> If you added '&& strict' here, it will use the HMD if there aren't any
>> desktop monitors connected.
>>
>> --
>> -keith



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




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux