summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ffvpx.patch213
-rw-r--r--firefox.spec41
-rw-r--r--mozilla-1680505.patch34
-rwxr-xr-xrun-tests-wayland35
4 files changed, 247 insertions, 76 deletions
diff --git a/ffvpx.patch b/ffvpx.patch
index cff0437..73c2f57 100644
--- a/ffvpx.patch
+++ b/ffvpx.patch
@@ -1,6 +1,6 @@
diff -up firefox-84.0/dom/media/platforms/ffmpeg/ffmpeg58/moz.build.ffvpx firefox-84.0/dom/media/platforms/ffmpeg/ffmpeg58/moz.build
--- firefox-84.0/dom/media/platforms/ffmpeg/ffmpeg58/moz.build.ffvpx 2020-12-08 00:35:04.000000000 +0100
-+++ firefox-84.0/dom/media/platforms/ffmpeg/ffmpeg58/moz.build 2020-12-10 17:03:31.731266180 +0100
++++ firefox-84.0/dom/media/platforms/ffmpeg/ffmpeg58/moz.build 2020-12-10 20:36:08.398441034 +0100
@@ -27,8 +27,6 @@ if CONFIG['CC_TYPE'] == 'gcc':
]
if CONFIG['MOZ_WAYLAND']:
@@ -12,7 +12,7 @@ diff -up firefox-84.0/dom/media/platforms/ffmpeg/ffmpeg58/moz.build.ffvpx firefo
FINAL_LIBRARY = 'xul'
diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp.ffvpx firefox-84.0/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp
--- firefox-84.0/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp.ffvpx 2020-12-08 00:35:04.000000000 +0100
-+++ firefox-84.0/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp 2020-12-10 17:03:31.731266180 +0100
++++ firefox-84.0/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp 2020-12-10 20:40:53.388541336 +0100
@@ -11,6 +11,10 @@
#include "mozilla/Types.h"
#include "PlatformDecoderModule.h"
@@ -73,7 +73,7 @@ diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp.ffvpx fire
return VA_FUNC_LOADED(avcodec_get_hw_config) &&
diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegLibWrapper.h.ffvpx firefox-84.0/dom/media/platforms/ffmpeg/FFmpegLibWrapper.h
--- firefox-84.0/dom/media/platforms/ffmpeg/FFmpegLibWrapper.h.ffvpx 2020-12-08 00:35:04.000000000 +0100
-+++ firefox-84.0/dom/media/platforms/ffmpeg/FFmpegLibWrapper.h 2020-12-10 17:03:31.731266180 +0100
++++ firefox-84.0/dom/media/platforms/ffmpeg/FFmpegLibWrapper.h 2020-12-10 20:40:53.388541336 +0100
@@ -56,6 +56,7 @@ struct MOZ_ONLY_USED_TO_AVOID_STATIC_CON
#ifdef MOZ_WAYLAND
// Check if mVALib are available and we can use HW decode.
@@ -84,7 +84,7 @@ diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegLibWrapper.h.ffvpx firefo
// indicate the version of libavcodec linked to.
diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp.ffvpx firefox-84.0/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
--- firefox-84.0/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp.ffvpx 2020-12-08 00:35:04.000000000 +0100
-+++ firefox-84.0/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp 2020-12-10 17:03:31.731266180 +0100
++++ firefox-84.0/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp 2020-12-10 20:40:53.388541336 +0100
@@ -9,10 +9,6 @@
#include "mozilla/ArrayUtils.h"
#include "FFmpegLog.h"
@@ -143,8 +143,26 @@ diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp.ffvpx f
// While going through all possible libs, this status will be updated with a
diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp.ffvpx firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp
--- firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp.ffvpx 2020-12-08 00:35:04.000000000 +0100
-+++ firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp 2020-12-10 17:03:31.731266180 +0100
-@@ -124,8 +124,8 @@ static AVPixelFormat ChooseVAAPIPixelFor
++++ firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp 2020-12-10 20:40:53.392541452 +0100
+@@ -32,6 +32,8 @@
+ # define AV_PIX_FMT_NONE PIX_FMT_NONE
+ #endif
+ #include "mozilla/PodOperations.h"
++#include "mozilla/ScopeExit.h"
++#include "mozilla/StaticPrefs_media.h"
+ #include "mozilla/TaskQueue.h"
+ #include "nsThreadUtils.h"
+ #include "prsystem.h"
+@@ -45,7 +47,7 @@ typedef int VAStatus;
+ #endif
+
+ // Use some extra HW frames for potential rendering lags.
+-#define EXTRA_HW_FRAMES 6
++#define EXTRA_HW_FRAMES 20
+
+ typedef mozilla::layers::Image Image;
+ typedef mozilla::layers::PlanarYCbCrImage PlanarYCbCrImage;
+@@ -124,8 +126,8 @@ static AVPixelFormat ChooseVAAPIPixelFor
return AV_PIX_FMT_NONE;
}
@@ -155,7 +173,7 @@ diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp.ffvpx fi
: mSurface(aSurface),
mLib(aLib),
mAVHWFramesContext(nullptr),
-@@ -138,8 +138,8 @@ DMABufSurfaceWrapper::DMABufSurfaceWrapp
+@@ -138,8 +140,8 @@ DMABufSurfaceWrapper::DMABufSurfaceWrapp
mSurface->GetUID());
}
@@ -166,7 +184,7 @@ diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp.ffvpx fi
FFMPEG_LOG("DMABufSurfaceWrapper: VAAPI locking dmabuf surface UID = %d",
mSurface->GetUID());
if (aAVCodecContext && aAVFrame) {
-@@ -148,7 +148,7 @@ void DMABufSurfaceWrapper::LockVAAPIData
+@@ -148,7 +150,7 @@ void DMABufSurfaceWrapper::LockVAAPIData
}
}
@@ -175,7 +193,7 @@ diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp.ffvpx fi
FFMPEG_LOG("DMABufSurfaceWrapper: VAAPI releasing dmabuf surface UID = %d",
mSurface->GetUID());
if (mHWAVBuffer && mAVHWFramesContext) {
-@@ -158,7 +158,7 @@ void DMABufSurfaceWrapper::ReleaseVAAPID
+@@ -158,7 +160,7 @@ void DMABufSurfaceWrapper::ReleaseVAAPID
mSurface->ReleaseSurface();
}
@@ -184,7 +202,7 @@ diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp.ffvpx fi
FFMPEG_LOG("DMABufSurfaceWrapper: deleting dmabuf surface UID = %d",
mSurface->GetUID());
ReleaseVAAPIData();
-@@ -181,7 +181,14 @@ AVCodec* FFmpegVideoDecoder<LIBAV_VER>::
+@@ -181,7 +183,14 @@ AVCodec* FFmpegVideoDecoder<LIBAV_VER>::
return nullptr;
}
@@ -200,7 +218,7 @@ diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp.ffvpx fi
public:
VAAPIDisplayHolder(FFmpegLibWrapper* aLib, VADisplay aDisplay)
: mLib(aLib), mDisplay(aDisplay){};
-@@ -193,7 +200,8 @@ class VAAPIDisplayHolder {
+@@ -193,7 +202,8 @@ class VAAPIDisplayHolder {
};
static void VAAPIDisplayReleaseCallback(struct AVHWDeviceContext* hwctx) {
@@ -210,7 +228,7 @@ diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp.ffvpx fi
delete displayHolder;
}
-@@ -229,7 +237,7 @@ bool FFmpegVideoDecoder<LIBAV_VER>::Crea
+@@ -229,7 +239,7 @@ bool FFmpegVideoDecoder<LIBAV_VER>::Crea
}
}
@@ -219,7 +237,7 @@ diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp.ffvpx fi
hwctx->free = VAAPIDisplayReleaseCallback;
int major, minor;
-@@ -703,7 +711,7 @@ void FFmpegVideoDecoder<LIBAV_VER>::Rele
+@@ -703,7 +713,7 @@ void FFmpegVideoDecoder<LIBAV_VER>::Rele
}
}
@@ -228,7 +246,7 @@ diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp.ffvpx fi
FFmpegVideoDecoder<LIBAV_VER>::GetUnusedDMABufSurfaceWrapper() {
int len = mDMABufSurfaces.Length();
for (int i = 0; i < len; i++) {
-@@ -769,7 +777,8 @@ MediaResult FFmpegVideoDecoder<LIBAV_VER
+@@ -769,7 +779,8 @@ MediaResult FFmpegVideoDecoder<LIBAV_VER
RefPtr<DMABufSurfaceYUV> surface;
@@ -240,7 +258,7 @@ diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp.ffvpx fi
surface = DMABufSurfaceYUV::CreateYUVSurface(vaDesc);
diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h.ffvpx firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h
--- firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h.ffvpx 2020-12-08 00:35:04.000000000 +0100
-+++ firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h 2020-12-10 17:03:31.731266180 +0100
++++ firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h 2020-12-10 20:40:53.388541336 +0100
@@ -55,7 +55,14 @@ namespace mozilla {
// We own the DMABufSurface underlying GPU data and we use it for
// repeated rendering of video frames.
@@ -277,7 +295,7 @@ diff -up firefox-84.0/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h.ffvpx fire
RefPtr<ImageContainer> mImageContainer;
diff -up firefox-84.0/dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp.ffvpx firefox-84.0/dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp
--- firefox-84.0/dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp.ffvpx 2020-12-08 00:35:04.000000000 +0100
-+++ firefox-84.0/dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp 2020-12-10 17:03:31.731266180 +0100
++++ firefox-84.0/dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp 2020-12-10 20:40:53.388541336 +0100
@@ -64,6 +64,10 @@ bool FFVPXRuntimeLinker::Init() {
MOZ_ASSERT(NS_IsMainThread());
sLinkStatus = LinkStatus_FAILED;
@@ -291,7 +309,7 @@ diff -up firefox-84.0/dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp.ff
PathString lgpllibsname = GetLibraryName(nullptr, "lgpllibs");
diff -up firefox-84.0/dom/media/platforms/ffmpeg/ffvpx/moz.build.ffvpx firefox-84.0/dom/media/platforms/ffmpeg/ffvpx/moz.build
--- firefox-84.0/dom/media/platforms/ffmpeg/ffvpx/moz.build.ffvpx 2020-12-08 00:35:04.000000000 +0100
-+++ firefox-84.0/dom/media/platforms/ffmpeg/ffvpx/moz.build 2020-12-10 17:03:31.731266180 +0100
++++ firefox-84.0/dom/media/platforms/ffmpeg/ffvpx/moz.build 2020-12-10 20:36:08.431441959 +0100
@@ -36,4 +36,8 @@ if CONFIG["CC_TYPE"] == "gcc":
DEFINES["FFVPX_VERSION"] = 46465650
DEFINES["USING_MOZFFVPX"] = True
@@ -303,18 +321,87 @@ diff -up firefox-84.0/dom/media/platforms/ffmpeg/ffvpx/moz.build.ffvpx firefox-8
FINAL_LIBRARY = "xul"
diff -up firefox-84.0/gfx/layers/DMABUFSurfaceImage.cpp.ffvpx firefox-84.0/gfx/layers/DMABUFSurfaceImage.cpp
--- firefox-84.0/gfx/layers/DMABUFSurfaceImage.cpp.ffvpx 2020-12-08 00:35:04.000000000 +0100
-+++ firefox-84.0/gfx/layers/DMABUFSurfaceImage.cpp 2020-12-10 17:03:31.731266180 +0100
-@@ -9,6 +9,7 @@
++++ firefox-84.0/gfx/layers/DMABUFSurfaceImage.cpp 2020-12-10 20:36:08.308438509 +0100
+@@ -5,16 +5,23 @@
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+ #include "DMABUFSurfaceImage.h"
+-#include "gfxPlatform.h"
++#include "mozilla/widget/DMABufSurface.h"
#include "mozilla/layers/CompositableClient.h"
#include "mozilla/layers/CompositableForwarder.h"
#include "mozilla/layers/DMABUFTextureClientOGL.h"
+-#include "mozilla/UniquePtr.h"
+#include "mozilla/layers/TextureForwarder.h"
- #include "mozilla/UniquePtr.h"
using namespace mozilla;
+ using namespace mozilla::layers;
+ using namespace mozilla::gfx;
+
++DMABUFSurfaceImage::DMABUFSurfaceImage(DMABufSurface* aSurface)
++ : Image(nullptr, ImageFormat::DMABUF), mSurface(aSurface) {
++ mSurface->GlobalRefAdd();
++}
++
++DMABUFSurfaceImage::~DMABUFSurfaceImage() { mSurface->GlobalRefRelease(); }
++
+ TextureClient* DMABUFSurfaceImage::GetTextureClient(
+ KnowsCompositor* aKnowsCompositor) {
+ if (!mTextureClient) {
+@@ -25,3 +32,7 @@ TextureClient* DMABUFSurfaceImage::GetTe
+ }
+ return mTextureClient;
+ }
++
++gfx::IntSize DMABUFSurfaceImage::GetSize() const {
++ return gfx::IntSize::Truncate(mSurface->GetWidth(), mSurface->GetHeight());
++}
+diff -up firefox-84.0/gfx/layers/DMABUFSurfaceImage.h.ffvpx firefox-84.0/gfx/layers/DMABUFSurfaceImage.h
+--- firefox-84.0/gfx/layers/DMABUFSurfaceImage.h.ffvpx 2020-12-10 20:53:45.300792876 +0100
++++ firefox-84.0/gfx/layers/DMABUFSurfaceImage.h 2020-12-10 20:36:08.279437696 +0100
+@@ -8,32 +8,24 @@
+ #define SURFACE_DMABUF_H
+
+ #include "ImageContainer.h"
+-#include "mozilla/widget/DMABufSurface.h"
+-#include "mozilla/gfx/Point.h"
+-#include "mozilla/layers/TextureClient.h"
++
++class DMABufSurface;
+
+ namespace mozilla {
+ namespace layers {
+
++class TextureClient;
++
+ class DMABUFSurfaceImage : public Image {
+ public:
+- explicit DMABUFSurfaceImage(DMABufSurface* aSurface)
+- : Image(nullptr, ImageFormat::DMABUF), mSurface(aSurface) {
+- mSurface->GlobalRefAdd();
+- }
+-
+- ~DMABUFSurfaceImage() { mSurface->GlobalRefRelease(); }
++ explicit DMABUFSurfaceImage(DMABufSurface* aSurface);
++ ~DMABUFSurfaceImage();
+
+ DMABufSurface* GetSurface() { return mSurface; }
+-
+- gfx::IntSize GetSize() const override {
+- return gfx::IntSize::Truncate(mSurface->GetWidth(), mSurface->GetHeight());
+- }
+-
++ gfx::IntSize GetSize() const override;
+ already_AddRefed<gfx::SourceSurface> GetAsSourceSurface() override {
+ return nullptr;
+ }
+-
+ TextureClient* GetTextureClient(KnowsCompositor* aKnowsCompositor) override;
+
+ private:
diff -up firefox-84.0/media/ffvpx/changes.patch.ffvpx firefox-84.0/media/ffvpx/changes.patch
--- firefox-84.0/media/ffvpx/changes.patch.ffvpx 2020-12-08 00:35:04.000000000 +0100
-+++ firefox-84.0/media/ffvpx/changes.patch 2020-12-10 17:03:31.731266180 +0100
++++ firefox-84.0/media/ffvpx/changes.patch 2020-12-10 20:40:53.388541336 +0100
@@ -50,3 +50,27 @@ index 9fb8d0a..97ad3b9 100644
rgba_color[0] = rgba >> 24;
rgba_color[1] = rgba >> 16;
@@ -345,7 +432,7 @@ diff -up firefox-84.0/media/ffvpx/changes.patch.ffvpx firefox-84.0/media/ffvpx/c
+
diff -up firefox-84.0/media/ffvpx/config_common.h.ffvpx firefox-84.0/media/ffvpx/config_common.h
--- firefox-84.0/media/ffvpx/config_common.h.ffvpx 2020-12-08 00:35:05.000000000 +0100
-+++ firefox-84.0/media/ffvpx/config_common.h 2020-12-10 17:03:31.731266180 +0100
++++ firefox-84.0/media/ffvpx/config_common.h 2020-12-10 20:40:53.388541336 +0100
@@ -18,4 +18,13 @@
#define CONFIG_RDFT 1
#endif
@@ -362,7 +449,7 @@ diff -up firefox-84.0/media/ffvpx/config_common.h.ffvpx firefox-84.0/media/ffvpx
#endif
diff -up firefox-84.0/media/ffvpx/FILES.ffvpx firefox-84.0/media/ffvpx/FILES
--- firefox-84.0/media/ffvpx/FILES.ffvpx 2020-12-08 00:35:05.000000000 +0100
-+++ firefox-84.0/media/ffvpx/FILES 2020-12-10 17:03:31.731266180 +0100
++++ firefox-84.0/media/ffvpx/FILES 2020-12-10 20:40:53.388541336 +0100
@@ -131,6 +131,11 @@
./libavcodec/thread.h
./libavcodec/unary.h
@@ -386,7 +473,7 @@ diff -up firefox-84.0/media/ffvpx/FILES.ffvpx firefox-84.0/media/ffvpx/FILES
./libavutil/imgutils_internal.h
diff -up firefox-84.0/media/ffvpx/libavcodec/avcodec.symbols.ffvpx firefox-84.0/media/ffvpx/libavcodec/avcodec.symbols
--- firefox-84.0/media/ffvpx/libavcodec/avcodec.symbols.ffvpx 2020-12-08 00:35:05.000000000 +0100
-+++ firefox-84.0/media/ffvpx/libavcodec/avcodec.symbols 2020-12-10 17:03:31.731266180 +0100
++++ firefox-84.0/media/ffvpx/libavcodec/avcodec.symbols 2020-12-10 20:40:53.389541365 +0100
@@ -28,6 +28,11 @@ av_get_pcm_codec
av_get_profile_name
av_grow_packet
@@ -408,8 +495,8 @@ diff -up firefox-84.0/media/ffvpx/libavcodec/avcodec.symbols.ffvpx firefox-84.0/
avcodec_get_subtitle_rect_class
avcodec_get_type
diff -up firefox-84.0/media/ffvpx/libavcodec/moz.build.ffvpx firefox-84.0/media/ffvpx/libavcodec/moz.build
---- firefox-84.0/media/ffvpx/libavcodec/moz.build.ffvpx 2020-12-10 17:03:31.725266007 +0100
-+++ firefox-84.0/media/ffvpx/libavcodec/moz.build 2020-12-10 17:03:31.732266209 +0100
+--- firefox-84.0/media/ffvpx/libavcodec/moz.build.ffvpx 2020-12-10 20:40:53.383541192 +0100
++++ firefox-84.0/media/ffvpx/libavcodec/moz.build 2020-12-10 20:40:53.389541365 +0100
@@ -96,6 +96,13 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']:
'vp9prob.c',
'vp9recon.c'
@@ -425,8 +512,8 @@ diff -up firefox-84.0/media/ffvpx/libavcodec/moz.build.ffvpx firefox-84.0/media/
if CONFIG['MOZ_FDK_AAC']:
SOURCES += [
diff -up firefox-84.0/media/ffvpx/libavcodec/vaapi_decode.c.ffvpx firefox-84.0/media/ffvpx/libavcodec/vaapi_decode.c
---- firefox-84.0/media/ffvpx/libavcodec/vaapi_decode.c.ffvpx 2020-12-10 17:03:31.732266209 +0100
-+++ firefox-84.0/media/ffvpx/libavcodec/vaapi_decode.c 2020-12-10 17:03:31.732266209 +0100
+--- firefox-84.0/media/ffvpx/libavcodec/vaapi_decode.c.ffvpx 2020-12-10 20:40:53.389541365 +0100
++++ firefox-84.0/media/ffvpx/libavcodec/vaapi_decode.c 2020-12-10 20:40:53.389541365 +0100
@@ -0,0 +1,732 @@
+/*
+ * This file is part of FFmpeg.
@@ -1161,8 +1248,8 @@ diff -up firefox-84.0/media/ffvpx/libavcodec/vaapi_decode.c.ffvpx firefox-84.0/m
+ return 0;
+}
diff -up firefox-84.0/media/ffvpx/libavcodec/vaapi_decode.h.ffvpx firefox-84.0/media/ffvpx/libavcodec/vaapi_decode.h
---- firefox-84.0/media/ffvpx/libavcodec/vaapi_decode.h.ffvpx 2020-12-10 17:03:31.732266209 +0100
-+++ firefox-84.0/media/ffvpx/libavcodec/vaapi_decode.h 2020-12-10 17:03:31.732266209 +0100
+--- firefox-84.0/media/ffvpx/libavcodec/vaapi_decode.h.ffvpx 2020-12-10 20:40:53.389541365 +0100
++++ firefox-84.0/media/ffvpx/libavcodec/vaapi_decode.h 2020-12-10 20:40:53.389541365 +0100
@@ -0,0 +1,105 @@
+/*
+ * This file is part of FFmpeg.
@@ -1270,8 +1357,8 @@ diff -up firefox-84.0/media/ffvpx/libavcodec/vaapi_decode.h.ffvpx firefox-84.0/m
+
+#endif /* AVCODEC_VAAPI_DECODE_H */
diff -up firefox-84.0/media/ffvpx/libavcodec/vaapi.h.ffvpx firefox-84.0/media/ffvpx/libavcodec/vaapi.h
---- firefox-84.0/media/ffvpx/libavcodec/vaapi.h.ffvpx 2020-12-10 17:03:31.732266209 +0100
-+++ firefox-84.0/media/ffvpx/libavcodec/vaapi.h 2020-12-10 17:03:31.732266209 +0100
+--- firefox-84.0/media/ffvpx/libavcodec/vaapi.h.ffvpx 2020-12-10 20:40:53.389541365 +0100
++++ firefox-84.0/media/ffvpx/libavcodec/vaapi.h 2020-12-10 20:40:53.389541365 +0100
@@ -0,0 +1,86 @@
+/*
+ * Video Acceleration API (shared data between FFmpeg and the video player)
@@ -1360,8 +1447,8 @@ diff -up firefox-84.0/media/ffvpx/libavcodec/vaapi.h.ffvpx firefox-84.0/media/ff
+
+#endif /* AVCODEC_VAAPI_H */
diff -up firefox-84.0/media/ffvpx/libavcodec/vaapi_vp8.c.ffvpx firefox-84.0/media/ffvpx/libavcodec/vaapi_vp8.c
---- firefox-84.0/media/ffvpx/libavcodec/vaapi_vp8.c.ffvpx 2020-12-10 17:03:31.732266209 +0100
-+++ firefox-84.0/media/ffvpx/libavcodec/vaapi_vp8.c 2020-12-10 17:03:31.732266209 +0100
+--- firefox-84.0/media/ffvpx/libavcodec/vaapi_vp8.c.ffvpx 2020-12-10 20:40:53.389541365 +0100
++++ firefox-84.0/media/ffvpx/libavcodec/vaapi_vp8.c 2020-12-10 20:40:53.389541365 +0100
@@ -0,0 +1,237 @@
+/*
+ * This file is part of FFmpeg.
@@ -1601,8 +1688,8 @@ diff -up firefox-84.0/media/ffvpx/libavcodec/vaapi_vp8.c.ffvpx firefox-84.0/medi
+ .caps_internal = HWACCEL_CAP_ASYNC_SAFE,
+};
diff -up firefox-84.0/media/ffvpx/libavcodec/vaapi_vp9.c.ffvpx firefox-84.0/media/ffvpx/libavcodec/vaapi_vp9.c
---- firefox-84.0/media/ffvpx/libavcodec/vaapi_vp9.c.ffvpx 2020-12-10 17:03:31.732266209 +0100
-+++ firefox-84.0/media/ffvpx/libavcodec/vaapi_vp9.c 2020-12-10 17:03:31.732266209 +0100
+--- firefox-84.0/media/ffvpx/libavcodec/vaapi_vp9.c.ffvpx 2020-12-10 20:40:53.389541365 +0100
++++ firefox-84.0/media/ffvpx/libavcodec/vaapi_vp9.c 2020-12-10 20:40:53.389541365 +0100
@@ -0,0 +1,185 @@
+/*
+ * VP9 HW decode acceleration through VA API
@@ -1791,7 +1878,7 @@ diff -up firefox-84.0/media/ffvpx/libavcodec/vaapi_vp9.c.ffvpx firefox-84.0/medi
+};
diff -up firefox-84.0/media/ffvpx/libavutil/avutil.symbols.ffvpx firefox-84.0/media/ffvpx/libavutil/avutil.symbols
--- firefox-84.0/media/ffvpx/libavutil/avutil.symbols.ffvpx 2020-12-08 00:35:05.000000000 +0100
-+++ firefox-84.0/media/ffvpx/libavutil/avutil.symbols 2020-12-10 17:03:31.732266209 +0100
++++ firefox-84.0/media/ffvpx/libavutil/avutil.symbols 2020-12-10 20:40:53.389541365 +0100
@@ -158,6 +158,9 @@ av_get_token
av_gettime
av_gettime_relative
@@ -1813,8 +1900,8 @@ diff -up firefox-84.0/media/ffvpx/libavutil/avutil.symbols.ffvpx firefox-84.0/me
av_malloc_array
av_mallocz_array
diff -up firefox-84.0/media/ffvpx/libavutil/hwcontext_vaapi.c.ffvpx firefox-84.0/media/ffvpx/libavutil/hwcontext_vaapi.c
---- firefox-84.0/media/ffvpx/libavutil/hwcontext_vaapi.c.ffvpx 2020-12-10 17:03:31.732266209 +0100
-+++ firefox-84.0/media/ffvpx/libavutil/hwcontext_vaapi.c 2020-12-10 17:03:31.732266209 +0100
+--- firefox-84.0/media/ffvpx/libavutil/hwcontext_vaapi.c.ffvpx 2020-12-10 20:40:53.390541394 +0100
++++ firefox-84.0/media/ffvpx/libavutil/hwcontext_vaapi.c 2020-12-10 20:40:53.389541365 +0100
@@ -0,0 +1,1691 @@
+/*
+ * This file is part of FFmpeg.
@@ -3508,8 +3595,8 @@ diff -up firefox-84.0/media/ffvpx/libavutil/hwcontext_vaapi.c.ffvpx firefox-84.0
+ },
+};
diff -up firefox-84.0/media/ffvpx/libavutil/hwcontext_vaapi.h.ffvpx firefox-84.0/media/ffvpx/libavutil/hwcontext_vaapi.h
---- firefox-84.0/media/ffvpx/libavutil/hwcontext_vaapi.h.ffvpx 2020-12-10 17:03:31.733266237 +0100
-+++ firefox-84.0/media/ffvpx/libavutil/hwcontext_vaapi.h 2020-12-10 17:03:31.733266237 +0100
+--- firefox-84.0/media/ffvpx/libavutil/hwcontext_vaapi.h.ffvpx 2020-12-10 20:40:53.390541394 +0100
++++ firefox-84.0/media/ffvpx/libavutil/hwcontext_vaapi.h 2020-12-10 20:40:53.390541394 +0100
@@ -0,0 +1,117 @@
+/*
+ * This file is part of FFmpeg.
@@ -3630,7 +3717,7 @@ diff -up firefox-84.0/media/ffvpx/libavutil/hwcontext_vaapi.h.ffvpx firefox-84.0
+#endif /* AVUTIL_HWCONTEXT_VAAPI_H */
diff -up firefox-84.0/media/ffvpx/libavutil/moz.build.ffvpx firefox-84.0/media/ffvpx/libavutil/moz.build
--- firefox-84.0/media/ffvpx/libavutil/moz.build.ffvpx 2020-12-08 00:35:05.000000000 +0100
-+++ firefox-84.0/media/ffvpx/libavutil/moz.build 2020-12-10 17:03:31.733266237 +0100
++++ firefox-84.0/media/ffvpx/libavutil/moz.build 2020-12-10 20:40:53.390541394 +0100
@@ -45,6 +45,11 @@ SOURCES += [
'time.c',
'utils.c'
@@ -3645,7 +3732,7 @@ diff -up firefox-84.0/media/ffvpx/libavutil/moz.build.ffvpx firefox-84.0/media/f
SOURCES += [
diff -up firefox-84.0/media/ffvpx/moz.build.ffvpx firefox-84.0/media/ffvpx/moz.build
--- firefox-84.0/media/ffvpx/moz.build.ffvpx 2020-12-08 00:35:05.000000000 +0100
-+++ firefox-84.0/media/ffvpx/moz.build 2020-12-10 17:03:31.733266237 +0100
++++ firefox-84.0/media/ffvpx/moz.build 2020-12-10 20:40:53.390541394 +0100
@@ -11,3 +11,8 @@ DIRS += [
'libavutil',
'libavcodec'
@@ -3656,8 +3743,8 @@ diff -up firefox-84.0/media/ffvpx/moz.build.ffvpx firefox-84.0/media/ffvpx/moz.b
+ 'mozva',
+ ]
diff -up firefox-84.0/media/ffvpx/mozva/moz.build.ffvpx firefox-84.0/media/ffvpx/mozva/moz.build
---- firefox-84.0/media/ffvpx/mozva/moz.build.ffvpx 2020-12-10 17:06:25.599272289 +0100
-+++ firefox-84.0/media/ffvpx/mozva/moz.build 2020-12-10 17:07:19.630827998 +0100
+--- firefox-84.0/media/ffvpx/mozva/moz.build.ffvpx 2020-12-10 20:40:53.390541394 +0100
++++ firefox-84.0/media/ffvpx/mozva/moz.build 2020-12-10 20:40:53.390541394 +0100
@@ -0,0 +1,13 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
@@ -3673,8 +3760,8 @@ diff -up firefox-84.0/media/ffvpx/mozva/moz.build.ffvpx firefox-84.0/media/ffvpx
+
+Library('mozva')
diff -up firefox-84.0/media/ffvpx/mozva/mozva.c.ffvpx firefox-84.0/media/ffvpx/mozva/mozva.c
---- firefox-84.0/media/ffvpx/mozva/mozva.c.ffvpx 2020-12-10 17:05:06.119983875 +0100
-+++ firefox-84.0/media/ffvpx/mozva/mozva.c 2020-12-10 17:05:06.119983875 +0100
+--- firefox-84.0/media/ffvpx/mozva/mozva.c.ffvpx 2020-12-10 20:40:53.390541394 +0100
++++ firefox-84.0/media/ffvpx/mozva/mozva.c 2020-12-10 20:40:53.390541394 +0100
@@ -0,0 +1,406 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim:expandtab:shiftwidth=4:tabstop=4:
@@ -4084,7 +4171,7 @@ diff -up firefox-84.0/media/ffvpx/mozva/mozva.c.ffvpx firefox-84.0/media/ffvpx/m
+#pragma GCC visibility pop
diff -up firefox-84.0/media/ffvpx/README_MOZILLA.ffvpx firefox-84.0/media/ffvpx/README_MOZILLA
--- firefox-84.0/media/ffvpx/README_MOZILLA.ffvpx 2020-12-08 00:35:05.000000000 +0100
-+++ firefox-84.0/media/ffvpx/README_MOZILLA 2020-12-10 17:05:06.119983875 +0100
++++ firefox-84.0/media/ffvpx/README_MOZILLA 2020-12-10 20:40:53.390541394 +0100
@@ -56,3 +56,5 @@ $ for i in `cat $PATH_CENTRAL/media/ffvp
Then apply patch.diff on the ffvpx tree.
@@ -4092,15 +4179,15 @@ diff -up firefox-84.0/media/ffvpx/README_MOZILLA.ffvpx firefox-84.0/media/ffvpx/
+
+Apply linux-vaapi-build.patch patch to enable build VA-API support for Linux.
diff -up firefox-84.0/media/ffvpx/va/README.ffvpx firefox-84.0/media/ffvpx/va/README
---- firefox-84.0/media/ffvpx/va/README.ffvpx 2020-12-10 17:05:06.119983875 +0100
-+++ firefox-84.0/media/ffvpx/va/README 2020-12-10 17:05:06.119983875 +0100
+--- firefox-84.0/media/ffvpx/va/README.ffvpx 2020-12-10 20:40:53.390541394 +0100
++++ firefox-84.0/media/ffvpx/va/README 2020-12-10 20:40:53.390541394 +0100
@@ -0,0 +1,2 @@
+There are libva headers from libva 1.7.0 used to build vaapi support for in-tree ffvpx.
+Apply va.patch when you update it to new versions.
\ No newline at end of file
diff -up firefox-84.0/media/ffvpx/va/va_dec_vp8.h.ffvpx firefox-84.0/media/ffvpx/va/va_dec_vp8.h
---- firefox-84.0/media/ffvpx/va/va_dec_vp8.h.ffvpx 2020-12-10 17:05:06.119983875 +0100
-+++ firefox-84.0/media/ffvpx/va/va_dec_vp8.h 2020-12-10 17:05:06.119983875 +0100
+--- firefox-84.0/media/ffvpx/va/va_dec_vp8.h.ffvpx 2020-12-10 20:40:53.390541394 +0100
++++ firefox-84.0/media/ffvpx/va/va_dec_vp8.h 2020-12-10 20:40:53.390541394 +0100
@@ -0,0 +1,254 @@
+/*
+ * Copyright (c) 2007-2012 Intel Corporation. All Rights Reserved.
@@ -4357,8 +4444,8 @@ diff -up firefox-84.0/media/ffvpx/va/va_dec_vp8.h.ffvpx firefox-84.0/media/ffvpx
+
+#endif /* VA_DEC_VP8_H */
diff -up firefox-84.0/media/ffvpx/va/va_dec_vp9.h.ffvpx firefox-84.0/media/ffvpx/va/va_dec_vp9.h
---- firefox-84.0/media/ffvpx/va/va_dec_vp9.h.ffvpx 2020-12-10 17:05:06.119983875 +0100
-+++ firefox-84.0/media/ffvpx/va/va_dec_vp9.h 2020-12-10 17:05:06.119983875 +0100
+--- firefox-84.0/media/ffvpx/va/va_dec_vp9.h.ffvpx 2020-12-10 20:40:53.390541394 +0100
++++ firefox-84.0/media/ffvpx/va/va_dec_vp9.h 2020-12-10 20:40:53.390541394 +0100
@@ -0,0 +1,319 @@
+/*
+ * Copyright (c) 2014 Intel Corporation. All Rights Reserved.
@@ -4680,8 +4767,8 @@ diff -up firefox-84.0/media/ffvpx/va/va_dec_vp9.h.ffvpx firefox-84.0/media/ffvpx
+
+#endif /* VA_DEC_VP9_H */
diff -up firefox-84.0/media/ffvpx/va/va.h.ffvpx firefox-84.0/media/ffvpx/va/va.h
---- firefox-84.0/media/ffvpx/va/va.h.ffvpx 2020-12-10 17:05:06.121983932 +0100
-+++ firefox-84.0/media/ffvpx/va/va.h 2020-12-10 17:05:06.121983932 +0100
+--- firefox-84.0/media/ffvpx/va/va.h.ffvpx 2020-12-10 20:40:53.391541423 +0100
++++ firefox-84.0/media/ffvpx/va/va.h 2020-12-10 20:40:53.391541423 +0100
@@ -0,0 +1,4636 @@
+/*
+ * Copyright (c) 2007-2009 Intel Corporation. All Rights Reserved.
@@ -9320,8 +9407,8 @@ diff -up firefox-84.0/media/ffvpx/va/va.h.ffvpx firefox-84.0/media/ffvpx/va/va.h
+
+#endif /* _VA_H_ */
diff -up firefox-84.0/media/ffvpx/va/va.patch.ffvpx firefox-84.0/media/ffvpx/va/va.patch
---- firefox-84.0/media/ffvpx/va/va.patch.ffvpx 2020-12-10 17:05:06.121983932 +0100
-+++ firefox-84.0/media/ffvpx/va/va.patch 2020-12-10 17:05:06.121983932 +0100
+--- firefox-84.0/media/ffvpx/va/va.patch.ffvpx 2020-12-10 20:40:53.391541423 +0100
++++ firefox-84.0/media/ffvpx/va/va.patch 2020-12-10 20:40:53.391541423 +0100
@@ -0,0 +1,33 @@
+--- va.h.old 2020-10-22 10:41:57.805112031 +0200
++++ va.h 2020-10-22 10:37:22.597088670 +0200
@@ -9357,8 +9444,8 @@ diff -up firefox-84.0/media/ffvpx/va/va.patch.ffvpx firefox-84.0/media/ffvpx/va/
+
+ /**@}*/
diff -up firefox-84.0/media/ffvpx/va/va_version.h.ffvpx firefox-84.0/media/ffvpx/va/va_version.h
---- firefox-84.0/media/ffvpx/va/va_version.h.ffvpx 2020-12-10 17:05:06.121983932 +0100
-+++ firefox-84.0/media/ffvpx/va/va_version.h 2020-12-10 17:05:06.121983932 +0100
+--- firefox-84.0/media/ffvpx/va/va_version.h.ffvpx 2020-12-10 20:40:53.391541423 +0100
++++ firefox-84.0/media/ffvpx/va/va_version.h 2020-12-10 20:40:53.391541423 +0100
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2009 Splitted-Desktop Systems. All Rights Reserved.
@@ -9449,7 +9536,7 @@ diff -up firefox-84.0/media/ffvpx/va/va_version.h.ffvpx firefox-84.0/media/ffvpx
+#endif /* VA_VERSION_H */
diff -up firefox-84.0/widget/gtk/DMABufSurface.h.ffvpx firefox-84.0/widget/gtk/DMABufSurface.h
--- firefox-84.0/widget/gtk/DMABufSurface.h.ffvpx 2020-12-08 00:35:05.000000000 +0100
-+++ firefox-84.0/widget/gtk/DMABufSurface.h 2020-12-10 17:05:06.121983932 +0100
++++ firefox-84.0/widget/gtk/DMABufSurface.h 2020-12-10 20:40:53.391541423 +0100
@@ -8,10 +8,9 @@
#define DMABufSurface_h__
@@ -9474,7 +9561,7 @@ diff -up firefox-84.0/widget/gtk/DMABufSurface.h.ffvpx firefox-84.0/widget/gtk/D
typedef enum {
diff -up firefox-84.0/widget/gtk/nsWaylandDisplay.cpp.ffvpx firefox-84.0/widget/gtk/nsWaylandDisplay.cpp
--- firefox-84.0/widget/gtk/nsWaylandDisplay.cpp.ffvpx 2020-12-08 00:35:05.000000000 +0100
-+++ firefox-84.0/widget/gtk/nsWaylandDisplay.cpp 2020-12-10 17:05:06.121983932 +0100
++++ firefox-84.0/widget/gtk/nsWaylandDisplay.cpp 2020-12-10 20:40:53.391541423 +0100
@@ -6,6 +6,10 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@@ -9488,7 +9575,7 @@ diff -up firefox-84.0/widget/gtk/nsWaylandDisplay.cpp.ffvpx firefox-84.0/widget/
namespace mozilla {
diff -up firefox-84.0/widget/gtk/nsWaylandDisplay.h.ffvpx firefox-84.0/widget/gtk/nsWaylandDisplay.h
--- firefox-84.0/widget/gtk/nsWaylandDisplay.h.ffvpx 2020-12-08 00:35:05.000000000 +0100
-+++ firefox-84.0/widget/gtk/nsWaylandDisplay.h 2020-12-10 17:05:06.122983961 +0100
++++ firefox-84.0/widget/gtk/nsWaylandDisplay.h 2020-12-10 20:40:53.391541423 +0100
@@ -10,10 +10,6 @@
#include "DMABufLibWrapper.h"
diff --git a/firefox.spec b/firefox.spec
index eb54712..c32aeb7 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -4,6 +4,8 @@
%global build_with_clang 0
%global build_with_asan 0
%global run_firefox_tests 1
+%global test_offscreen 1
+%global test_on_wayland 1
%global create_debuginfo 1
%global system_nss 0
@@ -53,8 +55,6 @@
%if %{release_build}
%global build_with_pgo 1
%endif
-# Build PGO builds on Wayland backend
-%global pgo_wayland 0
%endif
%global wayland_backend_default 1
%if 0%{?flatpak}
@@ -150,6 +150,7 @@ Source37: mochitest-python.tar.gz
Source38: print_results
Source39: print_subtest
Source40: run-tests
+Source41: run-tests-wayland
# Build patches
Patch3: mozilla-build-arm.patch
@@ -185,9 +186,9 @@ Patch402: mozilla-1196777.patch
Patch407: mozilla-1667096.patch
Patch408: mozilla-1663844.patch
Patch415: mozilla-1670333.patch
-Patch416: mozilla-1673202.patch
Patch418: mozilla-1556931-s390x-hidden-syms.patch
Patch420: mozilla-1678680.patch
+Patch421: mozilla-1680505.patch
# Upstream patches from mozbz#1672944
Patch450: pw1.patch
@@ -284,7 +285,7 @@ BuildRequires: pkgconfig(libffi)
%if 0%{?use_xvfb}
BuildRequires: xorg-x11-server-Xvfb
%endif
-%if 0%{?pgo_wayland}
+%if 0%{?test_on_wayland}
BuildRequires: mutter
BuildRequires: gsettings-desktop-schemas
BuildRequires: gnome-settings-daemon
@@ -403,9 +404,6 @@ This package contains results of tests executed during build.
%patch407 -p1 -b .1667096
%patch408 -p1 -b .1663844
%patch415 -p1 -b .1670333
-%if 0%{?fedora} > 33 || 0%{?eln}
-%patch416 -p1 -b .1673202
-%endif
%patch418 -p1 -b .1556931-s390x-hidden-syms
#%patch450 -p1 -b .pw1
@@ -415,11 +413,13 @@ This package contains results of tests executed during build.
#%patch454 -p1 -b .pw5
%patch455 -p1 -b .pw6
%patch420 -p1 -b .1678680
+%patch421 -p1 -b .1680505
%patch500 -p1 -b .ffvpx
# VA-API fixes
-%patch585 -p1 -b .firefox-vaapi-extra-frames
+# merged with ffvpx
+# %patch585 -p1 -b .firefox-vaapi-extra-frames
# PGO patches
%if %{build_with_pgo}
@@ -666,6 +666,7 @@ MOZ_SMP_FLAGS=-j1
[ "$RPM_BUILD_NCPUS" -ge 16 ] && MOZ_SMP_FLAGS=-j16
[ "$RPM_BUILD_NCPUS" -ge 24 ] && MOZ_SMP_FLAGS=-j24
[ "$RPM_BUILD_NCPUS" -ge 32 ] && MOZ_SMP_FLAGS=-j32
+#[ "$RPM_BUILD_NCPUS" -ge 64 ] && MOZ_SMP_FLAGS=-j64
%endif
echo "mk_add_options MOZ_MAKE_FLAGS=\"$MOZ_SMP_FLAGS\"" >> .mozconfig
@@ -673,8 +674,10 @@ echo "mk_add_options MOZ_SERVICES_SYNC=1" >> .mozconfig
echo "export STRIP=/bin/true" >> .mozconfig
export MACH_USE_SYSTEM_PYTHON=1
export MACH_NO_WRITE_TIMES=1
+
%if %{build_with_pgo}
-%if %{pgo_wayland}
+%if %{test_offscreen}
+%if %{test_on_wayland}
if [ -z "$XDG_RUNTIME_DIR" ]; then
export XDG_RUNTIME_DIR=$HOME
fi
@@ -685,10 +688,18 @@ else
export WAYLAND_DISPLAY=wayland-1
fi
MOZ_ENABLE_WAYLAND=1 ./mach build 2>&1 | cat -
-%else
-GDK_BACKEND=x11 xvfb-run ./mach build 2>&1 | cat -
%endif
-%else
+%if !%{test_on_wayland}
+MOZ_ENABLE_WAYLAND=0 xvfb-run ./mach build 2>&1 | cat -
+%endif
+%endif
+
+%if !%{test_offscreen}
+MOZ_ENABLE_WAYLAND=%{test_on_wayland} ./mach build 2>&1 | cat -
+%endif
+%endif
+
+%if !%{build_with_pgo}
./mach build -v 2>&1 | cat -
%endif
@@ -706,9 +717,13 @@ find-links=`pwd`/mochitest-python
no-index=true
EOF
tar xf %{SOURCE37}
-cp %{SOURCE40} %{SOURCE38} %{SOURCE39} .
+cp %{SOURCE40} %{SOURCE41} %{SOURCE38} %{SOURCE39} .
mkdir -p test_results
+%if %{test_on_wayland}
+./run-tests-wayland %{test_offscreen}
+%else
./run-tests
+%endif
./print_results > test_summary.txt 2>&1
%endif
diff --git a/mozilla-1680505.patch b/mozilla-1680505.patch
new file mode 100644
index 0000000..dba9b7c
--- /dev/null
+++ b/mozilla-1680505.patch
@@ -0,0 +1,34 @@
+diff --git a/widget/GfxInfoX11.cpp b/widget/GfxInfoX11.cpp
+--- a/widget/GfxInfoX11.cpp
++++ b/widget/GfxInfoX11.cpp
+@@ -705,6 +705,14 @@
+ DRIVER_GREATER_THAN_OR_EQUAL, V(18, 0, 0, 0),
+ "FEATURE_ROLLOUT_INTEL_GNOME_X11_MESA", "Mesa 18.0.0.0");
+
++ APPEND_TO_DRIVER_BLOCKLIST_EXT(
++ OperatingSystem::Linux, ScreenSizeStatus::SmallAndMedium,
++ BatteryStatus::All, DesktopEnvironment::GNOME, WindowProtocol::Wayland,
++ DriverVendor::MesaAll, DeviceFamily::IntelRolloutWebRender,
++ nsIGfxInfo::FEATURE_WEBRENDER, nsIGfxInfo::FEATURE_ALLOW_ALWAYS,
++ DRIVER_GREATER_THAN_OR_EQUAL, V(18, 0, 0, 0),
++ "FEATURE_ROLLOUT_INTEL_GNOME_WAYLAND_MESA", "Mesa 18.0.0.0");
++
+ // ATI Mesa baseline, chosen arbitrarily.
+ APPEND_TO_DRIVER_BLOCKLIST_EXT(
+ OperatingSystem::Linux, ScreenSizeStatus::All, BatteryStatus::All,
+@@ -713,6 +721,14 @@
+ nsIGfxInfo::FEATURE_ALLOW_ALWAYS, DRIVER_GREATER_THAN_OR_EQUAL,
+ V(18, 0, 0, 0), "FEATURE_ROLLOUT_ATI_GNOME_X11_MESA", "Mesa 18.0.0.0");
+
++ APPEND_TO_DRIVER_BLOCKLIST_EXT(
++ OperatingSystem::Linux, ScreenSizeStatus::All, BatteryStatus::All,
++ DesktopEnvironment::GNOME, WindowProtocol::Wayland,
++ DriverVendor::MesaAll, DeviceFamily::AtiRolloutWebRender,
++ nsIGfxInfo::FEATURE_WEBRENDER, nsIGfxInfo::FEATURE_ALLOW_ALWAYS,
++ DRIVER_GREATER_THAN_OR_EQUAL, V(18, 0, 0, 0),
++ "FEATURE_ROLLOUT_ATI_GNOME_WAYLAND_MESA", "Mesa 18.0.0.0");
++
+ #ifdef EARLY_BETA_OR_EARLIER
+ // Intel Mesa baseline, chosen arbitrarily.
+ APPEND_TO_DRIVER_BLOCKLIST_EXT(
+
diff --git a/run-tests-wayland b/run-tests-wayland
new file mode 100755
index 0000000..43ee52c
--- /dev/null
+++ b/run-tests-wayland
@@ -0,0 +1,35 @@
+#!/usr/bin/bash
+set -x
+
+export MACH_USE_SYSTEM_PYTHON=1
+export MOZ_NODE_PATH=/usr/bin/node
+export MOCHITEST_PARAMS="--timeout 1 --chunk-by-dir 4"
+export TEST_DIR="test_results"
+
+# Fix for system nss
+ln -s /usr/bin/certutil objdir/dist/bin/certutil
+ln -s /usr/bin/pk12util objdir/dist/bin/pk12util
+
+NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
+
+# Basic render testing
+export TEST_PARAMS=""
+export TEST_FLAVOUR=""
+export MOZ_ENABLE_WAYLAND=1
+./mach mochitest $MOCHITEST_PARAMS $TEST_PARAMS >& $TEST_DIR/mochitest$TEST_FLAVOUR
+./mach crashtest $TEST_PARAMS --run-tests-in-parallel >& $TEST_DIR/crashtest$TEST_FLAVOUR
+./mach marionette-test $TEST_PARAMS >& $TEST_DIR/marionette$TEST_FLAVOUR
+./mach reftest $TEST_PARAMS --run-tests-in-parallel >& $TEST_DIR/reftest$TEST_FLAVOUR
+./mach xpcshell-test $TEST_PARAMS 2>&1 | cat - > $TEST_DIR/xpcshell$TEST_FLAVOUR
+
+# WebRender testing
+export TEST_PARAMS="--enable-webrender $TEST_PARAMS"
+export TEST_FLAVOUR="-wr"
+./mach mochitest $MOCHITEST_PARAMS $TEST_PARAMS >& $TEST_DIR/mochitest$TEST_FLAVOUR
+./mach crashtest $TEST_PARAMS --run-tests-in-parallel >& $TEST_DIR/crashtest$TEST_FLAVOUR
+./mach marionette-test $TEST_PARAMS >& $TEST_DIR/marionette$TEST_FLAVOUR
+./mach reftest $TEST_PARAMS --run-tests-in-parallel >& $TEST_DIR/reftest$TEST_FLAVOUR
+./mach xpcshell-test $TEST_PARAMS 2>&1 | cat - > $TEST_DIR/xpcshell$TEST_FLAVOUR
+
+rm -f objdir/dist/bin/certutil
+rm -f objdir/dist/bin/pk12util
bgstack15