Skip to content

Commit

Permalink
www/firefox: uplift patch for bmo#1779425
Browse files Browse the repository at this point in the history
at least with some video cards (I only have one) but not with
software rendering, tabs supposed to display WebGL things may
crash instead. With this patch I can at least watch the cube
spin and the fishys swim, fwiw.
  • Loading branch information
moench-tegeder committed Jul 25, 2022
1 parent 9f10e47 commit e9cf87d
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
1 change: 1 addition & 0 deletions www/firefox/Makefile
@@ -1,5 +1,6 @@
PORTNAME= firefox
DISTVERSION= 103.0
PORTREVISION= 1
PORTEPOCH= 2
CATEGORIES= www wayland
MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}${DISTVERSIONSUFFIX}/source \
Expand Down
48 changes: 48 additions & 0 deletions www/firefox/files/patch-bug1779425
@@ -0,0 +1,48 @@
commit 9583d02e454318568191e5c31c51c34fd1332182
Author: Robert Mader <robert.mader@posteo.de>
Date: Tue Jul 19 21:52:04 2022 +0000

Bug 1779425 - Check for GbmDevice before using it, r=stransky,jgilbert

In some non-standard configurations we unexpectedly end up in this paths
without a GBM device - one example being the GPU process. Fail cleanly
instead of crashing in those cases, triggering fallback paths.

Context: in the past DMABuf usage was tightly coupled to GBM. Since the
introduction of the surfaceless and device EGL platforms that is not
longer the case, thus we can't make checks like `IsDMABufWebGLEnabled()`
depend on the presence of a GBM device.

Optimally all affected cases get fixed eventually. Until then and also
for future cases it makes sense to fail softly.

Differential Revision: https://phabricator.services.mozilla.com/D152173

diff --git widget/gtk/DMABufSurface.cpp widget/gtk/DMABufSurface.cpp
index 92c8e75218f8..7fddb32c7cda 100644
--- widget/gtk/DMABufSurface.cpp
+++ widget/gtk/DMABufSurface.cpp
@@ -382,6 +382,11 @@ bool DMABufSurfaceRGBA::Create(int aWidth, int aHeight,
LOGDMABUF(("DMABufSurfaceRGBA::Create() UID %d size %d x %d\n", mUID, mWidth,
mHeight));

+ if (!GetDMABufDevice()->GetGbmDevice()) {
+ LOGDMABUF((" Missing GbmDevice!"));
+ return false;
+ }
+
mGmbFormat = GetDMABufDevice()->GetGbmFormat(mSurfaceFlags & DMABUF_ALPHA);
if (!mGmbFormat) {
// Requested DRM format is not supported.
@@ -1025,6 +1030,11 @@ bool DMABufSurfaceYUV::CreateYUVPlane(int aPlane, int aWidth, int aHeight,
LOGDMABUF(("DMABufSurfaceYUV::CreateYUVPlane() UID %d size %d x %d", mUID,
aWidth, aHeight));

+ if (!GetDMABufDevice()->GetGbmDevice()) {
+ LOGDMABUF((" Missing GbmDevice!"));
+ return false;
+ }
+
mWidth[aPlane] = aWidth;
mHeight[aPlane] = aHeight;
mDrmFormats[aPlane] = aDrmFormat;

0 comments on commit e9cf87d

Please sign in to comment.