Skip to content

Commit

Permalink
chore: Add Nvidia patch for gamescope
Browse files Browse the repository at this point in the history
  • Loading branch information
KyleGospo committed Jan 2, 2025
1 parent 33e857d commit d13e820
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 1 deletion.
54 changes: 54 additions & 0 deletions spec_files/gamescope/1671.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
From 4da5c0a60ece2955cd60166ad0f93c93b0871723 Mon Sep 17 00:00:00 2001
From: brainantifreeze <[email protected]>
Date: Thu, 19 Dec 2024 09:16:15 +0000
Subject: [PATCH] add layer env var to hide present wait ext

---
layer/VkLayer_FROG_gamescope_wsi.cpp | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/layer/VkLayer_FROG_gamescope_wsi.cpp b/layer/VkLayer_FROG_gamescope_wsi.cpp
index 718a2604f3..f33da7f22f 100644
--- a/layer/VkLayer_FROG_gamescope_wsi.cpp
+++ b/layer/VkLayer_FROG_gamescope_wsi.cpp
@@ -496,7 +496,11 @@ namespace GamescopeWSILayer {
createInfo.ppEnabledExtensionNames = enabledExts.data();

setenv("vk_xwayland_wait_ready", "false", 0);
- setenv("vk_khr_present_wait", "true", 0);
+ if (getHidePresentWait()) {
+ setenv("vk_khr_present_wait", "false", 0);
+ } else {
+ setenv("vk_khr_present_wait", "true", 0);
+ }

VkResult result = pfnCreateInstanceProc(&createInfo, pAllocator, pInstance);
if (result != VK_SUCCESS)
@@ -801,6 +805,10 @@ namespace GamescopeWSILayer {
const vkroots::VkInstanceDispatch* pDispatch,
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceFeatures2* pFeatures) {
+ if (getHidePresentWait()) {
+ fprintf(stderr, "[Gamescope WSI] Removing VkPhysicalDevicePresentWaitFeaturesKHR because GAMESCOPE_WSI_HIDE_PRESENT_WAIT_EXT is set\n");
+ vkroots::RemoveFromChain<VkPhysicalDevicePresentWaitFeaturesKHR>(pFeatures);
+ }
pDispatch->GetPhysicalDeviceFeatures2(physicalDevice, pFeatures);
}

@@ -1015,6 +1023,16 @@ namespace GamescopeWSILayer {
return value;
}

+ static bool getHidePresentWait() {
+ static bool s_hidePresentWait = []() -> bool {
+ if (auto hide = parseEnv<uint32_t>("GAMESCOPE_WSI_HIDE_PRESENT_WAIT_EXT")) {
+ return *hide == 1;
+ }
+ return false;
+ }();
+ return s_hidePresentWait;
+ }
+
static uint32_t getMinImageCount() {
static uint32_t s_minImageCount = []() -> uint32_t {
if (auto minCount = parseEnv<uint32_t>("GAMESCOPE_WSI_MIN_IMAGE_COUNT")) {
5 changes: 4 additions & 1 deletion spec_files/gamescope/gamescope.spec
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

Name: gamescope
#Version: 100.%{gamescope_tag}
Version: 101.%{short_commit}
Version: 102.%{short_commit}
Release: 1.bazzite
Summary: Micro-compositor for video games on Wayland

Expand All @@ -27,6 +27,9 @@ Patch1: handheld.patch
# https://github.com/ValveSoftware/gamescope/pull/740
Patch2: 740.patch

# https://github.com/ValveSoftware/gamescope/pull/1671
Patch3: 1671.patch

BuildRequires: meson >= 0.54.0
BuildRequires: ninja-build
BuildRequires: cmake
Expand Down

0 comments on commit d13e820

Please sign in to comment.