fbcon non-desktop display use
Daniel Vetter
daniel at ffwll.ch
Thu Mar 15 20:11:10 UTC 2018
On Thu, Mar 15, 2018 at 9:03 PM, Charles Lohr <lohr85 at gmail.com> 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 at gmail.com>
>
> 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 at keithp.com> wrote:
>> Charles Lohr <lohr85 at gmail.com> 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
More information about the dri-devel
mailing list