21.12.2016 10:05, Daniel Vetter wrote:
> On Tue, Dec 20, 2016 at 11:38:52AM +0100, Michael Thayer wrote:
>> The suggested X and Y connector properties are intended as a way for drivers
>> for virtual machine GPUs to provide information about the layout of the
>> host system windows (or whatever) corresponding to given guest connectors.
>> The intention is for the guest system to lay out screens in the virtual
>> desktop in a way which reflects the host layout.  Sometimes though the guest
>> system chooses not to follow those hints, usually due to user requests.  In
>> this case it is useful to be able to pass information back about the actual
>> layout chosen.
>>
>> The immediate use case for this is host-to-guest pointer input mapping.
>> Qemu, VirtualBox and VMWare currently handle this by providing an emulated
>> graphics tablet device to the guest.  libinput defaults, as did X.Org before
>> it used libinput, to mapping the position information reported by the device
>> to the smallest rectangle enclosing the screen layout.  Knowing that layout
>> lets the hypervisor send the right position information through the input
>> device.
>>
>> Signed-off-by: Michael Thayer <michael.thayer at oracle.com>
>> ---
>> Follow-up to thread "Passing multi-screen layout to KMS driver".  In that
>> thread, Gerd suggested an alternative way of solving the use case, namely
>> emulating one input device per virtual screen, touchscreen-style.  My reasons
>> for prefering this approach is that it is relatively uninvasive, and closer
>> to the way things are done now without (in my opinion) being ugly; and that
>> automatic touchscreen input to screen mapping is still not a solved problem.
>> I think that both are valid though.
>>
>> Both approaches require changes to the hypervisor and virtual hardware, and
>> to user-space consumers which would use the interface.  I have checked the
>> mutter source and believe that the change required to support the interface
>> as implemented here would be minimal and intend to submit a patch if this
>> change is accepted.  I think that the virtual hardware changes are likely to
>> be less invasive with this approach than with the other.  This change will
>> though also require small drm driver changes once the virtual hardware has
>> been adjusted; currently to the qxl driver and to the out-of-tree vboxvideo
>> driver.  It would certainly be nice to have in virtio-gpu.
>
> Makes sense I think, but for merging we need:
> - some driver to implement

This is where it starts getting tricky.  vboxvideo is out of tree.  In 
theory I could look at getting it merged, but that needs time I am 
rather short of (I am the only person maintaining that driver and it is 
just one of my responsibilities; and there are some bits there that are 
probably too ugly to merge as is).  I don't think I am really the person 
to be doing this for qxl/virtio-gpu as that required adding the support 
to qemu too.  I think that they really should have it, but I would 
rather not be the one adding it.  So would our out-of-tree driver be 
good enough?

> - some userspace to take advantage of it

As I wrote, mutter would be the first candidate.

> - and some proper kernel-doc, we're deprecating that horrible property
>   table that no one human can maintain. Latest upstream has lots of
>   examples of what I have in mind.

I can take a look at that.

> Also if we make this mutable would be good to switch the entire
> scaffolding over to the atomic way of doing things, i.e. put the property
> value as a decoded thing into drm_connector_state and wire up all the
> handling. Means you need an atomic driver as demonstration vehicle, but
> I'd say you want that anyway ;-)

Currently vboxvideo is keeping close to ast as I have time to follow it. 
  Switching to atomic as long as ast is not switched likely means more 
new bugs introduced than I would like to have time to fix, plus 
maintaining two versions of vboxvideo, one for pre-atomic kernels and 
one for post.  At the moment we support 3.11 to 4.10 with a manageable 
minimum of conditional compilation.  So does "would be good" mean what 
it says, or is it meant slightly more strongly?

Thanks and regards,

Michael

