SHA256
1
0
forked from pool/webkit2gtk3

Accepting request 1123045 from GNOME:Factory

- Add webkit2gtk3-disable-dmabuf-nvidia.patch: disable DMABuf
  renderer for NVIDIA proprietary drivers (boo#1216778). (forwarded request 1121694 from mgorse)

OBS-URL: https://build.opensuse.org/request/show/1123045
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/webkit2gtk3?expand=0&rev=179
This commit is contained in:
Ana Guerrero 2023-11-05 11:18:31 +00:00 committed by Git OBS Bridge
commit f823a4fe89
3 changed files with 72 additions and 0 deletions

View File

@ -0,0 +1,63 @@
From: Carlos Garcia Campos <cgarcia@igalia.com>
Subject: Disable DMABuf renderer for NVIDIA proprietary drivers
Bug: https://bugs.webkit.org/show_bug.cgi?id=262607
Bug-Debian: https://bugs.debian.org/1039720
Origin: https://github.com/WebKit/WebKit/pull/18614
Index: webkitgtk/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp
===================================================================
--- webkitgtk.orig/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp
+++ webkitgtk/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp
@@ -36,11 +36,13 @@
#include <WebCore/GLContext.h>
#include <WebCore/IntRect.h>
#include <WebCore/PlatformDisplay.h>
+#include <WebCore/PlatformDisplaySurfaceless.h>
#include <epoxy/egl.h>
#include <wtf/glib/GUniquePtr.h>
#if USE(GBM)
#include <WebCore/DMABufFormat.h>
+#include <WebCore/PlatformDisplayGBM.h>
#include <gbm.h>
static constexpr uint64_t s_dmabufInvalidModifier = uint64_t(WebCore::DMABufFormat::Modifier::Invalid);
#else
@@ -53,6 +55,29 @@ static constexpr uint64_t s_dmabufInvali
namespace WebKit {
+static bool isNVIDIA()
+{
+ const char* forceDMABuf = getenv("WEBKIT_FORCE_DMABUF_RENDERER");
+ if (forceDMABuf && strcmp(forceDMABuf, "0"))
+ return false;
+
+ std::unique_ptr<WebCore::PlatformDisplay> platformDisplay;
+#if USE(GBM)
+ const char* disableGBM = getenv("WEBKIT_DMABUF_RENDERER_DISABLE_GBM");
+ if (!disableGBM || !strcmp(disableGBM, "0")) {
+ if (auto* device = WebCore::PlatformDisplay::sharedDisplay().gbmDevice())
+ platformDisplay = WebCore::PlatformDisplayGBM::create(device);
+ }
+#endif
+ if (!platformDisplay)
+ platformDisplay = WebCore::PlatformDisplaySurfaceless::create();
+
+ WebCore::GLContext::ScopedGLContext glContext(WebCore::GLContext::createOffscreen(platformDisplay ? *platformDisplay : WebCore::PlatformDisplay::sharedDisplay()));
+ if (strstr(reinterpret_cast<const char*>(glGetString(GL_VENDOR)), "NVIDIA"))
+ return true;
+ return false;
+}
+
OptionSet<DMABufRendererBufferMode> AcceleratedBackingStoreDMABuf::rendererBufferMode()
{
static OptionSet<DMABufRendererBufferMode> mode;
@@ -68,6 +93,9 @@ OptionSet<DMABufRendererBufferMode> Acce
return;
}
+ if (isNVIDIA())
+ return;
+
mode.add(DMABufRendererBufferMode::SharedMemory);
const auto& eglExtensions = WebCore::PlatformDisplay::sharedDisplay().eglExtensions();

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Wed Nov 1 19:52:33 UTC 2023 - Mike Gorse <mgorse@suse.com>
- Add webkit2gtk3-disable-dmabuf-nvidia.patch: disable DMABuf
renderer for NVIDIA proprietary drivers (boo#1216778).
-------------------------------------------------------------------
Mon Oct 23 18:48:15 UTC 2023 - Mike Gorse <mgorse@suse.com>

View File

@ -89,6 +89,8 @@ Source99: webkit2gtk3.keyring
Patch0: reproducibility.patch
# PATCH-FIX-UPSTREAM webkit2gtk3-create-destroy-egl-image.patch boo#1216483 mgorse@suse.com -- fix "No provider of EglDestroyImage found".
Patch1: webkit2gtk3-create-destroy-egl-image.patch
# PATCH-FIX-UPSTREAM webkit2gtk3-disable-dmabuf-nvidia.patch boo#1216778 mgorse@suse.com -- disable the DMABuf renderer for NVIDIA proprietary drivers.
Patch2: webkit2gtk3-disable-dmabuf-nvidia.patch
BuildRequires: Mesa-libEGL-devel
BuildRequires: Mesa-libGL-devel
@ -426,6 +428,7 @@ Group: Development/Tools/Other
A small test browswer from webkit, useful for testing features.
# Expand %%lang_package to Obsoletes its older-name counterpart
%package -n WebKitGTK-%{_apiver}-lang
Summary: Translations for package %{name}
Group: System/Localization