Updated to 99.0
This commit is contained in:
parent
73ee25f87e
commit
35a5afbafa
2
.gitignore
vendored
2
.gitignore
vendored
@ -501,3 +501,5 @@ firefox-3.6.4.source.tar.bz2
|
|||||||
/firefox-langpacks-98.0-20220305.tar.xz
|
/firefox-langpacks-98.0-20220305.tar.xz
|
||||||
/firefox-98.0.2.source.tar.xz
|
/firefox-98.0.2.source.tar.xz
|
||||||
/firefox-langpacks-98.0.2-20220331.tar.xz
|
/firefox-langpacks-98.0.2-20220331.tar.xz
|
||||||
|
/firefox-99.0.source.tar.xz
|
||||||
|
/firefox-langpacks-99.0-20220331.tar.xz
|
||||||
|
34
D139022.diff
34
D139022.diff
@ -1,34 +0,0 @@
|
|||||||
diff --git a/dom/animation/TimingParams.h b/dom/animation/TimingParams.h
|
|
||||||
--- a/dom/animation/TimingParams.h
|
|
||||||
+++ b/dom/animation/TimingParams.h
|
|
||||||
@@ -31,22 +31,19 @@
|
|
||||||
struct TimingParams {
|
|
||||||
constexpr TimingParams() = default;
|
|
||||||
|
|
||||||
- constexpr TimingParams(float aDuration, float aDelay, float aIterationCount,
|
|
||||||
- dom::PlaybackDirection aDirection,
|
|
||||||
- dom::FillMode aFillMode)
|
|
||||||
+ TimingParams(float aDuration, float aDelay, float aIterationCount,
|
|
||||||
+ dom::PlaybackDirection aDirection, dom::FillMode aFillMode)
|
|
||||||
: mIterations(aIterationCount), mDirection(aDirection), mFill(aFillMode) {
|
|
||||||
mDuration.emplace(StickyTimeDuration::FromMilliseconds(aDuration));
|
|
||||||
mDelay = TimeDuration::FromMilliseconds(aDelay);
|
|
||||||
Update();
|
|
||||||
}
|
|
||||||
|
|
||||||
- constexpr TimingParams(const TimeDuration& aDuration,
|
|
||||||
- const TimeDuration& aDelay,
|
|
||||||
- const TimeDuration& aEndDelay, float aIterations,
|
|
||||||
- float aIterationStart,
|
|
||||||
- dom::PlaybackDirection aDirection,
|
|
||||||
- dom::FillMode aFillMode,
|
|
||||||
- Maybe<ComputedTimingFunction>&& aFunction)
|
|
||||||
+ TimingParams(const TimeDuration& aDuration, const TimeDuration& aDelay,
|
|
||||||
+ const TimeDuration& aEndDelay, float aIterations,
|
|
||||||
+ float aIterationStart, dom::PlaybackDirection aDirection,
|
|
||||||
+ dom::FillMode aFillMode,
|
|
||||||
+ Maybe<ComputedTimingFunction>&& aFunction)
|
|
||||||
: mDelay(aDelay),
|
|
||||||
mEndDelay(aEndDelay),
|
|
||||||
mIterations(aIterations),
|
|
||||||
|
|
94
D139078.diff
94
D139078.diff
@ -1,94 +0,0 @@
|
|||||||
diff --git a/gfx/wr/swgl/src/glsl.h b/gfx/wr/swgl/src/glsl.h
|
|
||||||
--- a/gfx/wr/swgl/src/glsl.h
|
|
||||||
+++ b/gfx/wr/swgl/src/glsl.h
|
|
||||||
@@ -2301,20 +2301,12 @@
|
|
||||||
const vec2& operator[](int index) const { return data[index]; }
|
|
||||||
mat2() = default;
|
|
||||||
|
|
||||||
- IMPLICIT mat2(Float a) {
|
|
||||||
- data[0] = vec2(a);
|
|
||||||
- data[1] = vec2(a);
|
|
||||||
- }
|
|
||||||
+ IMPLICIT constexpr mat2(Float a) : data{vec2(a), vec2(a)} {}
|
|
||||||
|
|
||||||
- mat2(vec2 a, vec2 b) {
|
|
||||||
- data[0] = a;
|
|
||||||
- data[1] = b;
|
|
||||||
- }
|
|
||||||
+ constexpr mat2(vec2 a, vec2 b) : data{a, b} {}
|
|
||||||
IMPLICIT mat2(const mat4& mat);
|
|
||||||
- IMPLICIT constexpr mat2(mat2_scalar s) {
|
|
||||||
- data[0] = vec2(s.data[0]);
|
|
||||||
- data[1] = vec2(s.data[1]);
|
|
||||||
- }
|
|
||||||
+ IMPLICIT constexpr mat2(mat2_scalar s)
|
|
||||||
+ : data{vec2(s.data[0]), vec2(s.data[1])} {}
|
|
||||||
|
|
||||||
friend vec2 operator*(mat2 m, vec2 v) {
|
|
||||||
vec2 u;
|
|
||||||
@@ -2404,30 +2396,19 @@
|
|
||||||
vec3& operator[](int index) { return data[index]; }
|
|
||||||
const vec3& operator[](int index) const { return data[index]; }
|
|
||||||
mat3() = default;
|
|
||||||
- mat3(vec3 a, vec3 b, vec3 c) {
|
|
||||||
- data[0] = a;
|
|
||||||
- data[1] = b;
|
|
||||||
- data[2] = c;
|
|
||||||
- }
|
|
||||||
+ constexpr mat3(vec3 a, vec3 b, vec3 c) : data{a, b, c} {}
|
|
||||||
|
|
||||||
- IMPLICIT constexpr mat3(mat3_scalar s) {
|
|
||||||
- data[0] = vec3(s.data[0]);
|
|
||||||
- data[1] = vec3(s.data[1]);
|
|
||||||
- data[2] = vec3(s.data[2]);
|
|
||||||
- }
|
|
||||||
- constexpr mat3(mat3_scalar s0, mat3_scalar s1, mat3_scalar s2,
|
|
||||||
- mat3_scalar s3) {
|
|
||||||
- data[0] = vec3(s0.data[0], s1.data[0], s2.data[0], s3.data[0]);
|
|
||||||
- data[1] = vec3(s0.data[1], s1.data[1], s2.data[1], s3.data[1]);
|
|
||||||
- data[2] = vec3(s0.data[2], s1.data[2], s2.data[2], s3.data[2]);
|
|
||||||
- }
|
|
||||||
+ IMPLICIT constexpr mat3(mat3_scalar s)
|
|
||||||
+ : data{vec3(s.data[0]), vec3(s.data[1]), vec3(s.data[2])} {}
|
|
||||||
+
|
|
||||||
+ constexpr mat3(mat3_scalar s0, mat3_scalar s1, mat3_scalar s2, mat3_scalar s3)
|
|
||||||
+ : data{vec3(s0.data[0], s1.data[0], s2.data[0], s3.data[0]),
|
|
||||||
+ vec3(s0.data[1], s1.data[1], s2.data[1], s3.data[1]),
|
|
||||||
+ vec3(s0.data[2], s1.data[2], s2.data[2], s3.data[2])} {}
|
|
||||||
|
|
||||||
constexpr mat3(Float d1, Float d2, Float d3, Float d4, Float d5, Float d6,
|
|
||||||
- Float d7, Float d8, Float d9) {
|
|
||||||
- data[0] = vec3(d1, d2, d3);
|
|
||||||
- data[1] = vec3(d4, d5, d6);
|
|
||||||
- data[2] = vec3(d7, d8, d9);
|
|
||||||
- }
|
|
||||||
+ Float d7, Float d8, Float d9)
|
|
||||||
+ : data{vec3(d1, d2, d3), vec3(d4, d5, d6), vec3(d7, d8, d9)} {}
|
|
||||||
|
|
||||||
IMPLICIT mat3(const mat4& mat);
|
|
||||||
|
|
||||||
@@ -2597,19 +2578,11 @@
|
|
||||||
vec4 data[4];
|
|
||||||
|
|
||||||
mat4() = default;
|
|
||||||
- IMPLICIT constexpr mat4(mat4_scalar s) {
|
|
||||||
- data[0] = vec4(s.data[0]);
|
|
||||||
- data[1] = vec4(s.data[1]);
|
|
||||||
- data[2] = vec4(s.data[2]);
|
|
||||||
- data[3] = vec4(s.data[3]);
|
|
||||||
- }
|
|
||||||
+ IMPLICIT constexpr mat4(mat4_scalar s)
|
|
||||||
+ : data{vec4(s.data[0]), vec4(s.data[1]), vec4(s.data[2]),
|
|
||||||
+ vec4(s.data[3])} {}
|
|
||||||
|
|
||||||
- mat4(vec4 a, vec4 b, vec4 c, vec4 d) {
|
|
||||||
- data[0] = a;
|
|
||||||
- data[1] = b;
|
|
||||||
- data[2] = c;
|
|
||||||
- data[3] = d;
|
|
||||||
- }
|
|
||||||
+ constexpr mat4(vec4 a, vec4 b, vec4 c, vec4 d) : data{a, b, c, d} {}
|
|
||||||
|
|
||||||
vec4& operator[](int index) { return data[index]; }
|
|
||||||
const vec4& operator[](int index) const { return data[index]; }
|
|
||||||
|
|
13
D139088.diff
13
D139088.diff
@ -1,13 +0,0 @@
|
|||||||
diff --git a/gfx/wr/swgl/src/gl.cc b/gfx/wr/swgl/src/gl.cc
|
|
||||||
--- a/gfx/wr/swgl/src/gl.cc
|
|
||||||
+++ b/gfx/wr/swgl/src/gl.cc
|
|
||||||
@@ -82,7 +82,7 @@
|
|
||||||
|
|
||||||
#define FALLTHROUGH [[fallthrough]]
|
|
||||||
|
|
||||||
-#ifdef MOZILLA_CLIENT
|
|
||||||
+#if defined(MOZILLA_CLIENT) && defined(MOZ_CLANG_PLUGIN)
|
|
||||||
# define IMPLICIT __attribute__((annotate("moz_implicit")))
|
|
||||||
#else
|
|
||||||
# define IMPLICIT
|
|
||||||
|
|
13808
D139696.diff
13808
D139696.diff
File diff suppressed because it is too large
Load Diff
27
D139697.diff
27
D139697.diff
@ -1,27 +0,0 @@
|
|||||||
diff --git a/dom/media/platforms/ffmpeg/ffmpeg58/moz.build b/dom/media/platforms/ffmpeg/ffmpeg58/moz.build
|
|
||||||
--- a/dom/media/platforms/ffmpeg/ffmpeg58/moz.build
|
|
||||||
+++ b/dom/media/platforms/ffmpeg/ffmpeg58/moz.build
|
|
||||||
@@ -29,9 +29,6 @@
|
|
||||||
if CONFIG['MOZ_WAYLAND']:
|
|
||||||
CXXFLAGS += CONFIG['MOZ_GTK3_CFLAGS']
|
|
||||||
DEFINES['MOZ_WAYLAND_USE_VAAPI'] = 1
|
|
||||||
- UNIFIED_SOURCES += [
|
|
||||||
- '../FFmpegVideoFramePool.cpp',
|
|
||||||
- ]
|
|
||||||
USE_LIBS += ['mozva']
|
|
||||||
|
|
||||||
include("/ipc/chromium/chromium-config.mozbuild")
|
|
||||||
diff --git a/dom/media/platforms/ffmpeg/ffvpx/moz.build b/dom/media/platforms/ffmpeg/ffvpx/moz.build
|
|
||||||
--- a/dom/media/platforms/ffmpeg/ffvpx/moz.build
|
|
||||||
+++ b/dom/media/platforms/ffmpeg/ffvpx/moz.build
|
|
||||||
@@ -41,6 +41,9 @@
|
|
||||||
CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
|
|
||||||
DEFINES["MOZ_WAYLAND_USE_VAAPI"] = 1
|
|
||||||
USE_LIBS += ["mozva"]
|
|
||||||
+ UNIFIED_SOURCES += [
|
|
||||||
+ "../FFmpegVideoFramePool.cpp",
|
|
||||||
+ ]
|
|
||||||
|
|
||||||
include("/ipc/chromium/chromium-config.mozbuild")
|
|
||||||
|
|
||||||
|
|
191
D139698.diff
191
D139698.diff
@ -1,191 +0,0 @@
|
|||||||
diff --git a/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp b/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp
|
|
||||||
--- a/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp
|
|
||||||
+++ b/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp
|
|
||||||
@@ -64,14 +64,16 @@
|
|
||||||
AV_FUNC_56 = 1 << 3,
|
|
||||||
AV_FUNC_57 = 1 << 4,
|
|
||||||
AV_FUNC_58 = 1 << 5,
|
|
||||||
+ AV_FUNC_59 = 1 << 6,
|
|
||||||
AV_FUNC_AVUTIL_53 = AV_FUNC_53 | AV_FUNC_AVUTIL_MASK,
|
|
||||||
AV_FUNC_AVUTIL_54 = AV_FUNC_54 | AV_FUNC_AVUTIL_MASK,
|
|
||||||
AV_FUNC_AVUTIL_55 = AV_FUNC_55 | AV_FUNC_AVUTIL_MASK,
|
|
||||||
AV_FUNC_AVUTIL_56 = AV_FUNC_56 | AV_FUNC_AVUTIL_MASK,
|
|
||||||
AV_FUNC_AVUTIL_57 = AV_FUNC_57 | AV_FUNC_AVUTIL_MASK,
|
|
||||||
AV_FUNC_AVUTIL_58 = AV_FUNC_58 | AV_FUNC_AVUTIL_MASK,
|
|
||||||
+ AV_FUNC_AVUTIL_59 = AV_FUNC_59 | AV_FUNC_AVUTIL_MASK,
|
|
||||||
AV_FUNC_AVCODEC_ALL = AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 | AV_FUNC_56 |
|
|
||||||
- AV_FUNC_57 | AV_FUNC_58,
|
|
||||||
+ AV_FUNC_57 | AV_FUNC_58 | AV_FUNC_59,
|
|
||||||
AV_FUNC_AVUTIL_ALL = AV_FUNC_AVCODEC_ALL | AV_FUNC_AVUTIL_MASK
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -94,6 +96,9 @@
|
|
||||||
case 58:
|
|
||||||
version = AV_FUNC_58;
|
|
||||||
break;
|
|
||||||
+ case 59:
|
|
||||||
+ version = AV_FUNC_59;
|
|
||||||
+ break;
|
|
||||||
default:
|
|
||||||
FFMPEG_LOG("Unknown avcodec version");
|
|
||||||
Unlink();
|
|
||||||
@@ -128,15 +133,19 @@
|
|
||||||
: LinkResult::MissingLibAVFunction; \
|
|
||||||
}
|
|
||||||
|
|
||||||
- AV_FUNC(av_lockmgr_register, AV_FUNC_AVCODEC_ALL)
|
|
||||||
+ AV_FUNC(av_lockmgr_register, AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 |
|
|
||||||
+ AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58)
|
|
||||||
AV_FUNC(avcodec_alloc_context3, AV_FUNC_AVCODEC_ALL)
|
|
||||||
AV_FUNC(avcodec_close, AV_FUNC_AVCODEC_ALL)
|
|
||||||
- AV_FUNC(avcodec_decode_audio4, AV_FUNC_AVCODEC_ALL)
|
|
||||||
- AV_FUNC(avcodec_decode_video2, AV_FUNC_AVCODEC_ALL)
|
|
||||||
+ AV_FUNC(avcodec_decode_audio4, AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 |
|
|
||||||
+ AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58)
|
|
||||||
+ AV_FUNC(avcodec_decode_video2, AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 |
|
|
||||||
+ AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58)
|
|
||||||
AV_FUNC(avcodec_find_decoder, AV_FUNC_AVCODEC_ALL)
|
|
||||||
AV_FUNC(avcodec_flush_buffers, AV_FUNC_AVCODEC_ALL)
|
|
||||||
AV_FUNC(avcodec_open2, AV_FUNC_AVCODEC_ALL)
|
|
||||||
- AV_FUNC(avcodec_register_all, AV_FUNC_AVCODEC_ALL)
|
|
||||||
+ AV_FUNC(avcodec_register_all, AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 |
|
|
||||||
+ AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58)
|
|
||||||
AV_FUNC(av_init_packet, AV_FUNC_AVCODEC_ALL)
|
|
||||||
AV_FUNC(av_parser_init, AV_FUNC_AVCODEC_ALL)
|
|
||||||
AV_FUNC(av_parser_close, AV_FUNC_AVCODEC_ALL)
|
|
||||||
@@ -145,49 +154,56 @@
|
|
||||||
AV_FUNC(avcodec_alloc_frame, (AV_FUNC_53 | AV_FUNC_54))
|
|
||||||
AV_FUNC(avcodec_get_frame_defaults, (AV_FUNC_53 | AV_FUNC_54))
|
|
||||||
AV_FUNC(avcodec_free_frame, AV_FUNC_54)
|
|
||||||
- AV_FUNC(avcodec_send_packet, AV_FUNC_58)
|
|
||||||
- AV_FUNC(avcodec_receive_frame, AV_FUNC_58)
|
|
||||||
+ AV_FUNC(avcodec_send_packet, AV_FUNC_58 | AV_FUNC_59)
|
|
||||||
+ AV_FUNC(avcodec_receive_frame, AV_FUNC_58 | AV_FUNC_59)
|
|
||||||
AV_FUNC(avcodec_default_get_buffer2,
|
|
||||||
- (AV_FUNC_55 | AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58))
|
|
||||||
+ (AV_FUNC_55 | AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58 | AV_FUNC_59))
|
|
||||||
AV_FUNC_OPTION(av_rdft_init, AV_FUNC_AVCODEC_ALL)
|
|
||||||
AV_FUNC_OPTION(av_rdft_calc, AV_FUNC_AVCODEC_ALL)
|
|
||||||
AV_FUNC_OPTION(av_rdft_end, AV_FUNC_AVCODEC_ALL)
|
|
||||||
AV_FUNC(av_log_set_level, AV_FUNC_AVUTIL_ALL)
|
|
||||||
AV_FUNC(av_malloc, AV_FUNC_AVUTIL_ALL)
|
|
||||||
AV_FUNC(av_freep, AV_FUNC_AVUTIL_ALL)
|
|
||||||
- AV_FUNC(av_frame_alloc, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 |
|
|
||||||
- AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58))
|
|
||||||
- AV_FUNC(av_frame_free, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 |
|
|
||||||
- AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58))
|
|
||||||
- AV_FUNC(av_frame_unref, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 |
|
|
||||||
- AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58))
|
|
||||||
+ AV_FUNC(av_frame_alloc,
|
|
||||||
+ (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 |
|
|
||||||
+ AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59))
|
|
||||||
+ AV_FUNC(av_frame_free,
|
|
||||||
+ (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 |
|
|
||||||
+ AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59))
|
|
||||||
+ AV_FUNC(av_frame_unref,
|
|
||||||
+ (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 |
|
|
||||||
+ AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59))
|
|
||||||
AV_FUNC(av_image_check_size, AV_FUNC_AVUTIL_ALL)
|
|
||||||
AV_FUNC(av_image_get_buffer_size, AV_FUNC_AVUTIL_ALL)
|
|
||||||
- AV_FUNC_OPTION(av_buffer_get_opaque,
|
|
||||||
- (AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58))
|
|
||||||
- AV_FUNC(av_buffer_create, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 |
|
|
||||||
- AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58))
|
|
||||||
+ AV_FUNC_OPTION(av_buffer_get_opaque, (AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 |
|
|
||||||
+ AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59))
|
|
||||||
+ AV_FUNC(av_buffer_create,
|
|
||||||
+ (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 |
|
|
||||||
+ AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59))
|
|
||||||
AV_FUNC_OPTION(av_frame_get_colorspace, AV_FUNC_AVUTIL_ALL)
|
|
||||||
AV_FUNC_OPTION(av_frame_get_color_range, AV_FUNC_AVUTIL_ALL)
|
|
||||||
|
|
||||||
#ifdef MOZ_WAYLAND
|
|
||||||
- AV_FUNC_OPTION_SILENT(avcodec_get_hw_config, AV_FUNC_58)
|
|
||||||
- AV_FUNC_OPTION_SILENT(av_codec_iterate, AV_FUNC_58)
|
|
||||||
- AV_FUNC_OPTION_SILENT(av_codec_is_decoder, AV_FUNC_58)
|
|
||||||
- AV_FUNC_OPTION_SILENT(av_hwdevice_ctx_init, AV_FUNC_58)
|
|
||||||
- AV_FUNC_OPTION_SILENT(av_hwdevice_ctx_alloc, AV_FUNC_58)
|
|
||||||
- AV_FUNC_OPTION_SILENT(av_hwdevice_hwconfig_alloc, AV_FUNC_58)
|
|
||||||
- AV_FUNC_OPTION_SILENT(av_hwdevice_get_hwframe_constraints, AV_FUNC_58)
|
|
||||||
- AV_FUNC_OPTION_SILENT(av_hwframe_constraints_free, AV_FUNC_58)
|
|
||||||
- AV_FUNC_OPTION_SILENT(av_buffer_ref, AV_FUNC_AVUTIL_58)
|
|
||||||
- AV_FUNC_OPTION_SILENT(av_buffer_unref, AV_FUNC_AVUTIL_58)
|
|
||||||
- AV_FUNC_OPTION_SILENT(av_hwframe_transfer_get_formats, AV_FUNC_58)
|
|
||||||
- AV_FUNC_OPTION_SILENT(av_hwdevice_ctx_create_derived, AV_FUNC_58)
|
|
||||||
- AV_FUNC_OPTION_SILENT(av_hwframe_ctx_alloc, AV_FUNC_58)
|
|
||||||
- AV_FUNC_OPTION_SILENT(av_dict_set, AV_FUNC_58)
|
|
||||||
- AV_FUNC_OPTION_SILENT(av_dict_free, AV_FUNC_58)
|
|
||||||
- AV_FUNC_OPTION_SILENT(avcodec_get_name, AV_FUNC_58)
|
|
||||||
- AV_FUNC_OPTION_SILENT(av_get_pix_fmt_string, AV_FUNC_AVUTIL_58)
|
|
||||||
+ AV_FUNC_OPTION_SILENT(avcodec_get_hw_config, AV_FUNC_58 | AV_FUNC_59)
|
|
||||||
+ AV_FUNC_OPTION_SILENT(av_codec_iterate, AV_FUNC_58 | AV_FUNC_59)
|
|
||||||
+ AV_FUNC_OPTION_SILENT(av_codec_is_decoder, AV_FUNC_58 | AV_FUNC_59)
|
|
||||||
+ AV_FUNC_OPTION_SILENT(av_hwdevice_ctx_init, AV_FUNC_58 | AV_FUNC_59)
|
|
||||||
+ AV_FUNC_OPTION_SILENT(av_hwdevice_ctx_alloc, AV_FUNC_58 | AV_FUNC_59)
|
|
||||||
+ AV_FUNC_OPTION_SILENT(av_hwdevice_hwconfig_alloc, AV_FUNC_58 | AV_FUNC_59)
|
|
||||||
+ AV_FUNC_OPTION_SILENT(av_hwdevice_get_hwframe_constraints,
|
|
||||||
+ AV_FUNC_58 | AV_FUNC_59)
|
|
||||||
+ AV_FUNC_OPTION_SILENT(av_hwframe_constraints_free, AV_FUNC_58 | AV_FUNC_59)
|
|
||||||
+ AV_FUNC_OPTION_SILENT(av_buffer_ref, AV_FUNC_AVUTIL_58 | AV_FUNC_59)
|
|
||||||
+ AV_FUNC_OPTION_SILENT(av_buffer_unref, AV_FUNC_AVUTIL_58 | AV_FUNC_59)
|
|
||||||
+ AV_FUNC_OPTION_SILENT(av_hwframe_transfer_get_formats,
|
|
||||||
+ AV_FUNC_58 | AV_FUNC_59)
|
|
||||||
+ AV_FUNC_OPTION_SILENT(av_hwdevice_ctx_create_derived, AV_FUNC_58 | AV_FUNC_59)
|
|
||||||
+ AV_FUNC_OPTION_SILENT(av_hwframe_ctx_alloc, AV_FUNC_58 | AV_FUNC_59)
|
|
||||||
+ AV_FUNC_OPTION_SILENT(av_dict_set, AV_FUNC_58 | AV_FUNC_59)
|
|
||||||
+ AV_FUNC_OPTION_SILENT(av_dict_free, AV_FUNC_58 | AV_FUNC_59)
|
|
||||||
+ AV_FUNC_OPTION_SILENT(avcodec_get_name, AV_FUNC_58 | AV_FUNC_59)
|
|
||||||
+ AV_FUNC_OPTION_SILENT(av_get_pix_fmt_string,
|
|
||||||
+ AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59)
|
|
||||||
#endif
|
|
||||||
#undef AV_FUNC
|
|
||||||
#undef AV_FUNC_OPTION
|
|
||||||
@@ -219,7 +235,9 @@
|
|
||||||
# undef VAD_FUNC_OPTION_SILENT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- avcodec_register_all();
|
|
||||||
+ if (avcodec_register_all) {
|
|
||||||
+ avcodec_register_all();
|
|
||||||
+ }
|
|
||||||
if (MOZ_LOG_TEST(sPDMLog, LogLevel::Debug)) {
|
|
||||||
av_log_set_level(AV_LOG_DEBUG);
|
|
||||||
} else if (MOZ_LOG_TEST(sPDMLog, LogLevel::Info)) {
|
|
||||||
diff --git a/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp b/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
|
|
||||||
--- a/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
|
|
||||||
+++ b/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
|
|
||||||
@@ -27,6 +27,7 @@
|
|
||||||
static const char* sLibs[] = {
|
|
||||||
// clang-format off
|
|
||||||
#if defined(XP_DARWIN)
|
|
||||||
+ "libavcodec.59.dylib",
|
|
||||||
"libavcodec.58.dylib",
|
|
||||||
"libavcodec.57.dylib",
|
|
||||||
"libavcodec.56.dylib",
|
|
||||||
@@ -34,6 +35,7 @@
|
|
||||||
"libavcodec.54.dylib",
|
|
||||||
"libavcodec.53.dylib",
|
|
||||||
#else
|
|
||||||
+ "libavcodec.so.59",
|
|
||||||
"libavcodec.so.58",
|
|
||||||
"libavcodec-ffmpeg.so.58",
|
|
||||||
"libavcodec-ffmpeg.so.57",
|
|
||||||
@@ -76,7 +78,6 @@
|
|
||||||
sLinkStatusLibraryName = lib;
|
|
||||||
return true;
|
|
||||||
case FFmpegLibWrapper::LinkResult::NoProvidedLib:
|
|
||||||
- MOZ_ASSERT_UNREACHABLE("Incorrectly-setup sLibAV");
|
|
||||||
break;
|
|
||||||
case FFmpegLibWrapper::LinkResult::NoAVCodecVersion:
|
|
||||||
if (sLinkStatus > LinkStatus_INVALID_CANDIDATE) {
|
|
||||||
@@ -152,6 +153,9 @@
|
|
||||||
case 58:
|
|
||||||
module = FFmpegDecoderModule<58>::Create(&sLibAV);
|
|
||||||
break;
|
|
||||||
+ case 59:
|
|
||||||
+ module = FFmpegDecoderModule<59>::Create(&sLibAV);
|
|
||||||
+ break;
|
|
||||||
default:
|
|
||||||
module = nullptr;
|
|
||||||
}
|
|
||||||
|
|
127
D139699.diff
127
D139699.diff
@ -1,127 +0,0 @@
|
|||||||
diff --git a/dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp b/dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp
|
|
||||||
--- a/dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp
|
|
||||||
+++ b/dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp
|
|
||||||
@@ -206,15 +206,49 @@
|
|
||||||
media::TimeUnit pts = aSample->mTime;
|
|
||||||
|
|
||||||
while (packet.size > 0) {
|
|
||||||
- int decoded;
|
|
||||||
- int bytesConsumed =
|
|
||||||
+ int decoded = false;
|
|
||||||
+ int bytesConsumed = -1;
|
|
||||||
+#if LIBAVCODEC_VERSION_MAJOR < 59
|
|
||||||
+ bytesConsumed =
|
|
||||||
mLib->avcodec_decode_audio4(mCodecContext, mFrame, &decoded, &packet);
|
|
||||||
-
|
|
||||||
if (bytesConsumed < 0) {
|
|
||||||
NS_WARNING("FFmpeg audio decoder error.");
|
|
||||||
return MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR,
|
|
||||||
RESULT_DETAIL("FFmpeg audio error:%d", bytesConsumed));
|
|
||||||
}
|
|
||||||
+#else
|
|
||||||
+# define AVERROR_OK 0
|
|
||||||
+
|
|
||||||
+ int ret = mLib->avcodec_receive_frame(mCodecContext, mFrame);
|
|
||||||
+ switch (ret) {
|
|
||||||
+ case AVERROR_OK:
|
|
||||||
+ decoded = true;
|
|
||||||
+ break;
|
|
||||||
+ case AVERROR(EAGAIN):
|
|
||||||
+ break;
|
|
||||||
+ case int(AVERROR_EOF): {
|
|
||||||
+ FFMPEG_LOG(" End of stream.");
|
|
||||||
+ return MediaResult(NS_ERROR_DOM_MEDIA_END_OF_STREAM,
|
|
||||||
+ RESULT_DETAIL("End of stream"));
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ ret = mLib->avcodec_send_packet(mCodecContext, &packet);
|
|
||||||
+ switch (ret) {
|
|
||||||
+ case AVERROR_OK:
|
|
||||||
+ bytesConsumed = packet.size;
|
|
||||||
+ break;
|
|
||||||
+ case AVERROR(EAGAIN):
|
|
||||||
+ break;
|
|
||||||
+ case int(AVERROR_EOF):
|
|
||||||
+ FFMPEG_LOG(" End of stream.");
|
|
||||||
+ return MediaResult(NS_ERROR_DOM_MEDIA_END_OF_STREAM,
|
|
||||||
+ RESULT_DETAIL("End of stream"));
|
|
||||||
+ default:
|
|
||||||
+ NS_WARNING("FFmpeg audio decoder error.");
|
|
||||||
+ return MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR,
|
|
||||||
+ RESULT_DETAIL("FFmpeg audio error"));
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
if (decoded) {
|
|
||||||
if (mFrame->format != AV_SAMPLE_FMT_FLT &&
|
|
||||||
diff --git a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp
|
|
||||||
--- a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp
|
|
||||||
+++ b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp
|
|
||||||
@@ -39,6 +39,9 @@
|
|
||||||
# define AV_PIX_FMT_YUV444P10LE PIX_FMT_YUV444P10LE
|
|
||||||
# define AV_PIX_FMT_NONE PIX_FMT_NONE
|
|
||||||
#endif
|
|
||||||
+#if LIBAVCODEC_VERSION_MAJOR > 58
|
|
||||||
+# define AV_PIX_FMT_VAAPI_VLD AV_PIX_FMT_VAAPI
|
|
||||||
+#endif
|
|
||||||
#include "mozilla/PodOperations.h"
|
|
||||||
#include "mozilla/StaticPrefs_media.h"
|
|
||||||
#include "mozilla/TaskQueue.h"
|
|
||||||
@@ -766,6 +769,14 @@
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+static int64_t GetFramePts(AVFrame* aFrame) {
|
|
||||||
+#if LIBAVCODEC_VERSION_MAJOR > 58
|
|
||||||
+ return aFrame->pts;
|
|
||||||
+#else
|
|
||||||
+ return aFrame->pkt_pts;
|
|
||||||
+#endif
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
MediaResult FFmpegVideoDecoder<LIBAV_VER>::DoDecode(
|
|
||||||
MediaRawData* aSample, uint8_t* aData, int aSize, bool* aGotFrame,
|
|
||||||
MediaDataDecoder::DecodedData& aResults) {
|
|
||||||
@@ -831,7 +842,7 @@
|
|
||||||
MediaResult rv;
|
|
||||||
# ifdef MOZ_WAYLAND_USE_VAAPI
|
|
||||||
if (IsHardwareAccelerated()) {
|
|
||||||
- rv = CreateImageVAAPI(mFrame->pkt_pos, mFrame->pkt_pts,
|
|
||||||
+ rv = CreateImageVAAPI(mFrame->pkt_pos, GetFramePts(mFrame),
|
|
||||||
mFrame->pkt_duration, aResults);
|
|
||||||
// If VA-API playback failed, just quit. Decoder is going to be restarted
|
|
||||||
// without VA-API.
|
|
||||||
@@ -844,8 +855,8 @@
|
|
||||||
} else
|
|
||||||
# endif
|
|
||||||
{
|
|
||||||
- rv = CreateImage(mFrame->pkt_pos, mFrame->pkt_pts, mFrame->pkt_duration,
|
|
||||||
- aResults);
|
|
||||||
+ rv = CreateImage(mFrame->pkt_pos, GetFramePts(mFrame),
|
|
||||||
+ mFrame->pkt_duration, aResults);
|
|
||||||
}
|
|
||||||
if (NS_FAILED(rv)) {
|
|
||||||
return rv;
|
|
||||||
@@ -879,9 +890,9 @@
|
|
||||||
"DoDecodeFrame:decode_video: rv=%d decoded=%d "
|
|
||||||
"(Input: pts(%" PRId64 ") dts(%" PRId64 ") Output: pts(%" PRId64
|
|
||||||
") "
|
|
||||||
- "opaque(%" PRId64 ") pkt_pts(%" PRId64 ") pkt_dts(%" PRId64 "))",
|
|
||||||
+ "opaque(%" PRId64 ") pts(%" PRId64 ") pkt_dts(%" PRId64 "))",
|
|
||||||
bytesConsumed, decoded, packet.pts, packet.dts, mFrame->pts,
|
|
||||||
- mFrame->reordered_opaque, mFrame->pkt_pts, mFrame->pkt_dts);
|
|
||||||
+ mFrame->reordered_opaque, mFrame->pts, mFrame->pkt_dts);
|
|
||||||
|
|
||||||
if (bytesConsumed < 0) {
|
|
||||||
return MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR,
|
|
||||||
@@ -896,7 +907,8 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we've decoded a frame then we need to output it
|
|
||||||
- int64_t pts = mPtsContext.GuessCorrectPts(mFrame->pkt_pts, mFrame->pkt_dts);
|
|
||||||
+ int64_t pts =
|
|
||||||
+ mPtsContext.GuessCorrectPts(GetFramePts(mFrame), mFrame->pkt_dts);
|
|
||||||
// Retrieve duration from dts.
|
|
||||||
// We use the first entry found matching this dts (this is done to
|
|
||||||
// handle damaged file with multiple frames with the same dts)
|
|
||||||
|
|
222
D139703.diff
222
D139703.diff
@ -1,222 +0,0 @@
|
|||||||
diff --git a/js/src/jit/GenerateAtomicOperations.py b/js/src/jit/GenerateAtomicOperations.py
|
|
||||||
--- a/js/src/jit/GenerateAtomicOperations.py
|
|
||||||
+++ b/js/src/jit/GenerateAtomicOperations.py
|
|
||||||
@@ -10,6 +10,7 @@
|
|
||||||
|
|
||||||
is_64bit = "JS_64BIT" in buildconfig.defines
|
|
||||||
cpu_arch = buildconfig.substs["CPU_ARCH"]
|
|
||||||
+is_gcc = buildconfig.substs["CC_TYPE"] == "gcc"
|
|
||||||
|
|
||||||
|
|
||||||
def fmt_insn(s):
|
|
||||||
@@ -19,21 +20,21 @@
|
|
||||||
def gen_seqcst(fun_name):
|
|
||||||
if cpu_arch in ("x86", "x86_64"):
|
|
||||||
return r"""
|
|
||||||
- inline void %(fun_name)s() {
|
|
||||||
+ INLINE_ATTR void %(fun_name)s() {
|
|
||||||
asm volatile ("mfence\n\t" ::: "memory");
|
|
||||||
}""" % {
|
|
||||||
"fun_name": fun_name,
|
|
||||||
}
|
|
||||||
if cpu_arch == "aarch64":
|
|
||||||
return r"""
|
|
||||||
- inline void %(fun_name)s() {
|
|
||||||
+ INLINE_ATTR void %(fun_name)s() {
|
|
||||||
asm volatile ("dmb ish\n\t" ::: "memory");
|
|
||||||
}""" % {
|
|
||||||
"fun_name": fun_name,
|
|
||||||
}
|
|
||||||
if cpu_arch == "arm":
|
|
||||||
return r"""
|
|
||||||
- inline void %(fun_name)s() {
|
|
||||||
+ INLINE_ATTR void %(fun_name)s() {
|
|
||||||
asm volatile ("dmb sy\n\t" ::: "memory");
|
|
||||||
}""" % {
|
|
||||||
"fun_name": fun_name,
|
|
||||||
@@ -63,7 +64,7 @@
|
|
||||||
if barrier:
|
|
||||||
insns += fmt_insn("mfence")
|
|
||||||
return """
|
|
||||||
- inline %(cpp_type)s %(fun_name)s(const %(cpp_type)s* arg) {
|
|
||||||
+ INLINE_ATTR %(cpp_type)s %(fun_name)s(const %(cpp_type)s* arg) {
|
|
||||||
%(cpp_type)s res;
|
|
||||||
asm volatile (%(insns)s
|
|
||||||
: [res] "=r" (res)
|
|
||||||
@@ -91,7 +92,7 @@
|
|
||||||
if barrier:
|
|
||||||
insns += fmt_insn("dmb ish")
|
|
||||||
return """
|
|
||||||
- inline %(cpp_type)s %(fun_name)s(const %(cpp_type)s* arg) {
|
|
||||||
+ INLINE_ATTR %(cpp_type)s %(fun_name)s(const %(cpp_type)s* arg) {
|
|
||||||
%(cpp_type)s res;
|
|
||||||
asm volatile (%(insns)s
|
|
||||||
: [res] "=r" (res)
|
|
||||||
@@ -117,7 +118,7 @@
|
|
||||||
if barrier:
|
|
||||||
insns += fmt_insn("dmb sy")
|
|
||||||
return """
|
|
||||||
- inline %(cpp_type)s %(fun_name)s(const %(cpp_type)s* arg) {
|
|
||||||
+ INLINE_ATTR %(cpp_type)s %(fun_name)s(const %(cpp_type)s* arg) {
|
|
||||||
%(cpp_type)s res;
|
|
||||||
asm volatile (%(insns)s
|
|
||||||
: [res] "=r" (res)
|
|
||||||
@@ -154,7 +155,7 @@
|
|
||||||
if barrier:
|
|
||||||
insns += fmt_insn("mfence")
|
|
||||||
return """
|
|
||||||
- inline void %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
+ INLINE_ATTR void %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
asm volatile (%(insns)s
|
|
||||||
:
|
|
||||||
: [addr] "r" (addr), [val] "r"(val)
|
|
||||||
@@ -180,7 +181,7 @@
|
|
||||||
if barrier:
|
|
||||||
insns += fmt_insn("dmb ish")
|
|
||||||
return """
|
|
||||||
- inline void %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
+ INLINE_ATTR void %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
asm volatile (%(insns)s
|
|
||||||
:
|
|
||||||
: [addr] "r" (addr), [val] "r"(val)
|
|
||||||
@@ -204,7 +205,7 @@
|
|
||||||
if barrier:
|
|
||||||
insns += fmt_insn("dmb sy")
|
|
||||||
return """
|
|
||||||
- inline void %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
+ INLINE_ATTR void %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
asm volatile (%(insns)s
|
|
||||||
:
|
|
||||||
: [addr] "r" (addr), [val] "r"(val)
|
|
||||||
@@ -235,7 +236,7 @@
|
|
||||||
assert size == 64
|
|
||||||
insns += fmt_insn("xchgq %[val], (%[addr])")
|
|
||||||
return """
|
|
||||||
- inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
+ INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
asm volatile (%(insns)s
|
|
||||||
: [val] "+r" (val)
|
|
||||||
: [addr] "r" (addr)
|
|
||||||
@@ -266,7 +267,7 @@
|
|
||||||
insns += fmt_insn("cbnz %w[scratch], 0b")
|
|
||||||
insns += fmt_insn("dmb ish")
|
|
||||||
return """
|
|
||||||
- inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
+ INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
%(cpp_type)s res;
|
|
||||||
uint32_t scratch;
|
|
||||||
asm volatile (%(insns)s
|
|
||||||
@@ -297,7 +298,7 @@
|
|
||||||
insns += fmt_insn("beq 0b")
|
|
||||||
insns += fmt_insn("dmb sy")
|
|
||||||
return """
|
|
||||||
- inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
+ INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
%(cpp_type)s res;
|
|
||||||
uint32_t scratch;
|
|
||||||
asm volatile (%(insns)s
|
|
||||||
@@ -321,7 +322,7 @@
|
|
||||||
# Use a +A constraint to load `oldval` into EDX:EAX as input/output.
|
|
||||||
# `newval` is loaded into ECX:EBX.
|
|
||||||
return r"""
|
|
||||||
- inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
|
|
||||||
+ INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
|
|
||||||
%(cpp_type)s oldval,
|
|
||||||
%(cpp_type)s newval) {
|
|
||||||
asm volatile ("lock; cmpxchg8b (%%[addr])\n\t"
|
|
||||||
@@ -337,7 +338,7 @@
|
|
||||||
}
|
|
||||||
if cpu_arch == "arm" and size == 64:
|
|
||||||
return r"""
|
|
||||||
- inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
|
|
||||||
+ INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
|
|
||||||
%(cpp_type)s oldval,
|
|
||||||
%(cpp_type)s newval) {
|
|
||||||
uint32_t oldval0 = oldval & 0xffff'ffff;
|
|
||||||
@@ -380,7 +381,7 @@
|
|
||||||
assert size == 64
|
|
||||||
insns += fmt_insn("lock; cmpxchgq %[newval], (%[addr])")
|
|
||||||
return """
|
|
||||||
- inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
|
|
||||||
+ INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
|
|
||||||
%(cpp_type)s oldval,
|
|
||||||
%(cpp_type)s newval) {
|
|
||||||
asm volatile (%(insns)s
|
|
||||||
@@ -425,7 +426,7 @@
|
|
||||||
insns += fmt_insn("cbnz %w[scratch], 0b")
|
|
||||||
insns += fmt_insn("1: dmb ish")
|
|
||||||
return """
|
|
||||||
- inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
|
|
||||||
+ INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
|
|
||||||
%(cpp_type)s oldval,
|
|
||||||
%(cpp_type)s newval) {
|
|
||||||
%(cpp_type)s res, scratch;
|
|
||||||
@@ -466,7 +467,7 @@
|
|
||||||
insns += fmt_insn("beq 0b")
|
|
||||||
insns += fmt_insn("1: dmb sy")
|
|
||||||
return """
|
|
||||||
- inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
|
|
||||||
+ INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
|
|
||||||
%(cpp_type)s oldval,
|
|
||||||
%(cpp_type)s newval) {
|
|
||||||
%(cpp_type)s res, scratch;
|
|
||||||
@@ -501,7 +502,7 @@
|
|
||||||
assert size == 64
|
|
||||||
insns += fmt_insn("lock; xaddq %[val], (%[addr])")
|
|
||||||
return """
|
|
||||||
- inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
+ INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
asm volatile (%(insns)s
|
|
||||||
: [val] "+&r" (val)
|
|
||||||
: [addr] "r" (addr)
|
|
||||||
@@ -539,7 +540,7 @@
|
|
||||||
insns = insns.replace("OP", op)
|
|
||||||
insns += fmt_insn("jnz 0b")
|
|
||||||
return """
|
|
||||||
- inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
+ INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
%(cpp_type)s res, scratch;
|
|
||||||
asm volatile (%(insns)s
|
|
||||||
: [res] "=&a" (res), [scratch] "=&r" (scratch)
|
|
||||||
@@ -581,7 +582,7 @@
|
|
||||||
insns += fmt_insn("cbnz %w[scratch2], 0b")
|
|
||||||
insns += fmt_insn("dmb ish")
|
|
||||||
return """
|
|
||||||
- inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
+ INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
%(cpp_type)s res;
|
|
||||||
uintptr_t scratch1, scratch2;
|
|
||||||
asm volatile (%(insns)s
|
|
||||||
@@ -621,7 +622,7 @@
|
|
||||||
insns += fmt_insn("beq 0b")
|
|
||||||
insns += fmt_insn("dmb sy")
|
|
||||||
return """
|
|
||||||
- inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
+ INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
|
|
||||||
%(cpp_type)s res;
|
|
||||||
uintptr_t scratch1, scratch2;
|
|
||||||
asm volatile (%(insns)s
|
|
||||||
@@ -681,7 +682,7 @@
|
|
||||||
offset -= 1
|
|
||||||
|
|
||||||
return """
|
|
||||||
- inline void %(fun_name)s(uint8_t* dst, const uint8_t* src) {
|
|
||||||
+ INLINE_ATTR void %(fun_name)s(uint8_t* dst, const uint8_t* src) {
|
|
||||||
%(cpp_type)s* dst_ = reinterpret_cast<%(cpp_type)s*>(dst);
|
|
||||||
const %(cpp_type)s* src_ = reinterpret_cast<const %(cpp_type)s*>(src);
|
|
||||||
%(cpp_type)s scratch;
|
|
||||||
@@ -853,6 +854,13 @@
|
|
||||||
"constexpr size_t JS_GENERATED_ATOMICS_WORDSIZE = " + str(wordsize) + ";\n"
|
|
||||||
)
|
|
||||||
|
|
||||||
+ # Work around a GCC issue on 32-bit x86 by adding MOZ_NEVER_INLINE.
|
|
||||||
+ # See bug 1756347.
|
|
||||||
+ if is_gcc and cpu_arch == "x86":
|
|
||||||
+ contents = contents.replace("INLINE_ATTR", "MOZ_NEVER_INLINE inline")
|
|
||||||
+ else:
|
|
||||||
+ contents = contents.replace("INLINE_ATTR", "inline")
|
|
||||||
+
|
|
||||||
c_out.write(
|
|
||||||
HEADER_TEMPLATE
|
|
||||||
% {
|
|
||||||
|
|
21
D139704.diff
21
D139704.diff
@ -1,21 +0,0 @@
|
|||||||
diff --git a/js/src/jit/GenerateAtomicOperations.py b/js/src/jit/GenerateAtomicOperations.py
|
|
||||||
--- a/js/src/jit/GenerateAtomicOperations.py
|
|
||||||
+++ b/js/src/jit/GenerateAtomicOperations.py
|
|
||||||
@@ -666,12 +666,12 @@
|
|
||||||
insns += fmt_insn("str %x[scratch], [%x[dst], OFFSET]")
|
|
||||||
elif cpu_arch == "arm":
|
|
||||||
if size == 1:
|
|
||||||
- insns += fmt_insn("ldrb %[scratch], [%[src], OFFSET]")
|
|
||||||
- insns += fmt_insn("strb %[scratch], [%[dst], OFFSET]")
|
|
||||||
+ insns += fmt_insn("ldrb %[scratch], [%[src], #OFFSET]")
|
|
||||||
+ insns += fmt_insn("strb %[scratch], [%[dst], #OFFSET]")
|
|
||||||
else:
|
|
||||||
assert size == 4
|
|
||||||
- insns += fmt_insn("ldr %[scratch], [%[src], OFFSET]")
|
|
||||||
- insns += fmt_insn("str %[scratch], [%[dst], OFFSET]")
|
|
||||||
+ insns += fmt_insn("ldr %[scratch], [%[src], #OFFSET]")
|
|
||||||
+ insns += fmt_insn("str %[scratch], [%[dst], #OFFSET]")
|
|
||||||
else:
|
|
||||||
raise Exception("Unexpected arch")
|
|
||||||
insns = insns.replace("OFFSET", str(offset * size))
|
|
||||||
|
|
313
D142257.diff
Normal file
313
D142257.diff
Normal file
@ -0,0 +1,313 @@
|
|||||||
|
diff -up firefox-99.0/gfx/gl/GLContextEGL.h.D142257 firefox-99.0/gfx/gl/GLContextEGL.h
|
||||||
|
--- firefox-99.0/gfx/gl/GLContextEGL.h.D142257 2022-03-31 01:24:45.000000000 +0200
|
||||||
|
+++ firefox-99.0/gfx/gl/GLContextEGL.h 2022-04-06 10:32:53.287145554 +0200
|
||||||
|
@@ -21,11 +21,9 @@ class CompositorWidget;
|
||||||
|
} // namespace widget
|
||||||
|
namespace gl {
|
||||||
|
|
||||||
|
-RefPtr<GLLibraryEGL> DefaultEglLibrary(nsACString* const out_failureId);
|
||||||
|
-
|
||||||
|
inline std::shared_ptr<EglDisplay> DefaultEglDisplay(
|
||||||
|
nsACString* const out_failureId) {
|
||||||
|
- const auto lib = DefaultEglLibrary(out_failureId);
|
||||||
|
+ const auto lib = GLLibraryEGL::Get(out_failureId);
|
||||||
|
if (!lib) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
diff -up firefox-99.0/gfx/gl/GLContextProviderEGL.cpp.D142257 firefox-99.0/gfx/gl/GLContextProviderEGL.cpp
|
||||||
|
--- firefox-99.0/gfx/gl/GLContextProviderEGL.cpp.D142257 2022-03-31 01:24:50.000000000 +0200
|
||||||
|
+++ firefox-99.0/gfx/gl/GLContextProviderEGL.cpp 2022-04-06 10:34:20.468017966 +0200
|
||||||
|
@@ -237,7 +237,7 @@ class GLContextEGLFactory {
|
||||||
|
already_AddRefed<GLContext> GLContextEGLFactory::CreateImpl(
|
||||||
|
EGLNativeWindowType aWindow, bool aHardwareWebRender, bool aUseGles) {
|
||||||
|
nsCString failureId;
|
||||||
|
- const auto lib = gl::DefaultEglLibrary(&failureId);
|
||||||
|
+ const auto lib = GLLibraryEGL::Get(&failureId);
|
||||||
|
if (!lib) {
|
||||||
|
gfxCriticalNote << "Failed[3] to load EGL library: " << failureId.get();
|
||||||
|
return nullptr;
|
||||||
|
@@ -1209,32 +1209,8 @@ already_AddRefed<GLContext> GLContextPro
|
||||||
|
/*static*/
|
||||||
|
GLContext* GLContextProviderEGL::GetGlobalContext() { return nullptr; }
|
||||||
|
|
||||||
|
-// -
|
||||||
|
-
|
||||||
|
-static StaticMutex sMutex;
|
||||||
|
-static StaticRefPtr<GLLibraryEGL> gDefaultEglLibrary;
|
||||||
|
-
|
||||||
|
-RefPtr<GLLibraryEGL> DefaultEglLibrary(nsACString* const out_failureId) {
|
||||||
|
- StaticMutexAutoLock lock(sMutex);
|
||||||
|
- if (!gDefaultEglLibrary) {
|
||||||
|
- gDefaultEglLibrary = GLLibraryEGL::Create(out_failureId);
|
||||||
|
- if (!gDefaultEglLibrary) {
|
||||||
|
- NS_WARNING("GLLibraryEGL::Create failed");
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- return gDefaultEglLibrary.get();
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-// -
|
||||||
|
-
|
||||||
|
/*static*/
|
||||||
|
-void GLContextProviderEGL::Shutdown() {
|
||||||
|
- StaticMutexAutoLock lock(sMutex);
|
||||||
|
- if (!gDefaultEglLibrary) {
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
- gDefaultEglLibrary = nullptr;
|
||||||
|
-}
|
||||||
|
+void GLContextProviderEGL::Shutdown() { GLLibraryEGL::Shutdown(); }
|
||||||
|
|
||||||
|
} /* namespace gl */
|
||||||
|
} /* namespace mozilla */
|
||||||
|
diff -up firefox-99.0/gfx/gl/GLLibraryEGL.cpp.D142257 firefox-99.0/gfx/gl/GLLibraryEGL.cpp
|
||||||
|
--- firefox-99.0/gfx/gl/GLLibraryEGL.cpp.D142257 2022-03-31 01:24:45.000000000 +0200
|
||||||
|
+++ firefox-99.0/gfx/gl/GLLibraryEGL.cpp 2022-04-06 10:32:53.288145587 +0200
|
||||||
|
@@ -48,6 +48,9 @@
|
||||||
|
namespace mozilla {
|
||||||
|
namespace gl {
|
||||||
|
|
||||||
|
+StaticMutex GLLibraryEGL::sMutex;
|
||||||
|
+StaticRefPtr<GLLibraryEGL> GLLibraryEGL::sInstance;
|
||||||
|
+
|
||||||
|
// should match the order of EGLExtensions, and be null-terminated.
|
||||||
|
static const char* sEGLLibraryExtensionNames[] = {
|
||||||
|
"EGL_ANDROID_get_native_client_buffer", "EGL_ANGLE_device_creation",
|
||||||
|
@@ -140,15 +143,17 @@ static PRLibrary* LoadLibraryForEGLOnWin
|
||||||
|
|
||||||
|
#endif // XP_WIN
|
||||||
|
|
||||||
|
-static std::shared_ptr<EglDisplay> GetAndInitDisplay(GLLibraryEGL& egl,
|
||||||
|
- void* displayType) {
|
||||||
|
+static std::shared_ptr<EglDisplay> GetAndInitDisplay(
|
||||||
|
+ GLLibraryEGL& egl, void* displayType,
|
||||||
|
+ const StaticMutexAutoLock& aProofOfLock) {
|
||||||
|
const auto display = egl.fGetDisplay(displayType);
|
||||||
|
if (!display) return nullptr;
|
||||||
|
- return EglDisplay::Create(egl, display, false);
|
||||||
|
+ return EglDisplay::Create(egl, display, false, aProofOfLock);
|
||||||
|
}
|
||||||
|
|
||||||
|
-static std::shared_ptr<EglDisplay> GetAndInitWARPDisplay(GLLibraryEGL& egl,
|
||||||
|
- void* displayType) {
|
||||||
|
+static std::shared_ptr<EglDisplay> GetAndInitWARPDisplay(
|
||||||
|
+ GLLibraryEGL& egl, void* displayType,
|
||||||
|
+ const StaticMutexAutoLock& aProofOfLock) {
|
||||||
|
const EGLAttrib attrib_list[] = {
|
||||||
|
LOCAL_EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE,
|
||||||
|
LOCAL_EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE,
|
||||||
|
@@ -167,11 +172,12 @@ static std::shared_ptr<EglDisplay> GetAn
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
- return EglDisplay::Create(egl, display, true);
|
||||||
|
+ return EglDisplay::Create(egl, display, true, aProofOfLock);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<EglDisplay> GLLibraryEGL::CreateDisplay(
|
||||||
|
ID3D11Device* const d3d11Device) {
|
||||||
|
+ StaticMutexAutoLock lock(sMutex);
|
||||||
|
EGLDeviceEXT eglDevice =
|
||||||
|
fCreateDeviceANGLE(LOCAL_EGL_D3D11_DEVICE_ANGLE, d3d11Device, nullptr);
|
||||||
|
if (!eglDevice) {
|
||||||
|
@@ -199,7 +205,7 @@ std::shared_ptr<EglDisplay> GLLibraryEGL
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
- const auto ret = EglDisplay::Create(*this, display, false);
|
||||||
|
+ const auto ret = EglDisplay::Create(*this, display, false, lock);
|
||||||
|
|
||||||
|
if (!ret) {
|
||||||
|
const EGLint err = fGetError();
|
||||||
|
@@ -263,7 +269,8 @@ class AngleErrorReporting {
|
||||||
|
AngleErrorReporting gAngleErrorReporter;
|
||||||
|
|
||||||
|
static std::shared_ptr<EglDisplay> GetAndInitDisplayForAccelANGLE(
|
||||||
|
- GLLibraryEGL& egl, nsACString* const out_failureId) {
|
||||||
|
+ GLLibraryEGL& egl, nsACString* const out_failureId,
|
||||||
|
+ const StaticMutexAutoLock& aProofOfLock) {
|
||||||
|
gfx::FeatureState& d3d11ANGLE =
|
||||||
|
gfx::gfxConfig::GetFeature(gfx::Feature::D3D11_HW_ANGLE);
|
||||||
|
|
||||||
|
@@ -285,16 +292,18 @@ static std::shared_ptr<EglDisplay> GetAn
|
||||||
|
});
|
||||||
|
|
||||||
|
if (gfx::gfxConfig::IsForcedOnByUser(gfx::Feature::D3D11_HW_ANGLE)) {
|
||||||
|
- return GetAndInitDisplay(egl, LOCAL_EGL_D3D11_ONLY_DISPLAY_ANGLE);
|
||||||
|
+ return GetAndInitDisplay(egl, LOCAL_EGL_D3D11_ONLY_DISPLAY_ANGLE,
|
||||||
|
+ aProofOfLock);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<EglDisplay> ret;
|
||||||
|
if (d3d11ANGLE.IsEnabled()) {
|
||||||
|
- ret = GetAndInitDisplay(egl, LOCAL_EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE);
|
||||||
|
+ ret = GetAndInitDisplay(egl, LOCAL_EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE,
|
||||||
|
+ aProofOfLock);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ret) {
|
||||||
|
- ret = GetAndInitDisplay(egl, EGL_DEFAULT_DISPLAY);
|
||||||
|
+ ret = GetAndInitDisplay(egl, EGL_DEFAULT_DISPLAY, aProofOfLock);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ret && out_failureId->IsEmpty()) {
|
||||||
|
@@ -326,12 +335,20 @@ Maybe<SymbolLoader> GLLibraryEGL::GetSym
|
||||||
|
// -
|
||||||
|
|
||||||
|
/* static */
|
||||||
|
-RefPtr<GLLibraryEGL> GLLibraryEGL::Create(nsACString* const out_failureId) {
|
||||||
|
- RefPtr<GLLibraryEGL> ret = new GLLibraryEGL;
|
||||||
|
- if (!ret->Init(out_failureId)) {
|
||||||
|
- return nullptr;
|
||||||
|
+RefPtr<GLLibraryEGL> GLLibraryEGL::Get(nsACString* const out_failureId) {
|
||||||
|
+ StaticMutexAutoLock lock(sMutex);
|
||||||
|
+ if (!sInstance) {
|
||||||
|
+ sInstance = new GLLibraryEGL;
|
||||||
|
+ if (NS_WARN_IF(!sInstance->Init(out_failureId))) {
|
||||||
|
+ sInstance = nullptr;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
- return ret;
|
||||||
|
+ return sInstance;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/* static */ void GLLibraryEGL::Shutdown() {
|
||||||
|
+ StaticMutexAutoLock lock(sMutex);
|
||||||
|
+ sInstance = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GLLibraryEGL::Init(nsACString* const out_failureId) {
|
||||||
|
@@ -640,9 +657,9 @@ static void MarkExtensions(const char* r
|
||||||
|
// -
|
||||||
|
|
||||||
|
// static
|
||||||
|
-std::shared_ptr<EglDisplay> EglDisplay::Create(GLLibraryEGL& lib,
|
||||||
|
- const EGLDisplay display,
|
||||||
|
- const bool isWarp) {
|
||||||
|
+std::shared_ptr<EglDisplay> EglDisplay::Create(
|
||||||
|
+ GLLibraryEGL& lib, const EGLDisplay display, const bool isWarp,
|
||||||
|
+ const StaticMutexAutoLock& aProofOfLock) {
|
||||||
|
// Retrieve the EglDisplay if it already exists
|
||||||
|
{
|
||||||
|
const auto itr = lib.mActiveDisplays.find(display);
|
||||||
|
@@ -710,6 +727,7 @@ EglDisplay::EglDisplay(const PrivateUseO
|
||||||
|
}
|
||||||
|
|
||||||
|
EglDisplay::~EglDisplay() {
|
||||||
|
+ StaticMutexAutoLock lock(GLLibraryEGL::sMutex);
|
||||||
|
fTerminate();
|
||||||
|
mLib->mActiveDisplays.erase(mDisplay);
|
||||||
|
}
|
||||||
|
@@ -718,16 +736,24 @@ EglDisplay::~EglDisplay() {
|
||||||
|
|
||||||
|
std::shared_ptr<EglDisplay> GLLibraryEGL::DefaultDisplay(
|
||||||
|
nsACString* const out_failureId) {
|
||||||
|
+ StaticMutexAutoLock lock(sMutex);
|
||||||
|
auto ret = mDefaultDisplay.lock();
|
||||||
|
if (ret) return ret;
|
||||||
|
|
||||||
|
- ret = CreateDisplay(false, out_failureId);
|
||||||
|
+ ret = CreateDisplayLocked(false, out_failureId, lock);
|
||||||
|
mDefaultDisplay = ret;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<EglDisplay> GLLibraryEGL::CreateDisplay(
|
||||||
|
const bool forceAccel, nsACString* const out_failureId) {
|
||||||
|
+ StaticMutexAutoLock lock(sMutex);
|
||||||
|
+ return CreateDisplayLocked(forceAccel, out_failureId, lock);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+std::shared_ptr<EglDisplay> GLLibraryEGL::CreateDisplayLocked(
|
||||||
|
+ const bool forceAccel, nsACString* const out_failureId,
|
||||||
|
+ const StaticMutexAutoLock& aProofOfLock) {
|
||||||
|
std::shared_ptr<EglDisplay> ret;
|
||||||
|
|
||||||
|
if (IsExtensionSupported(EGLLibExtension::ANGLE_platform_angle_d3d)) {
|
||||||
|
@@ -747,7 +773,7 @@ std::shared_ptr<EglDisplay> GLLibraryEGL
|
||||||
|
|
||||||
|
// Hardware accelerated ANGLE path (supported or force accel)
|
||||||
|
if (shouldTryAccel) {
|
||||||
|
- ret = GetAndInitDisplayForAccelANGLE(*this, out_failureId);
|
||||||
|
+ ret = GetAndInitDisplayForAccelANGLE(*this, out_failureId, aProofOfLock);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Report the acceleration status to telemetry
|
||||||
|
@@ -766,7 +792,7 @@ std::shared_ptr<EglDisplay> GLLibraryEGL
|
||||||
|
|
||||||
|
// Fallback to a WARP display if ANGLE fails, or if WARP is forced
|
||||||
|
if (!ret && shouldTryWARP) {
|
||||||
|
- ret = GetAndInitWARPDisplay(*this, EGL_DEFAULT_DISPLAY);
|
||||||
|
+ ret = GetAndInitWARPDisplay(*this, EGL_DEFAULT_DISPLAY, aProofOfLock);
|
||||||
|
if (!ret) {
|
||||||
|
if (out_failureId->IsEmpty()) {
|
||||||
|
*out_failureId = "FEATURE_FAILURE_WARP_FALLBACK"_ns;
|
||||||
|
@@ -788,7 +814,7 @@ std::shared_ptr<EglDisplay> GLLibraryEGL
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
- ret = GetAndInitDisplay(*this, nativeDisplay);
|
||||||
|
+ ret = GetAndInitDisplay(*this, nativeDisplay, aProofOfLock);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ret) {
|
||||||
|
diff -up firefox-99.0/gfx/gl/GLLibraryEGL.h.D142257 firefox-99.0/gfx/gl/GLLibraryEGL.h
|
||||||
|
--- firefox-99.0/gfx/gl/GLLibraryEGL.h.D142257 2022-03-31 01:24:50.000000000 +0200
|
||||||
|
+++ firefox-99.0/gfx/gl/GLLibraryEGL.h 2022-04-06 10:32:53.288145587 +0200
|
||||||
|
@@ -13,6 +13,8 @@
|
||||||
|
#include "mozilla/EnumTypeTraits.h"
|
||||||
|
#include "mozilla/Maybe.h"
|
||||||
|
#include "mozilla/RefPtr.h"
|
||||||
|
+#include "mozilla/StaticMutex.h"
|
||||||
|
+#include "mozilla/StaticPtr.h"
|
||||||
|
#include "nsISupports.h"
|
||||||
|
#include "prlink.h"
|
||||||
|
|
||||||
|
@@ -125,14 +127,22 @@ class GLLibraryEGL final {
|
||||||
|
std::unordered_map<EGLDisplay, std::weak_ptr<EglDisplay>> mActiveDisplays;
|
||||||
|
|
||||||
|
public:
|
||||||
|
- static RefPtr<GLLibraryEGL> Create(nsACString* const out_failureId);
|
||||||
|
+ static RefPtr<GLLibraryEGL> Get(nsACString* const out_failureId);
|
||||||
|
+ static void Shutdown();
|
||||||
|
|
||||||
|
private:
|
||||||
|
~GLLibraryEGL() = default;
|
||||||
|
|
||||||
|
+ static StaticMutex sMutex;
|
||||||
|
+ static StaticRefPtr<GLLibraryEGL> sInstance GUARDED_BY(sMutex);
|
||||||
|
+
|
||||||
|
bool Init(nsACString* const out_failureId);
|
||||||
|
void InitLibExtensions();
|
||||||
|
|
||||||
|
+ std::shared_ptr<EglDisplay> CreateDisplayLocked(
|
||||||
|
+ bool forceAccel, nsACString* const out_failureId,
|
||||||
|
+ const StaticMutexAutoLock& aProofOfLock);
|
||||||
|
+
|
||||||
|
public:
|
||||||
|
Maybe<SymbolLoader> GetSymbolLoader() const;
|
||||||
|
|
||||||
|
@@ -599,8 +609,9 @@ class EglDisplay final {
|
||||||
|
struct PrivateUseOnly final {};
|
||||||
|
|
||||||
|
public:
|
||||||
|
- static std::shared_ptr<EglDisplay> Create(GLLibraryEGL&, EGLDisplay,
|
||||||
|
- bool isWarp);
|
||||||
|
+ static std::shared_ptr<EglDisplay> Create(
|
||||||
|
+ GLLibraryEGL&, EGLDisplay, bool isWarp,
|
||||||
|
+ const StaticMutexAutoLock& aProofOfLock);
|
||||||
|
|
||||||
|
// Only `public` for make_shared.
|
||||||
|
EglDisplay(const PrivateUseOnly&, GLLibraryEGL&, EGLDisplay, bool isWarp);
|
||||||
|
diff -up firefox-99.0/gfx/webrender_bindings/RenderThread.cpp.D142257 firefox-99.0/gfx/webrender_bindings/RenderThread.cpp
|
||||||
|
--- firefox-99.0/gfx/webrender_bindings/RenderThread.cpp.D142257 2022-03-31 01:24:51.000000000 +0200
|
||||||
|
+++ firefox-99.0/gfx/webrender_bindings/RenderThread.cpp 2022-04-06 10:32:53.288145587 +0200
|
||||||
|
@@ -1163,7 +1163,7 @@ static already_AddRefed<gl::GLContext> C
|
||||||
|
}
|
||||||
|
|
||||||
|
nsCString failureId;
|
||||||
|
- const auto lib = gl::DefaultEglLibrary(&failureId);
|
||||||
|
+ const auto lib = gl::GLLibraryEGL::Get(&failureId);
|
||||||
|
if (!lib) {
|
||||||
|
aError.Assign(
|
||||||
|
nsPrintfCString("RcANGLE(load EGL lib failed: %s)", failureId.get()));
|
@ -1,77 +0,0 @@
|
|||||||
diff -up firefox-88.0/dom/media/platforms/PDMFactory.cpp.ffvpx-with-vapi firefox-88.0/dom/media/platforms/PDMFactory.cpp
|
|
||||||
--- firefox-88.0/dom/media/platforms/PDMFactory.cpp.ffvpx-with-vapi 2021-04-15 21:44:28.000000000 +0200
|
|
||||||
+++ firefox-88.0/dom/media/platforms/PDMFactory.cpp 2021-04-19 13:27:07.808429721 +0200
|
|
||||||
@@ -481,12 +481,6 @@ void PDMFactory::CreateRddPDMs() {
|
|
||||||
CreateAndStartupPDM<AppleDecoderModule>();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
-#ifdef MOZ_FFVPX
|
|
||||||
- if (StaticPrefs::media_ffvpx_enabled() &&
|
|
||||||
- StaticPrefs::media_rdd_ffvpx_enabled()) {
|
|
||||||
- CreateAndStartupPDM<FFVPXRuntimeLinker>();
|
|
||||||
- }
|
|
||||||
-#endif
|
|
||||||
#ifdef MOZ_FFMPEG
|
|
||||||
if (StaticPrefs::media_ffmpeg_enabled() &&
|
|
||||||
StaticPrefs::media_rdd_ffmpeg_enabled() &&
|
|
||||||
@@ -495,6 +489,12 @@ void PDMFactory::CreateRddPDMs() {
|
|
||||||
FFmpegRuntimeLinker::LinkStatusCode());
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
+#ifdef MOZ_FFVPX
|
|
||||||
+ if (StaticPrefs::media_ffvpx_enabled() &&
|
|
||||||
+ StaticPrefs::media_rdd_ffvpx_enabled()) {
|
|
||||||
+ CreateAndStartupPDM<FFVPXRuntimeLinker>();
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
CreateAndStartupPDM<AgnosticDecoderModule>();
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -525,11 +525,6 @@ void PDMFactory::CreateContentPDMs() {
|
|
||||||
CreateAndStartupPDM<OmxDecoderModule>();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
-#ifdef MOZ_FFVPX
|
|
||||||
- if (StaticPrefs::media_ffvpx_enabled()) {
|
|
||||||
- CreateAndStartupPDM<FFVPXRuntimeLinker>();
|
|
||||||
- }
|
|
||||||
-#endif
|
|
||||||
#ifdef MOZ_FFMPEG
|
|
||||||
if (StaticPrefs::media_ffmpeg_enabled() &&
|
|
||||||
!CreateAndStartupPDM<FFmpegRuntimeLinker>()) {
|
|
||||||
@@ -537,6 +532,11 @@ void PDMFactory::CreateContentPDMs() {
|
|
||||||
FFmpegRuntimeLinker::LinkStatusCode());
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
+#ifdef MOZ_FFVPX
|
|
||||||
+ if (StaticPrefs::media_ffvpx_enabled()) {
|
|
||||||
+ CreateAndStartupPDM<FFVPXRuntimeLinker>();
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
#ifdef MOZ_WIDGET_ANDROID
|
|
||||||
if (StaticPrefs::media_android_media_codec_enabled()) {
|
|
||||||
StartupPDM(AndroidDecoderModule::Create(),
|
|
||||||
@@ -571,11 +571,6 @@ void PDMFactory::CreateDefaultPDMs() {
|
|
||||||
CreateAndStartupPDM<OmxDecoderModule>();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
-#ifdef MOZ_FFVPX
|
|
||||||
- if (StaticPrefs::media_ffvpx_enabled()) {
|
|
||||||
- CreateAndStartupPDM<FFVPXRuntimeLinker>();
|
|
||||||
- }
|
|
||||||
-#endif
|
|
||||||
#ifdef MOZ_FFMPEG
|
|
||||||
if (StaticPrefs::media_ffmpeg_enabled() &&
|
|
||||||
!CreateAndStartupPDM<FFmpegRuntimeLinker>()) {
|
|
||||||
@@ -583,6 +578,11 @@ void PDMFactory::CreateDefaultPDMs() {
|
|
||||||
FFmpegRuntimeLinker::LinkStatusCode());
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
+#ifdef MOZ_FFVPX
|
|
||||||
+ if (StaticPrefs::media_ffvpx_enabled()) {
|
|
||||||
+ CreateAndStartupPDM<FFVPXRuntimeLinker>();
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
#ifdef MOZ_WIDGET_ANDROID
|
|
||||||
if (StaticPrefs::media_android_media_codec_enabled()) {
|
|
||||||
StartupPDM(AndroidDecoderModule::Create(),
|
|
38
firefox.spec
38
firefox.spec
@ -126,7 +126,7 @@ ExcludeArch: aarch64
|
|||||||
%if %{?system_nss}
|
%if %{?system_nss}
|
||||||
%global nspr_version 4.26
|
%global nspr_version 4.26
|
||||||
%global nspr_build_version %{nspr_version}
|
%global nspr_build_version %{nspr_version}
|
||||||
%global nss_version 3.74
|
%global nss_version 3.76
|
||||||
%global nss_build_version %{nss_version}
|
%global nss_build_version %{nss_version}
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
@ -162,7 +162,7 @@ ExcludeArch: aarch64
|
|||||||
|
|
||||||
Summary: Mozilla Firefox Web browser
|
Summary: Mozilla Firefox Web browser
|
||||||
Name: firefox
|
Name: firefox
|
||||||
Version: 98.0.2
|
Version: 99.0
|
||||||
Release: 1%{?pre_tag}%{?dist}
|
Release: 1%{?pre_tag}%{?dist}
|
||||||
URL: https://www.mozilla.org/firefox/
|
URL: https://www.mozilla.org/firefox/
|
||||||
License: MPLv1.1 or GPLv2+ or LGPLv2+
|
License: MPLv1.1 or GPLv2+ or LGPLv2+
|
||||||
@ -214,16 +214,8 @@ Patch49: build-arm-libaom.patch
|
|||||||
Patch53: firefox-gcc-build.patch
|
Patch53: firefox-gcc-build.patch
|
||||||
Patch54: mozilla-1669639.patch
|
Patch54: mozilla-1669639.patch
|
||||||
Patch55: firefox-testing.patch
|
Patch55: firefox-testing.patch
|
||||||
Patch57: firefox-disable-ffvpx-with-vapi.patch
|
|
||||||
Patch61: firefox-glibc-dynstack.patch
|
Patch61: firefox-glibc-dynstack.patch
|
||||||
Patch62: build-python.patch
|
Patch62: build-python.patch
|
||||||
#Patch64: mozilla-1753402.patch
|
|
||||||
# GCC12 build fixes
|
|
||||||
Patch65: D139022.diff
|
|
||||||
Patch66: D139078.diff
|
|
||||||
Patch67: D139088.diff
|
|
||||||
Patch68: D139703.diff
|
|
||||||
Patch69: D139704.diff
|
|
||||||
Patch70: crossbeam-downgrade-rhbz2063961.patch
|
Patch70: crossbeam-downgrade-rhbz2063961.patch
|
||||||
Patch71: 0001-GLIBCXX-fix-for-GCC-12.patch
|
Patch71: 0001-GLIBCXX-fix-for-GCC-12.patch
|
||||||
|
|
||||||
@ -250,11 +242,7 @@ Patch402: mozilla-1196777.patch
|
|||||||
Patch407: mozilla-1667096.patch
|
Patch407: mozilla-1667096.patch
|
||||||
Patch408: mozilla-1663844.patch
|
Patch408: mozilla-1663844.patch
|
||||||
Patch415: mozilla-1670333.patch
|
Patch415: mozilla-1670333.patch
|
||||||
# ffmpeg50
|
Patch416: D142257.diff
|
||||||
Patch500: D139696.diff
|
|
||||||
Patch501: D139697.diff
|
|
||||||
Patch502: D139698.diff
|
|
||||||
Patch503: D139699.diff
|
|
||||||
|
|
||||||
# PGO/LTO patches
|
# PGO/LTO patches
|
||||||
Patch600: pgo.patch
|
Patch600: pgo.patch
|
||||||
@ -471,14 +459,6 @@ This package contains results of tests executed during build.
|
|||||||
%patch49 -p1 -b .build-arm-libaom
|
%patch49 -p1 -b .build-arm-libaom
|
||||||
%patch53 -p1 -b .firefox-gcc-build
|
%patch53 -p1 -b .firefox-gcc-build
|
||||||
%patch54 -p1 -b .1669639
|
%patch54 -p1 -b .1669639
|
||||||
#%patch55 -p1 -b .testing
|
|
||||||
%patch57 -p1 -b .ffvpx-with-vapi
|
|
||||||
#%patch64 -p1 -b .1753402
|
|
||||||
%patch65 -p1 -b .D139022
|
|
||||||
%patch66 -p1 -b .D139078
|
|
||||||
%patch67 -p1 -b .D139088
|
|
||||||
%patch68 -p1 -b .D139703
|
|
||||||
%patch69 -p1 -b .D139704
|
|
||||||
%ifarch aarch64
|
%ifarch aarch64
|
||||||
%patch70 -p1 -b .crossbeam-downgrade-rhbz2063961
|
%patch70 -p1 -b .crossbeam-downgrade-rhbz2063961
|
||||||
%endif
|
%endif
|
||||||
@ -505,14 +485,7 @@ This package contains results of tests executed during build.
|
|||||||
%patch407 -p1 -b .1667096
|
%patch407 -p1 -b .1667096
|
||||||
%patch408 -p1 -b .1663844
|
%patch408 -p1 -b .1663844
|
||||||
%patch415 -p1 -b .1670333
|
%patch415 -p1 -b .1670333
|
||||||
|
%patch416 -p1 -b .D142257
|
||||||
# ffmpeg50
|
|
||||||
%ifnarch ppc64le
|
|
||||||
%patch500 -p1 -b .D139696
|
|
||||||
%patch501 -p1 -b .D139697
|
|
||||||
%patch502 -p1 -b .D139698
|
|
||||||
%patch503 -p1 -b .D139699
|
|
||||||
%endif
|
|
||||||
|
|
||||||
# PGO patches
|
# PGO patches
|
||||||
%if %{build_with_pgo}
|
%if %{build_with_pgo}
|
||||||
@ -1079,6 +1052,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
|
|||||||
#---------------------------------------------------------------------
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Apr 6 2022 Martin Stransky <stransky@redhat.com> - 99.0-1
|
||||||
|
- Updated to 99.0
|
||||||
|
|
||||||
* Thu Mar 31 2022 Martin Stransky <stransky@redhat.com> - 98.0.2-1
|
* Thu Mar 31 2022 Martin Stransky <stransky@redhat.com> - 98.0.2-1
|
||||||
- Updated to 98.0.2
|
- Updated to 98.0.2
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
diff -up firefox-88.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-88.0/dom/media/mp4/MP4Demuxer.cpp
|
diff -up firefox-99.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-99.0/dom/media/mp4/MP4Demuxer.cpp
|
||||||
--- firefox-88.0/dom/media/mp4/MP4Demuxer.cpp.1670333 2021-04-15 21:44:28.000000000 +0200
|
--- firefox-99.0/dom/media/mp4/MP4Demuxer.cpp.1670333 2022-03-31 01:24:44.000000000 +0200
|
||||||
+++ firefox-88.0/dom/media/mp4/MP4Demuxer.cpp 2021-04-19 13:36:44.101762211 +0200
|
+++ firefox-99.0/dom/media/mp4/MP4Demuxer.cpp 2022-04-04 09:58:35.606351546 +0200
|
||||||
@@ -31,6 +31,8 @@ mozilla::LogModule* GetDemuxerLog() { re
|
@@ -31,6 +31,8 @@ mozilla::LogModule* GetDemuxerLog() { re
|
||||||
DDMOZ_LOG(gMediaDemuxerLog, mozilla::LogLevel::Debug, "::%s: " arg, \
|
DDMOZ_LOG(gMediaDemuxerLog, mozilla::LogLevel::Debug, "::%s: " arg, \
|
||||||
__func__, ##__VA_ARGS__)
|
__func__, ##__VA_ARGS__)
|
||||||
@ -23,9 +23,9 @@ diff -up firefox-88.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-88.0/dom/medi
|
|||||||
if (sample->mKeyframe != keyframe) {
|
if (sample->mKeyframe != keyframe) {
|
||||||
NS_WARNING(nsPrintfCString("Frame incorrectly marked as %skeyframe "
|
NS_WARNING(nsPrintfCString("Frame incorrectly marked as %skeyframe "
|
||||||
"@ pts:%" PRId64 " dur:%" PRId64
|
"@ pts:%" PRId64 " dur:%" PRId64
|
||||||
diff -up firefox-88.0/dom/media/platforms/PDMFactory.cpp.1670333 firefox-88.0/dom/media/platforms/PDMFactory.cpp
|
diff -up firefox-99.0/dom/media/platforms/PDMFactory.cpp.1670333 firefox-99.0/dom/media/platforms/PDMFactory.cpp
|
||||||
--- firefox-88.0/dom/media/platforms/PDMFactory.cpp.1670333 2021-04-19 13:36:44.087761790 +0200
|
--- firefox-99.0/dom/media/platforms/PDMFactory.cpp.1670333 2022-03-31 01:24:44.000000000 +0200
|
||||||
+++ firefox-88.0/dom/media/platforms/PDMFactory.cpp 2021-04-19 13:39:52.676433734 +0200
|
+++ firefox-99.0/dom/media/platforms/PDMFactory.cpp 2022-04-04 10:09:57.383419125 +0200
|
||||||
@@ -58,6 +58,8 @@
|
@@ -58,6 +58,8 @@
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
@ -35,22 +35,16 @@ diff -up firefox-88.0/dom/media/platforms/PDMFactory.cpp.1670333 firefox-88.0/do
|
|||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
|
|
||||||
#define PDM_INIT_LOG(msg, ...) \
|
#define PDM_INIT_LOG(msg, ...) \
|
||||||
@@ -572,10 +574,10 @@ void PDMFactory::CreateDefaultPDMs() {
|
@@ -495,7 +497,7 @@ void PDMFactory::CreateRddPDMs() {
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef MOZ_FFMPEG
|
#ifdef MOZ_FFMPEG
|
||||||
- if (StaticPrefs::media_ffmpeg_enabled() &&
|
if (StaticPrefs::media_ffmpeg_enabled() &&
|
||||||
|
StaticPrefs::media_rdd_ffmpeg_enabled() &&
|
||||||
- !CreateAndStartupPDM<FFmpegRuntimeLinker>()) {
|
- !CreateAndStartupPDM<FFmpegRuntimeLinker>()) {
|
||||||
- mFailureFlags += GetFailureFlagBasedOnFFmpegStatus(
|
+ !(mFFmpegUsed = CreateAndStartupPDM<FFmpegRuntimeLinker>())) {
|
||||||
- FFmpegRuntimeLinker::LinkStatusCode());
|
mFailureFlags += GetFailureFlagBasedOnFFmpegStatus(
|
||||||
+ if (StaticPrefs::media_ffmpeg_enabled()) {
|
FFmpegRuntimeLinker::LinkStatusCode());
|
||||||
+ mFFmpegUsed = CreateAndStartupPDM<FFmpegRuntimeLinker>();
|
|
||||||
+ if (!mFFmpegUsed) {
|
|
||||||
+ mFailureFlags += GetFailureFlagBasedOnFFmpegStatus(FFmpegRuntimeLinker::LinkStatusCode()); }
|
|
||||||
}
|
}
|
||||||
#endif
|
@@ -602,8 +604,9 @@ void PDMFactory::CreateDefaultPDMs() {
|
||||||
#ifdef MOZ_FFVPX
|
|
||||||
@@ -592,8 +594,9 @@ void PDMFactory::CreateDefaultPDMs() {
|
|
||||||
|
|
||||||
CreateAndStartupPDM<AgnosticDecoderModule>();
|
CreateAndStartupPDM<AgnosticDecoderModule>();
|
||||||
|
|
||||||
@ -61,9 +55,9 @@ diff -up firefox-88.0/dom/media/platforms/PDMFactory.cpp.1670333 firefox-88.0/do
|
|||||||
mFailureFlags += DecoderDoctorDiagnostics::Flags::GMPPDMFailedToStartup;
|
mFailureFlags += DecoderDoctorDiagnostics::Flags::GMPPDMFailedToStartup;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
diff -up firefox-88.0/dom/media/platforms/PDMFactory.h.1670333 firefox-88.0/dom/media/platforms/PDMFactory.h
|
diff -up firefox-99.0/dom/media/platforms/PDMFactory.h.1670333 firefox-99.0/dom/media/platforms/PDMFactory.h
|
||||||
--- firefox-88.0/dom/media/platforms/PDMFactory.h.1670333 2021-04-15 21:44:28.000000000 +0200
|
--- firefox-99.0/dom/media/platforms/PDMFactory.h.1670333 2022-03-31 01:24:44.000000000 +0200
|
||||||
+++ firefox-88.0/dom/media/platforms/PDMFactory.h 2021-04-19 13:36:44.101762211 +0200
|
+++ firefox-99.0/dom/media/platforms/PDMFactory.h 2022-04-04 09:58:35.606351546 +0200
|
||||||
@@ -121,6 +121,7 @@ class PDMFactory final {
|
@@ -121,6 +121,7 @@ class PDMFactory final {
|
||||||
RefPtr<PlatformDecoderModule> mNullPDM;
|
RefPtr<PlatformDecoderModule> mNullPDM;
|
||||||
|
|
||||||
|
38
pgo.patch
38
pgo.patch
@ -1,7 +1,7 @@
|
|||||||
diff -up firefox-96.0/build/moz.configure/lto-pgo.configure.pgo firefox-96.0/build/moz.configure/lto-pgo.configure
|
diff -up firefox-99.0/build/moz.configure/lto-pgo.configure.pgo firefox-99.0/build/moz.configure/lto-pgo.configure
|
||||||
--- firefox-96.0/build/moz.configure/lto-pgo.configure.pgo 2022-01-06 19:32:35.000000000 +0100
|
--- firefox-99.0/build/moz.configure/lto-pgo.configure.pgo 2022-03-31 01:24:38.000000000 +0200
|
||||||
+++ firefox-96.0/build/moz.configure/lto-pgo.configure 2022-01-11 15:43:02.193378698 +0100
|
+++ firefox-99.0/build/moz.configure/lto-pgo.configure 2022-04-04 10:15:45.387694143 +0200
|
||||||
@@ -248,8 +248,8 @@ def lto(
|
@@ -247,8 +247,8 @@ def lto(
|
||||||
cflags.append("-flto")
|
cflags.append("-flto")
|
||||||
ldflags.append("-flto")
|
ldflags.append("-flto")
|
||||||
else:
|
else:
|
||||||
@ -12,7 +12,7 @@ diff -up firefox-96.0/build/moz.configure/lto-pgo.configure.pgo firefox-96.0/bui
|
|||||||
|
|
||||||
if target.os == "Android" and value == "cross":
|
if target.os == "Android" and value == "cross":
|
||||||
# Work around https://github.com/rust-lang/rust/issues/90088
|
# Work around https://github.com/rust-lang/rust/issues/90088
|
||||||
@@ -265,7 +265,7 @@ def lto(
|
@@ -264,7 +264,7 @@ def lto(
|
||||||
if value == "full":
|
if value == "full":
|
||||||
cflags.append("-flto")
|
cflags.append("-flto")
|
||||||
else:
|
else:
|
||||||
@ -21,9 +21,9 @@ diff -up firefox-96.0/build/moz.configure/lto-pgo.configure.pgo firefox-96.0/bui
|
|||||||
# With clang-cl, -flto can only be used with -c or -fuse-ld=lld.
|
# With clang-cl, -flto can only be used with -c or -fuse-ld=lld.
|
||||||
# AC_TRY_LINKs during configure don't have -c, so pass -fuse-ld=lld.
|
# AC_TRY_LINKs during configure don't have -c, so pass -fuse-ld=lld.
|
||||||
cflags.append("-fuse-ld=lld")
|
cflags.append("-fuse-ld=lld")
|
||||||
diff -up firefox-96.0/build/pgo/profileserver.py.pgo firefox-96.0/build/pgo/profileserver.py
|
diff -up firefox-99.0/build/pgo/profileserver.py.pgo firefox-99.0/build/pgo/profileserver.py
|
||||||
--- firefox-96.0/build/pgo/profileserver.py.pgo 2022-01-06 16:56:23.000000000 +0100
|
--- firefox-99.0/build/pgo/profileserver.py.pgo 2022-03-31 01:24:38.000000000 +0200
|
||||||
+++ firefox-96.0/build/pgo/profileserver.py 2022-01-11 15:43:02.193378698 +0100
|
+++ firefox-99.0/build/pgo/profileserver.py 2022-04-04 10:15:45.387694143 +0200
|
||||||
@@ -11,7 +11,7 @@ import glob
|
@@ -11,7 +11,7 @@ import glob
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
@ -70,9 +70,9 @@ diff -up firefox-96.0/build/pgo/profileserver.py.pgo firefox-96.0/build/pgo/prof
|
|||||||
llvm_profdata = env.get("LLVM_PROFDATA")
|
llvm_profdata = env.get("LLVM_PROFDATA")
|
||||||
if llvm_profdata:
|
if llvm_profdata:
|
||||||
profraw_files = glob.glob("*.profraw")
|
profraw_files = glob.glob("*.profraw")
|
||||||
diff -up firefox-96.0/build/unix/mozconfig.unix.pgo firefox-96.0/build/unix/mozconfig.unix
|
diff -up firefox-99.0/build/unix/mozconfig.unix.pgo firefox-99.0/build/unix/mozconfig.unix
|
||||||
--- firefox-96.0/build/unix/mozconfig.unix.pgo 2022-01-06 16:56:24.000000000 +0100
|
--- firefox-99.0/build/unix/mozconfig.unix.pgo 2022-03-31 01:24:38.000000000 +0200
|
||||||
+++ firefox-96.0/build/unix/mozconfig.unix 2022-01-11 15:43:02.193378698 +0100
|
+++ firefox-99.0/build/unix/mozconfig.unix 2022-04-04 10:15:45.387694143 +0200
|
||||||
@@ -4,6 +4,15 @@ if [ -n "$FORCE_GCC" ]; then
|
@@ -4,6 +4,15 @@ if [ -n "$FORCE_GCC" ]; then
|
||||||
CC="$MOZ_FETCHES_DIR/gcc/bin/gcc"
|
CC="$MOZ_FETCHES_DIR/gcc/bin/gcc"
|
||||||
CXX="$MOZ_FETCHES_DIR/gcc/bin/g++"
|
CXX="$MOZ_FETCHES_DIR/gcc/bin/g++"
|
||||||
@ -89,18 +89,18 @@ diff -up firefox-96.0/build/unix/mozconfig.unix.pgo firefox-96.0/build/unix/mozc
|
|||||||
# We want to make sure we use binutils and other binaries in the tooltool
|
# We want to make sure we use binutils and other binaries in the tooltool
|
||||||
# package.
|
# package.
|
||||||
mk_add_options "export PATH=$MOZ_FETCHES_DIR/gcc/bin:$PATH"
|
mk_add_options "export PATH=$MOZ_FETCHES_DIR/gcc/bin:$PATH"
|
||||||
diff -up firefox-96.0/extensions/spellcheck/src/moz.build.pgo firefox-96.0/extensions/spellcheck/src/moz.build
|
diff -up firefox-99.0/extensions/spellcheck/src/moz.build.pgo firefox-99.0/extensions/spellcheck/src/moz.build
|
||||||
--- firefox-96.0/extensions/spellcheck/src/moz.build.pgo 2022-01-11 15:43:02.193378698 +0100
|
--- firefox-99.0/extensions/spellcheck/src/moz.build.pgo 2022-03-31 01:24:50.000000000 +0200
|
||||||
+++ firefox-96.0/extensions/spellcheck/src/moz.build 2022-01-11 15:49:52.929362701 +0100
|
+++ firefox-99.0/extensions/spellcheck/src/moz.build 2022-04-04 10:15:45.387694143 +0200
|
||||||
@@ -28,3 +28,5 @@ EXPORTS.mozilla += [
|
@@ -28,3 +28,5 @@ EXPORTS.mozilla += [
|
||||||
"mozInlineSpellChecker.h",
|
"mozInlineSpellChecker.h",
|
||||||
"mozSpellChecker.h",
|
"mozSpellChecker.h",
|
||||||
]
|
]
|
||||||
+
|
+
|
||||||
+CXXFLAGS += ['-fno-devirtualize']
|
+CXXFLAGS += ['-fno-devirtualize']
|
||||||
diff -up firefox-96.0/toolkit/components/terminator/nsTerminator.cpp.pgo firefox-96.0/toolkit/components/terminator/nsTerminator.cpp
|
diff -up firefox-99.0/toolkit/components/terminator/nsTerminator.cpp.pgo firefox-99.0/toolkit/components/terminator/nsTerminator.cpp
|
||||||
--- firefox-96.0/toolkit/components/terminator/nsTerminator.cpp.pgo 2022-01-06 16:58:15.000000000 +0100
|
--- firefox-99.0/toolkit/components/terminator/nsTerminator.cpp.pgo 2022-04-04 10:15:45.387694143 +0200
|
||||||
+++ firefox-96.0/toolkit/components/terminator/nsTerminator.cpp 2022-01-11 15:43:02.193378698 +0100
|
+++ firefox-99.0/toolkit/components/terminator/nsTerminator.cpp 2022-04-04 10:19:07.022239556 +0200
|
||||||
@@ -466,6 +466,11 @@ void nsTerminator::StartWatchdog() {
|
@@ -466,6 +466,11 @@ void nsTerminator::StartWatchdog() {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -111,5 +111,5 @@ diff -up firefox-96.0/toolkit/components/terminator/nsTerminator.cpp.pgo firefox
|
|||||||
+ crashAfterMS = INT32_MAX;
|
+ crashAfterMS = INT32_MAX;
|
||||||
+
|
+
|
||||||
UniquePtr<Options> options(new Options());
|
UniquePtr<Options> options(new Options());
|
||||||
const PRIntervalTime ticksDuration =
|
// crashAfterTicks is guaranteed to be > 0 as
|
||||||
PR_MillisecondsToInterval(HEARTBEAT_INTERVAL_MS);
|
// crashAfterMS >= ADDITIONAL_WAIT_BEFORE_CRASH_MS >> HEARTBEAT_INTERVAL_MS
|
||||||
|
4
sources
4
sources
@ -1,4 +1,4 @@
|
|||||||
SHA512 (cbindgen-vendor.tar.xz) = b9ab1498be90ecf60822df7021f8812f124550d97f8cd687c69d3ab56fc5fb714bfe88c78c978a1794d211724909a9a5cad6a4b483fa05f762909c45d5075520
|
SHA512 (cbindgen-vendor.tar.xz) = b9ab1498be90ecf60822df7021f8812f124550d97f8cd687c69d3ab56fc5fb714bfe88c78c978a1794d211724909a9a5cad6a4b483fa05f762909c45d5075520
|
||||||
SHA512 (mochitest-python.tar.gz) = 18e1aeb475df5fbf1fe3838897d5ac2f3114aa349030713fc2be27af087b1b12f57642621b87bd052f324a7cb7fbae5f36b21502191d85692f62c8cdd69c8bf2
|
SHA512 (mochitest-python.tar.gz) = 18e1aeb475df5fbf1fe3838897d5ac2f3114aa349030713fc2be27af087b1b12f57642621b87bd052f324a7cb7fbae5f36b21502191d85692f62c8cdd69c8bf2
|
||||||
SHA512 (firefox-98.0.2.source.tar.xz) = b567b53fcdc08491063d535545f558ea56ec5be02ca540661de116986245b79f509e0103cea5661faf9f4b3d30b67758ebdb4b30401e260ee27cbb300203f36e
|
SHA512 (firefox-99.0.source.tar.xz) = 08f6d5a668140c4275aba6df463ed3af596043dfe5f27573583afbc1e9f6b27ebca79a52ce2c9598261c631b400b5378744e9e70f51ef9c4098b419e9904aa7c
|
||||||
SHA512 (firefox-langpacks-98.0.2-20220331.tar.xz) = eba580d5dcef421f2a4e3be62a2fdf0788328cc065ae8019062e5d524f5d49b15709892e5846b9fa63148278983c8e627ad85d8a4656502c9f6543474bb94bc6
|
SHA512 (firefox-langpacks-99.0-20220331.tar.xz) = 9ab5d8989644da67cacfe729c13309ed4f42b654b9b9113bcdb7155b59fcb12fc816de8a3fdea709c9d91f2d5b168eebec5ada6f7637e111ea374adc9eb9c984
|
||||||
|
Loading…
Reference in New Issue
Block a user