aboutsummaryrefslogtreecommitdiff
path: root/SOURCES/valve-gamescope-framerate-control-fixups.patch
diff options
context:
space:
mode:
Diffstat (limited to 'SOURCES/valve-gamescope-framerate-control-fixups.patch')
-rw-r--r--SOURCES/valve-gamescope-framerate-control-fixups.patch177
1 files changed, 177 insertions, 0 deletions
diff --git a/SOURCES/valve-gamescope-framerate-control-fixups.patch b/SOURCES/valve-gamescope-framerate-control-fixups.patch
index 40053c3..05a789e 100644
--- a/SOURCES/valve-gamescope-framerate-control-fixups.patch
+++ b/SOURCES/valve-gamescope-framerate-control-fixups.patch
@@ -32,6 +32,183 @@ index 7dab01803..81672738a 100644
--
2.43.0
+From 9d923e79d060d8c7218c8229c65c964b7f04e864 Mon Sep 17 00:00:00 2001
+From: Simon Ser <contact@emersion.fr>
+Date: Tue, 30 Aug 2022 17:29:26 +0000
+Subject: [PATCH] drm: introduce
+ drm_mode_config.atomic_async_page_flip_not_supported
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This new field indicates whether the driver has the necessary logic
+to support async page-flips via the atomic uAPI. This is leveraged by
+the next commit to allow user-space to use this functionality.
+
+All atomic drivers setting drm_mode_config.async_page_flip are updated
+to also set drm_mode_config.atomic_async_page_flip_not_supported. We
+will gradually check and update these drivers to properly handle
+drm_crtc_state.async_flip in their atomic logic.
+
+The goal of this negative flag is the same as
+fb_modifiers_not_supported: we want to eventually get rid of all
+drivers missing atomic support for async flips. New drivers should not
+set this flag, instead they should support atomic async flips (if
+they support async flips at all). IOW, we don't want more drivers
+with async flip support for legacy but not atomic.
+
+v2: only set the flag on atomic drivers (remove it on amdgpu DCE and
+on radeon)
+
+Signed-off-by: Simon Ser <contact@emersion.fr>
+Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
+Cc: Joshua Ashton <joshua@froggi.es>
+Cc: Melissa Wen <mwen@igalia.com>
+Cc: Alex Deucher <alexander.deucher@amd.com>
+Cc: Harry Wentland <hwentlan@amd.com>
+Cc: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
+Cc: André Almeida <andrealmeid@igalia.com>
+Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
+Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
+Link: https://lore.kernel.org/r/20220830172851.269402-4-contact@emersion.fr
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 +
+ drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 1 +
+ drivers/gpu/drm/i915/display/intel_display_driver.c | 1 +
+ drivers/gpu/drm/nouveau/nouveau_display.c | 1 +
+ drivers/gpu/drm/vc4/vc4_kms.c | 1 +
+ include/drm/drm_mode_config.h | 11 +++++++++++
+ 6 files changed, 16 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+index 81672738a..05c404fcc 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -3998,6 +3998,7 @@ static int amdgpu_dm_mode_config_init(struct amdgpu_device *adev)
+ adev_to_drm(adev)->mode_config.prefer_shadow = 1;
+ /* indicates support for immediate flip */
+ adev_to_drm(adev)->mode_config.async_page_flip = true;
++ adev_to_drm(adev)->mode_config.atomic_async_page_flip_not_supported = true;
+
+ state = kzalloc(sizeof(*state), GFP_KERNEL);
+ if (!state)
+diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
+index fa0f9a93d..301b222c4 100644
+--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
++++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
+@@ -639,6 +639,7 @@ static int atmel_hlcdc_dc_modeset_init(struct drm_device *dev)
+ dev->mode_config.max_height = dc->desc->max_height;
+ dev->mode_config.funcs = &mode_config_funcs;
+ dev->mode_config.async_page_flip = true;
++ dev->mode_config.atomic_async_page_flip_not_supported = true;
+
+ return 0;
+ }
+diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
+index 8f144d4d3..f290c5c2e 100644
+--- a/drivers/gpu/drm/i915/display/intel_display_driver.c
++++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
+@@ -128,6 +128,7 @@
+ mode_config->helper_private = &intel_mode_config_funcs;
+
+ mode_config->async_page_flip = HAS_ASYNC_FLIPS(i915) && !i915->params.disable_async_page_flip;
++ mode_config->atomic_async_page_flip_not_supported = true;
+
+ /*
+ * Maximum framebuffer dimensions, chosen to match
+diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
+index 99977e5fe..540895dab 100644
+--- a/drivers/gpu/drm/nouveau/nouveau_display.c
++++ b/drivers/gpu/drm/nouveau/nouveau_display.c
+@@ -720,6 +720,7 @@ nouveau_display_create(struct drm_device *dev)
+ dev->mode_config.async_page_flip = false;
+ else
+ dev->mode_config.async_page_flip = true;
++ dev->mode_config.atomic_async_page_flip_not_supported = true;
+
+ drm_kms_helper_poll_init(dev);
+ drm_kms_helper_poll_disable(dev);
+diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c
+index 5495f2a94..5b6b311e7 100644
+--- a/drivers/gpu/drm/vc4/vc4_kms.c
++++ b/drivers/gpu/drm/vc4/vc4_kms.c
+@@ -1068,6 +1068,7 @@ int vc4_kms_load(struct drm_device *dev)
+ dev->mode_config.helper_private = &vc4_mode_config_helpers;
+ dev->mode_config.preferred_depth = 24;
+ dev->mode_config.async_page_flip = true;
++ dev->mode_config.atomic_async_page_flip_not_supported = true;
+ dev->mode_config.normalize_zpos = true;
+
+ ret = vc4_ctm_obj_init(vc4);
+diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
+index 973119a91..47b005671 100644
+--- a/include/drm/drm_mode_config.h
++++ b/include/drm/drm_mode_config.h
+@@ -918,6 +918,17 @@ struct drm_mode_config {
+ */
+ bool async_page_flip;
+
++ /**
++ * @atomic_async_page_flip_not_supported:
++ *
++ * If true, the driver does not support async page-flips with the
++ * atomic uAPI. This is only used by old drivers which haven't yet
++ * accomodated for &drm_crtc_state.async_flip in their atomic logic,
++ * even if they have &drm_mode_config.async_page_flip set to true.
++ * New drivers shall not set this flag.
++ */
++ bool atomic_async_page_flip_not_supported;
++
+ /**
+ * @fb_modifiers_not_supported:
+ *
+--
+2.43.0
+
+From 24ac301d6208f1135644fe32514994799e79a6a0 Mon Sep 17 00:00:00 2001
+From: Simon Ser <contact@emersion.fr>
+Date: Tue, 30 Aug 2022 17:29:52 +0000
+Subject: [PATCH] amd/display: indicate support for atomic async page-flips on
+ DC
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+amdgpu_dm_commit_planes() already sets the flip_immediate flag for
+async page-flips. This flag is used to set the UNP_FLIP_CONTROL
+register. Thus, no additional change is required to handle async
+page-flips with the atomic uAPI.
+
+v2: make it clear this commit is about DC and not only DCN
+
+Signed-off-by: Simon Ser <contact@emersion.fr>
+Cc: Joshua Ashton <joshua@froggi.es>
+Cc: Melissa Wen <mwen@igalia.com>
+Cc: Alex Deucher <alexander.deucher@amd.com>
+Cc: Harry Wentland <hwentlan@amd.com>
+Cc: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
+Cc: André Almeida <andrealmeid@igalia.com>
+Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
+Link: https://lore.kernel.org/r/20220830172851.269402-7-contact@emersion.fr
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+index 27a1e3a0046c9..a003e796aa183 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -3980,7 +3980,6 @@ static int amdgpu_dm_mode_config_init(struct amdgpu_device *adev)
+ adev_to_drm(adev)->mode_config.prefer_shadow = 1;
+ /* indicates support for immediate flip */
+ adev_to_drm(adev)->mode_config.async_page_flip = true;
+- adev_to_drm(adev)->mode_config.atomic_async_page_flip_not_supported = true;
+
+ state = kzalloc(sizeof(*state), GFP_KERNEL);
+ if (!state)
+--
+GitLab
+
From 32993fef83542e3bea66ed3ceec4944b3ae9d4f1 Mon Sep 17 00:00:00 2001
From: Joshua Ashton <joshua@froggi.es>
Date: Mon, 14 Nov 2022 19:52:30 +0000