On 2018-10-03 04:25 AM, Mike Lothian wrote:
> Hi
> 
> I'm curious to know whether this will/could work over PRIME
> 

I don't see why this shouldn't work over PRIME as long as the presenting GPU 
supports the new variable refresh rate API, but I know very little about prime, 
so maybe someone else can chime in and give a better opinion.

Harry

> If the discrete card is rendering slower than the display's frequency could 
> the frequency be dropped on integrated display? I think there are laptops 
> that have freesync now
> 
> Cheers
> 
> Mike
> 
> On Mon, 1 Oct 2018 at 08:15 Daniel Vetter <dan...@ffwll.ch 
> <mailto:dan...@ffwll.ch>> wrote:
> 
>     On Mon, Sep 24, 2018 at 02:15:34PM -0400, Nicholas Kazlauskas wrote:
>     > These patches are part of a proposed new interface for supporting 
> variable refresh rate via DRM properties.
>     >
>     > === Changes from v1 ===
>     >
>     > For drm:
>     >
>     > * The variable_refresh_capable property is now flagged as 
> DRM_MODE_PROP_IMMUTABLE
>     >
>     > For drm/gpu/amd/display:
>     >
>     > * Patches no longer pull in IOCTL/FreeSync refactoring code
>     > * FreeSync enable/disable behavior has been modified to reflect changes 
> in userspace behavior from xf86-video-amdgpu and mesa
>     >
>     > === Adaptive sync and variable refresh rate ===
>     >
>     > Adaptive sync is part of the DisplayPort spec and allows for graphics 
> adapters to drive displays with varying frame timings.
>     >
>     > Variable refresh rate (VRR) is essentially the same, but defined for 
> HDMI.
>     >
>     > === Use cases for variable refresh rate ===
>     >
>     > Variable frame (flip) timings don't align well with fixed refresh rate 
> displays. This results in stuttering, tearing and/or input lag. By adjusting 
> the display refresh rate dynamically these issues can be reduced or 
> eliminated.
>     >
>     > However, not all content is suitable for dynamic refresh adaptation. 
> Content that is flipped infrequently or at random intervals tends to fair 
> poorly. Multiple clients trying to flip under the same screen can similarly 
> interfere with prediction.
>     >
>     > Userland needs a way to let the driver know when the content on the 
> screen is suitable for variable refresh rate and if the user wishes to have 
> the feature enabled.
>     >
>     > === DRM API to support variable refresh rates ===
>     >
>     > This patch introduces a new API via atomic properties on the DRM 
> connector and CRTC.
>     >
>     > The connector has two new optional properties:
>     >
>     > * bool variable_refresh_capable - set by the driver if the hardware is 
> capable of supporting variable refresh tech
>     >
>     > * bool variable_refresh_enabled - set by the user to enable variable 
> refresh adjustment over the connector
>     >
>     > The CRTC has one additional default property:
>     >
>     > * bool variable_refresh - a content hint to the driver specifying that 
> the CRTC contents are suitable for variable refresh adjustment
>     >
>     > == Overview for DRM driver developers ===
>     >
>     > Driver developers can attach the optional connector properties via 
> drm_connector_attach_variable_refresh_properties on connectors that support 
> variable refresh (typically DP or HDMI).
>     >
>     > The variable_refresh_capable property should be managed as the output 
> on the connector changes. The property is read only from userspace.
>     >
>     > The variable_refresh_enabled property is intended to be a property 
> controlled by userland as a global on/off switch for variable refresh 
> technology. It should be checked before enabling variable refresh rate.
>     >
>     > === Overview for Userland developers ==
>     >
>     > The variable_refresh property on the CRTC should be set to true when 
> the CRTCs are suitable for variable refresh rate. In practice this is 
> probably an application like a game - a single window that covers the whole 
> CRTC surface and is the only client issuing flips.
>     >
>     > To demonstrate the suitability of the API for variable refresh and 
> dynamic adaptation there are additional patches using this API that implement 
> adaptive variable refresh across kernel and userland projects:
>     >
>     > * DRM (dri-devel)
>     > * amdgpu DRM kernel driver (amd-gfx)
>     > * xf86-video-amdgpu (amd-gfx)
>     > * mesa (mesa-dev)
>     >
>     > These patches enable adaptive variable refresh on X for AMD hardware 
> provided that the user sets the variable_refresh_enabled property to true on 
> supported connectors (ie. using xrandr --set-prop).
>     >
>     > The patches have been tested as working on upstream userland with the 
> GNOME desktop environment under a single monitor setup. They also work on KDE 
> in single monitor setup if the compositor is disabled.
>     >
>     > The patches require that the application window can issue screen flips 
> via the Present extension to xf86-video-amdgpu. Due to Present extension 
> limitations some desktop environments and multi-monitor setups are currently 
> not compatible.
>     >
>     > Full implementation details for these changes can be reviewed in their 
> respective mailing lists.
>     >
>     > === Previous discussions ===
>     >
>     > These patches are based upon feedback from patches and feedback from 
> two previous threads on the subject which are linked below for reference:
>     >
>     > https://lists.freedesktop.org/archives/amd-gfx/2018-April/021047.html
>     > 
> https://lists.freedesktop.org/archives/dri-devel/2017-October/155207.html
>     > 
> https://lists.freedesktop.org/archives/dri-devel/2018-September/189404.html
>     >
>     > Nicholas Kazlauskas
>     >
>     > Nicholas Kazlauskas (3):
>     >   drm: Add variable refresh rate properties to connector
>     >   drm: Add variable refresh property to DRM CRTC
>     >   drm/amd/display: Set FreeSync state using DRM VRR properties
> 
>     Please include Manasi manasi.d.nav...@intel.com 
> <mailto:manasi.d.nav...@intel.com> when resending, she's
>     working on this from our side.
> 
>     Also some overview kernel-docs that document the uapi aspect of how the
>     prorties are driven should be included. Probably best if you add a new
>     "Variable Refresh Rate" section under
> 
>     https://dri.freedesktop.org/docs/drm/gpu/drm-kms.html#kms-properties
> 
>     with links to functions drivers should call to set up and everything. Best
>     practice is to stuff all that into a DOC: comment.
> 
>     An igt testcase would be neat too.
> 
>     Cheers, Daniel
> 
>     >
>     >  .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 232 +++++++++---------
>     >  .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h |   6 +-
>     >  drivers/gpu/drm/drm_atomic_helper.c           |   1 +
>     >  drivers/gpu/drm/drm_atomic_uapi.c             |  12 +
>     >  drivers/gpu/drm/drm_connector.c               |  35 +++
>     >  drivers/gpu/drm/drm_crtc.c                    |   2 +
>     >  drivers/gpu/drm/drm_mode_config.c             |   6 +
>     >  include/drm/drm_connector.h                   |  27 ++
>     >  include/drm/drm_crtc.h                        |  13 +
>     >  include/drm/drm_mode_config.h                 |   8 +
>     >  10 files changed, 225 insertions(+), 117 deletions(-)
>     >
>     > --
>     > 2.19.0
>     >
> 
>     -- 
>     Daniel Vetter
>     Software Engineer, Intel Corporation
>     http://blog.ffwll.ch
>     _______________________________________________
>     dri-devel mailing list
>     dri-devel@lists.freedesktop.org <mailto:dri-devel@lists.freedesktop.org>
>     https://lists.freedesktop.org/mailman/listinfo/dri-devel
> 
> 
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
> 
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to