mirror of
https://github.com/ublue-os/bazzite.git
synced 2025-02-20 15:40:35 +00:00
chore: Update gamescope patch, use Valve's defaults in Mesa.
This commit is contained in:
parent
6d608d9c18
commit
570fcb6c33
@ -1,29 +1,8 @@
|
||||
From c142933f0bc2d68d74c1f2f7d6902b8dc48699c7 Mon Sep 17 00:00:00 2001
|
||||
From: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
|
||||
Date: Mon, 21 Feb 2022 18:43:54 +0100
|
||||
Subject: [PATCH] STEAMOS: Dynamic swapchain override for gamescope limiter
|
||||
|
||||
---
|
||||
src/loader/loader_dri3_helper.c | 43 +++++++++++++++++++++++++++++++--
|
||||
src/loader/loader_dri3_helper.h | 1 +
|
||||
src/loader/meson.build | 2 +-
|
||||
src/vulkan/wsi/meson.build | 2 +-
|
||||
src/vulkan/wsi/wsi_common_x11.c | 38 +++++++++++++++++++++++++++++
|
||||
5 files changed, 82 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c
|
||||
index 11bf6472894..21ad0c28937 100644
|
||||
index 11bf647..343980f 100644
|
||||
--- a/src/loader/loader_dri3_helper.c
|
||||
+++ b/src/loader/loader_dri3_helper.c
|
||||
@@ -37,6 +37,7 @@
|
||||
#include "loader_dri_helper.h"
|
||||
#include "loader_dri3_helper.h"
|
||||
#include "util/macros.h"
|
||||
+#include "util/simple_mtx.h"
|
||||
#include "drm-uapi/drm_fourcc.h"
|
||||
|
||||
/**
|
||||
@@ -288,6 +289,30 @@ dri3_update_max_num_back(struct loader_dri3_drawable *draw)
|
||||
@@ -288,6 +288,30 @@ dri3_update_max_num_back(struct loader_dri3_drawable *draw)
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,14 +33,13 @@ index 11bf6472894..21ad0c28937 100644
|
||||
void
|
||||
loader_dri3_set_swap_interval(struct loader_dri3_drawable *draw, int interval)
|
||||
{
|
||||
@@ -302,10 +327,12 @@ loader_dri3_set_swap_interval(struct loader_dri3_drawable *draw, int interval)
|
||||
@@ -302,10 +326,12 @@ loader_dri3_set_swap_interval(struct loader_dri3_drawable *draw, int interval)
|
||||
* PS. changing from value A to B and A < B won't cause swap out of order but
|
||||
* may still gets wrong target_msc value at the beginning.
|
||||
*/
|
||||
- if (draw->swap_interval != interval)
|
||||
- loader_dri3_swapbuffer_barrier(draw);
|
||||
+ if (draw->orig_swap_interval != interval)
|
||||
+ loader_dri3_swapbuffer_barrier(draw);
|
||||
loader_dri3_swapbuffer_barrier(draw);
|
||||
|
||||
- draw->swap_interval = interval;
|
||||
+ draw->orig_swap_interval = interval;
|
||||
@ -70,9 +48,9 @@ index 11bf6472894..21ad0c28937 100644
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -437,6 +464,12 @@ loader_dri3_drawable_init(xcb_connection_t *conn,
|
||||
draw->swap_interval = dri_get_initial_swap_interval(draw->dri_screen_render_gpu,
|
||||
draw->ext->config);
|
||||
@@ -434,6 +460,12 @@ loader_dri3_drawable_init(xcb_connection_t *conn,
|
||||
if (!draw->adaptive_sync)
|
||||
set_adaptive_sync_property(conn, draw->drawable, false);
|
||||
|
||||
+ draw->orig_swap_interval = draw->swap_interval;
|
||||
+
|
||||
@ -80,10 +58,10 @@ index 11bf6472894..21ad0c28937 100644
|
||||
+ if (gamescope_override == 1)
|
||||
+ draw->swap_interval = 1;
|
||||
+
|
||||
dri3_update_max_num_back(draw);
|
||||
draw->swap_interval = dri_get_initial_swap_interval(draw->dri_screen_render_gpu,
|
||||
draw->ext->config);
|
||||
|
||||
/* Create a new drawable */
|
||||
@@ -1091,6 +1124,12 @@ loader_dri3_swap_buffers_msc(struct loader_dri3_drawable *draw,
|
||||
@@ -1091,6 +1123,12 @@ loader_dri3_swap_buffers_msc(struct loader_dri3_drawable *draw,
|
||||
if (draw->type == LOADER_DRI3_DRAWABLE_WINDOW) {
|
||||
dri3_fence_reset(draw->conn, back);
|
||||
|
||||
@ -97,7 +75,7 @@ index 11bf6472894..21ad0c28937 100644
|
||||
* successful MSC and adding in a swap interval for each outstanding swap
|
||||
* request. target_msc=divisor=remainder=0 means "Use glXSwapBuffers()
|
||||
diff --git a/src/loader/loader_dri3_helper.h b/src/loader/loader_dri3_helper.h
|
||||
index 1fd340bd145..b8f5eaaf190 100644
|
||||
index 1fd340b..b8f5eaa 100644
|
||||
--- a/src/loader/loader_dri3_helper.h
|
||||
+++ b/src/loader/loader_dri3_helper.h
|
||||
@@ -178,6 +178,7 @@ struct loader_dri3_drawable {
|
||||
@ -109,7 +87,7 @@ index 1fd340bd145..b8f5eaaf190 100644
|
||||
struct loader_dri3_extensions *ext;
|
||||
const struct loader_dri3_vtable *vtable;
|
||||
diff --git a/src/loader/meson.build b/src/loader/meson.build
|
||||
index 6334cb9815c..0dc8ef40c37 100644
|
||||
index 81779a3..18c9fd9 100644
|
||||
--- a/src/loader/meson.build
|
||||
+++ b/src/loader/meson.build
|
||||
@@ -28,7 +28,7 @@ if with_platform_x11 and with_dri3
|
||||
@ -117,12 +95,12 @@ index 6334cb9815c..0dc8ef40c37 100644
|
||||
dependencies : [
|
||||
dep_libdrm, dep_xcb_dri3, dep_xcb_present, dep_xcb_sync, dep_xshmfence,
|
||||
- dep_xcb_xfixes,
|
||||
+ dep_xcb_xfixes, idep_mesautil
|
||||
+ dep_xcb_xfixes, dep_xcb_xrandr, idep_mesautil
|
||||
],
|
||||
build_by_default : false,
|
||||
)
|
||||
diff --git a/src/vulkan/wsi/wsi_common_x11.c b/src/vulkan/wsi/wsi_common_x11.c
|
||||
index a42355971a7..ce03b95cb8e 100644
|
||||
index a423559..5ed89cb 100644
|
||||
--- a/src/vulkan/wsi/wsi_common_x11.c
|
||||
+++ b/src/vulkan/wsi/wsi_common_x11.c
|
||||
@@ -42,6 +42,7 @@
|
||||
@ -164,25 +142,16 @@ index a42355971a7..ce03b95cb8e 100644
|
||||
static struct wsi_x11_connection *
|
||||
wsi_x11_connection_create(struct wsi_device *wsi_dev,
|
||||
xcb_connection_t *conn)
|
||||
@@ -1042,6 +1067,8 @@ struct x11_swapchain {
|
||||
struct wsi_queue acquire_queue;
|
||||
pthread_t queue_manager;
|
||||
@@ -1074,6 +1099,8 @@ struct x11_swapchain {
|
||||
/* Total number of images returned to application in AcquireNextImage. */
|
||||
uint64_t present_poll_acquire_count;
|
||||
|
||||
+ VkPresentModeKHR orig_present_mode;
|
||||
+
|
||||
/* Lock and condition variable that lets callers monitor forward progress in the swapchain.
|
||||
* This includes:
|
||||
* - Present ID completion updates (present_id).
|
||||
@@ -1135,6 +1162,8 @@ static void x11_swapchain_notify_error(struct x11_swapchain *swapchain, VkResult
|
||||
* is permanent once seen, and every subsequent call will return this. If
|
||||
* this has not been seen, success will be returned.
|
||||
*/
|
||||
+#define x11_swapchain_result(chain, result) \
|
||||
+ _x11_swapchain_result(chain, result, __FILE__, __LINE__)
|
||||
static VkResult
|
||||
_x11_swapchain_result(struct x11_swapchain *chain, VkResult result,
|
||||
const char *file, int line)
|
||||
@@ -1146,6 +1175,12 @@ _x11_swapchain_result(struct x11_swapchain *chain, VkResult result,
|
||||
struct x11_image images[0];
|
||||
};
|
||||
VK_DEFINE_NONDISP_HANDLE_CASTS(x11_swapchain, base.base, VkSwapchainKHR,
|
||||
@@ -1802,6 +1829,12 @@ x11_queue_present(struct wsi_swapchain *anv_chain,
|
||||
if (chain->status < 0)
|
||||
return chain->status;
|
||||
|
||||
@ -192,18 +161,9 @@ index a42355971a7..ce03b95cb8e 100644
|
||||
+ return x11_swapchain_result(chain, VK_ERROR_OUT_OF_DATE_KHR);
|
||||
+ }
|
||||
+
|
||||
/* If we have a new error, mark it as permanent on the chain and return. */
|
||||
if (result < 0) {
|
||||
#ifndef NDEBUG
|
||||
@@ -1177,8 +1212,6 @@ _x11_swapchain_result(struct x11_swapchain *chain, VkResult result,
|
||||
/* No changes, so return the last status. */
|
||||
return chain->status;
|
||||
}
|
||||
-#define x11_swapchain_result(chain, result) \
|
||||
- _x11_swapchain_result(chain, result, __FILE__, __LINE__)
|
||||
|
||||
static struct wsi_image *
|
||||
x11_get_wsi_image(struct wsi_swapchain *wsi_chain, uint32_t image_index)
|
||||
if (damage && damage->pRectangles && damage->rectangleCount > 0 &&
|
||||
damage->rectangleCount <= MAX_DAMAGE_RECTS) {
|
||||
xcb_rectangle_t rects[MAX_DAMAGE_RECTS];
|
||||
@@ -2554,6 +2587,10 @@ x11_surface_create_swapchain(VkIcdSurfaceBase *icd_surface,
|
||||
xcb_void_cookie_t cookie;
|
||||
VkResult result;
|
||||
@ -223,6 +183,3 @@ index a42355971a7..ce03b95cb8e 100644
|
||||
chain->base.image_count = num_images;
|
||||
chain->conn = conn;
|
||||
chain->window = window;
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
@ -68,6 +68,9 @@ Source0: https://archive.mesa3d.org/mesa-%{ver}.tar.xz
|
||||
# Source1 contains email correspondence clarifying the license terms.
|
||||
# Fedora opts to ignore the optional part of clause 2 and treat that code as 2 clause BSD.
|
||||
Source1: Mesa-MLAA-License-Clarification-Email.txt
|
||||
# Bazzite: Use Valve's defaults
|
||||
Source2: https://gitlab.com/evlaV/mesa/-/raw/steamos-23.9/src/util/00-mesa-defaults.conf
|
||||
Source3: https://gitlab.com/evlaV/mesa/-/raw/steamos-23.9/src/util/00-radv-defaults.conf
|
||||
|
||||
Patch10: gnome-shell-glthread-disable.patch
|
||||
|
||||
@ -368,6 +371,11 @@ The drivers with support for the Vulkan API.
|
||||
%prep
|
||||
%autosetup -n %{name}-%{ver} -p1
|
||||
cp %{SOURCE1} docs/
|
||||
# Bazzite: Use Valve's defaults
|
||||
rm src/util/00-mesa-defaults.conf
|
||||
cp %{SOURCE2} src/util/
|
||||
rm src/util/00-radv-defaults.conf
|
||||
cp %{SOURCE3} src/util/
|
||||
|
||||
%build
|
||||
# ensure standard Rust compiler flags are set
|
||||
|
Loading…
x
Reference in New Issue
Block a user