diff --git a/srcpkgs/firefox/patches/fix-build-tier3.patch b/srcpkgs/firefox/patches/fix-build-tier3.patch deleted file mode 100644 index c7f5b7ea1f7..00000000000 --- a/srcpkgs/firefox/patches/fix-build-tier3.patch +++ /dev/null @@ -1,366 +0,0 @@ -commit 8a0c895dee94b3c15e56557eb1dd0114477a6056 -Author: q66 -Date: Sun Apr 10 00:38:30 2022 +0200 - - fix build on tier 3 platforms - - https://bugzilla.mozilla.org/show_bug.cgi?id=1758610 - -diff --git a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp -index 0fa127b..78c8961 100644 ---- a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp -+++ b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp -@@ -814,7 +814,7 @@ MediaResult FFmpegVideoDecoder::DoDecode( - # ifdef MOZ_WAYLAND_USE_VAAPI - // Create VideoFramePool in case we need it. - if (!mVideoFramePool && mEnableHardwareDecoding) { -- mVideoFramePool = MakeUnique(); -+ mVideoFramePool = MakeUnique>(); - } - - // Release unused VA-API surfaces before avcodec_receive_frame() as -diff --git a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h -index b1a2f73..c77d76f 100644 ---- a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h -+++ b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h -@@ -16,6 +16,9 @@ - #if LIBAVCODEC_VERSION_MAJOR >= 57 && LIBAVUTIL_VERSION_MAJOR >= 56 - # include "mozilla/layers/TextureClient.h" - #endif -+#ifdef MOZ_WAYLAND_USE_VAAPI -+# include "FFmpegVideoFramePool.h" -+#endif - - struct _VADRMPRIMESurfaceDescriptor; - typedef struct _VADRMPRIMESurfaceDescriptor VADRMPRIMESurfaceDescriptor; -@@ -23,7 +26,6 @@ typedef struct _VADRMPRIMESurfaceDescriptor VADRMPRIMESurfaceDescriptor; - namespace mozilla { - - class ImageBufferWrapper; --class VideoFramePool; - - template - class FFmpegVideoDecoder : public FFmpegDataDecoder {}; -@@ -138,7 +140,7 @@ class FFmpegVideoDecoder - AVBufferRef* mVAAPIDeviceContext; - bool mEnableHardwareDecoding; - VADisplay mDisplay; -- UniquePtr mVideoFramePool; -+ UniquePtr> mVideoFramePool; - static nsTArray mAcceleratedFormats; - #endif - RefPtr mImageAllocator; -diff --git a/dom/media/platforms/ffmpeg/FFmpegVideoFramePool.cpp b/dom/media/platforms/ffmpeg/FFmpegVideoFramePool.cpp -index 7943e09..673b3fc 100644 ---- a/dom/media/platforms/ffmpeg/FFmpegVideoFramePool.cpp -+++ b/dom/media/platforms/ffmpeg/FFmpegVideoFramePool.cpp -@@ -5,6 +5,7 @@ - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - - #include "FFmpegVideoFramePool.h" -+#include "PlatformDecoderModule.h" - #include "FFmpegLog.h" - #include "mozilla/widget/DMABufLibWrapper.h" - #include "libavutil/pixfmt.h" -@@ -15,11 +16,11 @@ - - namespace mozilla { - --RefPtr VideoFrameSurfaceVAAPI::GetAsImage() { -+RefPtr VideoFrameSurface::GetAsImage() { - return new layers::DMABUFSurfaceImage(mSurface); - } - --VideoFrameSurfaceVAAPI::VideoFrameSurfaceVAAPI(DMABufSurface* aSurface) -+VideoFrameSurface::VideoFrameSurface(DMABufSurface* aSurface) - : mSurface(aSurface), - mLib(nullptr), - mAVHWFramesContext(nullptr), -@@ -30,22 +31,22 @@ VideoFrameSurfaceVAAPI::VideoFrameSurfaceVAAPI(DMABufSurface* aSurface) - MOZ_ASSERT(mSurface); - MOZ_RELEASE_ASSERT(mSurface->GetAsDMABufSurfaceYUV()); - mSurface->GlobalRefCountCreate(); -- FFMPEG_LOG("VideoFrameSurfaceVAAPI: creating surface UID = %d", -+ FFMPEG_LOG("VideoFrameSurface: creating surface UID = %d", - mSurface->GetUID()); - } - --void VideoFrameSurfaceVAAPI::LockVAAPIData(AVCodecContext* aAVCodecContext, -- AVFrame* aAVFrame, -- FFmpegLibWrapper* aLib) { -- FFMPEG_LOG("VideoFrameSurfaceVAAPI: VAAPI locking dmabuf surface UID = %d", -+void VideoFrameSurface::LockVAAPIData(AVCodecContext* aAVCodecContext, -+ AVFrame* aAVFrame, -+ FFmpegLibWrapper* aLib) { -+ FFMPEG_LOG("VideoFrameSurface: VAAPI locking dmabuf surface UID = %d", - mSurface->GetUID()); - mLib = aLib; - mAVHWFramesContext = aLib->av_buffer_ref(aAVCodecContext->hw_frames_ctx); - mHWAVBuffer = aLib->av_buffer_ref(aAVFrame->buf[0]); - } - --void VideoFrameSurfaceVAAPI::ReleaseVAAPIData(bool aForFrameRecycle) { -- FFMPEG_LOG("VideoFrameSurfaceVAAPI: VAAPI releasing dmabuf surface UID = %d", -+void VideoFrameSurface::ReleaseVAAPIData(bool aForFrameRecycle) { -+ FFMPEG_LOG("VideoFrameSurface: VAAPI releasing dmabuf surface UID = %d", - mSurface->GetUID()); - - // It's possible to unref GPU data while IsUsed() is still set. -@@ -67,43 +68,43 @@ void VideoFrameSurfaceVAAPI::ReleaseVAAPIData(bool aForFrameRecycle) { - } - } - --VideoFrameSurfaceVAAPI::~VideoFrameSurfaceVAAPI() { -- FFMPEG_LOG("VideoFrameSurfaceVAAPI: deleting dmabuf surface UID = %d", -+VideoFrameSurface::~VideoFrameSurface() { -+ FFMPEG_LOG("VideoFrameSurface: deleting dmabuf surface UID = %d", - mSurface->GetUID()); - // We're about to quit, no need to recycle the frames. - ReleaseVAAPIData(/* aForFrameRecycle */ false); - } - --VideoFramePool::VideoFramePool() : mSurfaceLock("VideoFramePoolSurfaceLock") {} -+VideoFramePool::VideoFramePool() : mSurfaceLock("VideoFramePoolSurfaceLock") {} - --VideoFramePool::~VideoFramePool() { -+VideoFramePool::~VideoFramePool() { - MutexAutoLock lock(mSurfaceLock); - mDMABufSurfaces.Clear(); - } - --void VideoFramePool::ReleaseUnusedVAAPIFrames() { -+void VideoFramePool::ReleaseUnusedVAAPIFrames() { - MutexAutoLock lock(mSurfaceLock); - for (const auto& surface : mDMABufSurfaces) { -- auto* vaapiSurface = surface->AsVideoFrameSurfaceVAAPI(); -- if (!vaapiSurface->IsUsed()) { -- vaapiSurface->ReleaseVAAPIData(); -+ if (!surface->IsUsed()) { -+ surface->ReleaseVAAPIData(); - } - } - } - --RefPtr VideoFramePool::GetFreeVideoFrameSurface() { -+RefPtr> -+VideoFramePool::GetFreeVideoFrameSurface() { - for (auto& surface : mDMABufSurfaces) { - if (surface->IsUsed()) { - continue; - } -- auto* vaapiSurface = surface->AsVideoFrameSurfaceVAAPI(); -- vaapiSurface->ReleaseVAAPIData(); -+ surface->ReleaseVAAPIData(); - return surface; - } - return nullptr; - } - --RefPtr VideoFramePool::GetVideoFrameSurface( -+RefPtr> -+VideoFramePool::GetVideoFrameSurface( - VADRMPRIMESurfaceDescriptor& aVaDesc, AVCodecContext* aAVCodecContext, - AVFrame* aAVFrame, FFmpegLibWrapper* aLib) { - if (aVaDesc.fourcc != VA_FOURCC_NV12 && aVaDesc.fourcc != VA_FOURCC_YV12 && -@@ -113,7 +114,7 @@ RefPtr VideoFramePool::GetVideoFrameSurface( - } - - MutexAutoLock lock(mSurfaceLock); -- RefPtr videoSurface = GetFreeVideoFrameSurface(); -+ RefPtr> videoSurface = GetFreeVideoFrameSurface(); - if (!videoSurface) { - RefPtr surface = - DMABufSurfaceYUV::CreateYUVSurface(aVaDesc); -@@ -121,7 +122,7 @@ RefPtr VideoFramePool::GetVideoFrameSurface( - return nullptr; - } - FFMPEG_LOG("Created new VA-API DMABufSurface UID = %d", surface->GetUID()); -- RefPtr surf = new VideoFrameSurfaceVAAPI(surface); -+ RefPtr> surf = new VideoFrameSurface(surface); - if (!mTextureCreationWorks) { - mTextureCreationWorks = Some(surface->VerifyTextureCreation()); - } -@@ -138,11 +139,8 @@ RefPtr VideoFramePool::GetVideoFrameSurface( - } - FFMPEG_LOG("Reusing VA-API DMABufSurface UID = %d", surface->GetUID()); - } -- -- auto* vaapiSurface = videoSurface->AsVideoFrameSurfaceVAAPI(); -- vaapiSurface->LockVAAPIData(aAVCodecContext, aAVFrame, aLib); -- vaapiSurface->MarkAsUsed(); -- -+ videoSurface->LockVAAPIData(aAVCodecContext, aAVFrame, aLib); -+ videoSurface->MarkAsUsed(); - return videoSurface; - } - -diff --git a/dom/media/platforms/ffmpeg/FFmpegVideoFramePool.h b/dom/media/platforms/ffmpeg/FFmpegVideoFramePool.h -index c506d22..c89b418 100644 ---- a/dom/media/platforms/ffmpeg/FFmpegVideoFramePool.h -+++ b/dom/media/platforms/ffmpeg/FFmpegVideoFramePool.h -@@ -7,8 +7,9 @@ - #ifndef __FFmpegVideoFramePool_h__ - #define __FFmpegVideoFramePool_h__ - --#include "FFmpegVideoDecoder.h" - #include "FFmpegLibWrapper.h" -+#include "FFmpegLibs.h" -+#include "FFmpegLog.h" - - #include "mozilla/layers/DMABUFSurfaceImage.h" - #include "mozilla/widget/DMABufLibWrapper.h" -@@ -16,43 +17,16 @@ - - namespace mozilla { - --class VideoFramePool; --class VideoFrameSurfaceVAAPI; -- --class VideoFrameSurface { -- public: -- NS_INLINE_DECL_THREADSAFE_REFCOUNTING(VideoFrameSurface) -- -- VideoFrameSurface() = default; -- -- virtual VideoFrameSurfaceVAAPI* AsVideoFrameSurfaceVAAPI() { return nullptr; } -- -- virtual void SetYUVColorSpace(gfx::YUVColorSpace aColorSpace) = 0; -- virtual void SetColorRange(gfx::ColorRange aColorRange) = 0; -- -- virtual RefPtr GetDMABufSurface() { return nullptr; }; -- virtual RefPtr GetAsImage() = 0; -- -- // Don't allow VideoFrameSurface plain copy as it leads to -- // unexpected DMABufSurface/HW buffer releases and we don't want to -- // deep copy them. -- VideoFrameSurface(const VideoFrameSurface&) = delete; -- const VideoFrameSurface& operator=(VideoFrameSurface const&) = delete; -- -- protected: -- virtual ~VideoFrameSurface(){}; --}; -- --// VideoFrameSurfaceVAAPI holds a reference to GPU data with a video frame. -+// VideoFrameSurface holds a reference to GPU data with a video frame. - // - // Actual GPU pixel data are stored at DMABufSurface and - // DMABufSurface is passed to gecko GL rendering pipeline via. - // DMABUFSurfaceImage. - // --// VideoFrameSurfaceVAAPI can optionally hold VA-API ffmpeg related data to keep -+// VideoFrameSurface can optionally hold VA-API ffmpeg related data to keep - // GPU data locked untill we need them. - // --// VideoFrameSurfaceVAAPI is used for both HW accelerated video decoding -+// VideoFrameSurface is used for both HW accelerated video decoding - // (VA-API) and ffmpeg SW decoding. - // - // VA-API scenario -@@ -72,13 +46,24 @@ class VideoFrameSurface { - // Unfortunately there isn't any obvious way how to mark particular VASurface - // as used. The best we can do is to hold a reference to particular AVBuffer - // from decoded AVFrame and AVHWFramesContext which owns the AVBuffer. --class VideoFrameSurfaceVAAPI final : public VideoFrameSurface { -- friend class VideoFramePool; -+template -+class VideoFrameSurface {}; -+template <> -+class VideoFrameSurface; -+ -+template -+class VideoFramePool {}; -+template <> -+class VideoFramePool; -+ -+template <> -+class VideoFrameSurface { -+ friend class VideoFramePool; - - public: -- explicit VideoFrameSurfaceVAAPI(DMABufSurface* aSurface); -+ NS_INLINE_DECL_THREADSAFE_REFCOUNTING(VideoFrameSurface) - -- VideoFrameSurfaceVAAPI* AsVideoFrameSurfaceVAAPI() final { return this; } -+ explicit VideoFrameSurface(DMABufSurface* aSurface); - - void SetYUVColorSpace(mozilla::gfx::YUVColorSpace aColorSpace) { - mSurface->GetAsDMABufSurfaceYUV()->SetYUVColorSpace(aColorSpace); -@@ -93,6 +78,12 @@ class VideoFrameSurfaceVAAPI final : public VideoFrameSurface { - - RefPtr GetAsImage(); - -+ // Don't allow VideoFrameSurface plain copy as it leads to -+ // unexpected DMABufSurface/HW buffer releases and we don't want to -+ // deep copy them. -+ VideoFrameSurface(const VideoFrameSurface&) = delete; -+ const VideoFrameSurface& operator=(VideoFrameSurface const&) = delete; -+ - protected: - // Lock VAAPI related data - void LockVAAPIData(AVCodecContext* aAVCodecContext, AVFrame* aAVFrame, -@@ -107,7 +98,7 @@ class VideoFrameSurfaceVAAPI final : public VideoFrameSurface { - void MarkAsUsed() { mSurface->GlobalRefAdd(); } - - private: -- virtual ~VideoFrameSurfaceVAAPI(); -+ virtual ~VideoFrameSurface(); - - const RefPtr mSurface; - const FFmpegLibWrapper* mLib; -@@ -116,23 +107,24 @@ class VideoFrameSurfaceVAAPI final : public VideoFrameSurface { - }; - - // VideoFramePool class is thread-safe. --class VideoFramePool final { -+template <> -+class VideoFramePool { - public: - VideoFramePool(); - ~VideoFramePool(); - -- RefPtr GetVideoFrameSurface( -+ RefPtr> GetVideoFrameSurface( - VADRMPRIMESurfaceDescriptor& aVaDesc, AVCodecContext* aAVCodecContext, - AVFrame* aAVFrame, FFmpegLibWrapper* aLib); - void ReleaseUnusedVAAPIFrames(); - - private: -- RefPtr GetFreeVideoFrameSurface(); -+ RefPtr> GetFreeVideoFrameSurface(); - - private: - // Protect mDMABufSurfaces pool access - Mutex mSurfaceLock; -- nsTArray> mDMABufSurfaces; -+ nsTArray>> mDMABufSurfaces; - // We may fail to create texture over DMABuf memory due to driver bugs so - // check that before we export first DMABuf video frame. - Maybe mTextureCreationWorks; -diff --git a/dom/media/platforms/ffmpeg/ffmpeg58/moz.build b/dom/media/platforms/ffmpeg/ffmpeg58/moz.build -index de2611e..8ffdaae 100644 ---- a/dom/media/platforms/ffmpeg/ffmpeg58/moz.build -+++ b/dom/media/platforms/ffmpeg/ffmpeg58/moz.build -@@ -30,6 +30,9 @@ if CONFIG['MOZ_WAYLAND']: - CXXFLAGS += CONFIG['MOZ_GTK3_CFLAGS'] - DEFINES['MOZ_WAYLAND_USE_VAAPI'] = 1 - USE_LIBS += ['mozva'] -+ UNIFIED_SOURCES += [ -+ '../FFmpegVideoFramePool.cpp', -+ ] - - include("/ipc/chromium/chromium-config.mozbuild") - -diff --git a/dom/media/platforms/ffmpeg/ffmpeg59/moz.build b/dom/media/platforms/ffmpeg/ffmpeg59/moz.build -index 7d28420..1da28a1 100644 ---- a/dom/media/platforms/ffmpeg/ffmpeg59/moz.build -+++ b/dom/media/platforms/ffmpeg/ffmpeg59/moz.build -@@ -30,6 +30,9 @@ if CONFIG["MOZ_WAYLAND"]: - CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"] - DEFINES["MOZ_WAYLAND_USE_VAAPI"] = 1 - USE_LIBS += ["mozva"] -+ UNIFIED_SOURCES += [ -+ "../FFmpegVideoFramePool.cpp", -+ ] - - include("/ipc/chromium/chromium-config.mozbuild") - diff --git a/srcpkgs/firefox/patches/sndio.patch b/srcpkgs/firefox/patches/sndio.patch deleted file mode 100644 index fa3b6fa8ab6..00000000000 --- a/srcpkgs/firefox/patches/sndio.patch +++ /dev/null @@ -1,52 +0,0 @@ ---- a/old-configure.in -+++ b/old-configure.in -@@ -2818,6 +2818,22 @@ - _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES" - fi - -+dnl ================================== -+dnl = Check sndio availability -+dnl ================================== -+ -+MOZ_ARG_ENABLE_BOOL(sndio, -+[ --enable-sndio Enable sndio support], -+ MOZ_SNDIO=1, -+ MOZ_SNDIO=) -+ -+if test -n "$MOZ_SNDIO"; then -+ MOZ_SNDIO_LIBS="-lsndio" -+ AC_SUBST_LIST(MOZ_SNDIO_LIBS) -+fi -+ -+AC_SUBST(MOZ_SNDIO) -+ - dnl ======================================================== - dnl = - dnl = Maintainer debug option (no --enable equivalent) ---- a/media/libcubeb/src/moz.build -+++ b/media/libcubeb/src/moz.build -@@ -44,11 +44,13 @@ - ] - DEFINES['USE_JACK'] = True - --if CONFIG['OS_ARCH'] == 'OpenBSD': -+if CONFIG['MOZ_SNDIO']: - SOURCES += [ - 'cubeb_sndio.c', - ] - DEFINES['USE_SNDIO'] = True -+ -+if CONFIG['OS_ARCH'] == 'OpenBSD': - DEFINES['DISABLE_LIBSNDIO_DLOPEN'] = True - - if CONFIG['OS_TARGET'] == 'Darwin': ---- a/build/moz.configure/old.configure 2020-06-30 12:17:04.087609070 +0200 -+++ b/build/moz.configure/old.configure 2020-06-30 12:17:04.087609070 +0200 -@@ -88,6 +88,7 @@ - @old_configure_options( - "--cache-file", - "--datadir", -+ "--enable-sndio", - "--enable-official-branding", - "--includedir", - "--libdir", diff --git a/srcpkgs/firefox/template b/srcpkgs/firefox/template index 8ee3b78f809..021bb6aee82 100644 --- a/srcpkgs/firefox/template +++ b/srcpkgs/firefox/template @@ -3,7 +3,7 @@ # THIS PKG MUST BE SYNCHRONIZED WITH "srcpkgs/firefox-i18n". # pkgname=firefox -version=99.0 +version=100.0 revision=1 build_helper="rust" short_desc="Mozilla Firefox web browser" @@ -11,7 +11,7 @@ maintainer="Duncaen " license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later" homepage="https://www.mozilla.org/firefox/" distfiles="${MOZILLA_SITE}/${pkgname}/releases/${version}/source/${pkgname}-${version}.source.tar.xz" -checksum=513f8d2cafa39a2d50f2c4a25cc48093e89f715a706b941170fa48e397976327 +checksum=664c0cc4e0fb70886aa4e652d144996045d533a18eebc7d61093103cbb2d5e7f lib32disabled=yes @@ -172,7 +172,7 @@ do_build() { export MOZ_MAKE_FLAGS="${makejobs}" export MOZ_NOSPAM=1 export MOZBUILD_STATE_PATH="${wrksrc}/mozbuild" - export MACH_USE_SYSTEM_PYTHON=1 + export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system export AS=$CC @@ -191,7 +191,7 @@ ac_add_options --enable-default-toolkit=$(vopt_if wayland 'cairo-gtk3-wayland' ' ./mach build } do_install() { - export MACH_USE_SYSTEM_PYTHON=1 + export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system export MOZBUILD_STATE_PATH="${wrksrc}/mozbuild" DESTDIR="$DESTDIR" ./mach install