> -Daniel
>
>>
>> Regards
>> Michael
>>
>>  Documentation/gpu/kms-properties.csv | 4 ++--
>>  drivers/gpu/drm/drm_connector.c      | 4 ++--
>>  2 files changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/Documentation/gpu/kms-properties.csv 
>> b/Documentation/gpu/kms-properties.csv
>> index 981873a..825238e 100644
>> --- a/Documentation/gpu/kms-properties.csv
>> +++ b/Documentation/gpu/kms-properties.csv
>> @@ -20,8 +20,8 @@ Owner Module/Drivers,Group,Property Name,Type,Property 
>> Values,Object attached,De
>>  ,,“overscan”,RANGE,"Min=0, Max=100",Connector,TBD
>>  ,,“saturation”,RANGE,"Min=0, Max=100",Connector,TBD
>>  ,,“hue”,RANGE,"Min=0, Max=100",Connector,TBD
>> -,Virtual GPU,“suggested X”,RANGE,"Min=0, 
>> Max=0xffffffff",Connector,property to suggest an X offset for a connector
>> -,,“suggested Y”,RANGE,"Min=0, Max=0xffffffff",Connector,property to 
>> suggest an Y offset for a connector
>> +,Virtual GPU,“suggested X”,RANGE,"Min=0, 
>> Max=0xffffffff",Connector,"property to suggest an X offset for a connector 
>> to help match positions of host windows and guest screens; can be set by the 
>> driver for the host or user-space for the guest"
>> +,,“suggested Y”,RANGE,"Min=0, Max=0xffffffff",Connector,"property to 
>> suggest an Y offset for a connector to help match positions of host windows 
>> and guest screens; can be set by the driver for the host or user--space for 
>> the guest"
>>  ,Optional,"""aspect ratio""",ENUM,"{ ""None"", ""4:3"", ""16:9"" 
>> }",Connector,TDB
>>  i915,Generic,"""Broadcast RGB""",ENUM,"{ ""Automatic"", ""Full"", ""Limited 
>> 16:235"" }",Connector,"When this property is set to Limited 16:235 and CTM 
>> is set, the hardware will be programmed with the result of the 
>> multiplication of CTM by the limited range matrix to ensure the pixels 
>> normaly in the range 0..1.0 are remapped to the range 16/255..235/255."
>>  ,,“audio”,ENUM,"{ ""force-dvi"", ""off"", ""auto"", ""on"" 
>> }",Connector,TBD
>> diff --git a/drivers/gpu/drm/drm_connector.c 
>> b/drivers/gpu/drm/drm_connector.c
>> index 5a45262..ebb3cee 100644
>> --- a/drivers/gpu/drm/drm_connector.c
>> +++ b/drivers/gpu/drm/drm_connector.c
>> @@ -876,10 +876,10 @@ int drm_mode_create_suggested_offset_properties(struct 
>> drm_device *dev)
>>              return 0;
>>
>>      dev->mode_config.suggested_x_property =
>> -            drm_property_create_range(dev, DRM_MODE_PROP_IMMUTABLE, 
>> "suggested X", 0, 0xffffffff);
>> +            drm_property_create_range(dev, 0, "suggested X", 0, 0xffffffff);
>>
>>      dev->mode_config.suggested_y_property =
>> -            drm_property_create_range(dev, DRM_MODE_PROP_IMMUTABLE, 
>> "suggested Y", 0, 0xffffffff);
>> +            drm_property_create_range(dev, 0, "suggested Y", 0, 0xffffffff);
>>
>>      if (dev->mode_config.suggested_x_property == NULL ||
>>          dev->mode_config.suggested_y_property == NULL)
>> --
>> 2.9.3
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>

-- 
Michael Thayer | VirtualBox engineer
ORACLE Deutschland B.V. & Co. KG | Werkstr. 24 | D-71384 Weinstadt

ORACLE Deutschland B.V. & Co. KG
Hauptverwaltung: Riesstraße 25, D-80992 München
Registergericht: Amtsgericht München, HRA 95603

Komplementärin: ORACLE Deutschland Verwaltung B.V.
Hertogswetering 163/167, 3543 AS Utrecht, Niederlande Handelsregister 
der Handelskammer Midden-Nederland, Nr. 30143697
Geschäftsführer: Alexander van der Ven, Jan Schultheiss, Val Maher

Reply via email to