1
0

Compare commits

50 Commits
main ... main

Author SHA256 Message Date
2e368bba05 bump to 141.0.7390.7 2025-09-04 21:46:22 +02:00
fc36f05e41 thirdparty/libc++ 2025-09-04 20:13:56 +02:00
c8be6bd8a1 update patches 2025-08-30 12:07:28 +02:00
0d531519fc catch up changelog 2025-08-30 11:53:51 +02:00
cbdee2a757 bump to 141.0.7378.3 2025-08-30 11:51:41 +02:00
d78c2b6c43 bump to 141.0.7367.0 2025-08-23 21:52:36 +02:00
Ruediger Oertel
439f881815 fix version in changes file 2025-08-18 00:32:15 +02:00
8cd9fd263b fixup chromium-125-compiler.patch 2025-08-15 17:26:52 +02:00
1dff1cf6f4 bump to 141.0.7354.0 2025-08-15 17:07:03 +02:00
Ruediger Oertel
e78ce84f72 drop ppc-fedora-fix-rustc.patch (obsolete) 2025-08-14 17:05:12 +02:00
Ruediger Oertel
eb63f13d34 merge changes from chromium-beta 2025-08-14 15:53:15 +02:00
Ruediger Oertel
61fd2719f4 drop chromium-140-revert-newline-config.patch 2025-08-08 00:13:06 +02:00
Ruediger Oertel
e8074cc29d add missing patch 2025-08-07 23:11:11 +02:00
Ruediger Oertel
285a306de6 update to 141.0.7340.0 2025-08-07 23:06:12 +02:00
Ruediger Oertel
a178fd54ef merge changes from stable and beta 2025-08-07 23:01:30 +02:00
Ruediger Oertel
d19d1a5437 update chromium-140-revert-newline-config.patch 2025-08-01 13:34:26 +02:00
Ruediger Oertel
2928f3d41f update more patches 2025-08-01 13:21:36 +02:00
Ruediger Oertel
ccc57b3b14 add chromium-140-revert-newline-config.patch 2025-08-01 12:44:05 +02:00
Ruediger Oertel
5d6dbecf26 update to 140.0.7327.6 2025-08-01 11:04:28 +02:00
Ruediger Oertel
a8b26b506e disable system harfbuzz for >= 16 again, missed that was on purpose 2025-08-01 10:55:45 +02:00
Ruediger Oertel
06eba2dd9f update patches to apply 2025-07-31 18:19:04 +02:00
Ruediger Oertel
980b1c06b9 update to 140.0.7312.0 and switch to small tarball 2025-07-31 14:09:45 +02:00
Ruediger Oertel
2046524a14 try rust1.88 2025-07-25 15:28:25 +02:00
Ruediger Oertel
c670c3c520 try rust1.87 instead 2025-07-25 11:59:49 +02:00
Ruediger Oertel
3685cecc90 bump BR for rust-bindgen 2025-07-25 01:12:50 +02:00
Ruediger Oertel
322f22ef71 update ppc-fedora-0001-sandbox-linux-Update-syscall-helpers-lists-for-ppc64.patch 2025-07-24 18:29:48 +02:00
Ruediger Oertel
dff44b3193 remove wasm_tts_engine from keeplibs 2025-07-24 17:07:40 +02:00
Ruediger Oertel
f157fd81a6 update ppc-fedora-add-ppc64-architecture-to-extensions.diff 2025-07-24 16:43:26 +02:00
Ruediger Oertel
25afd093c5 update ppc-fedora-0001-sandbox-linux-Update-syscall-helpers-lists-for-ppc64.patch 2025-07-24 16:04:20 +02:00
Ruediger Oertel
d3f54d469d drop chromium-140-tab_strip_collection-missing-include.patch again 2025-07-24 14:31:07 +02:00
Ruediger Oertel
350bad913a update gcc-enable-lto.patch 2025-07-24 14:20:47 +02:00
92ec70de8e update to 140.0.7299.0 2025-07-20 13:09:41 +02:00
7b4d623013 sync beta changes up to 139.0.7258.42 2025-07-20 13:05:41 +02:00
Ruediger Oertel
08eebc09be update ppc-fedora-fix-unknown-warning-option-messages.diff 2025-07-02 14:36:16 +02:00
Ruediger Oertel
6f94dc21c9 add chromium-140-tab_strip_collection-missing-include.patch 2025-07-02 10:58:20 +02:00
Ruediger Oertel
62e4c5a1b9 try rust 1.86 2025-07-02 00:07:49 +02:00
Ruediger Oertel
8846bc8cbd sync with beta 2025-07-01 18:07:01 +02:00
Ruediger Oertel
5037b34613 no system_harfbuzz until unbundle is fixed 2025-07-01 17:29:13 +02:00
Ruediger Oertel
86ddcede7e bump gn BR 2025-07-01 16:42:50 +02:00
Ruediger Oertel
03c2a2ff48 drop eu-strip 2025-07-01 16:06:43 +02:00
Ruediger Oertel
b77cebef00 bump rust dep to 1.87 2025-07-01 15:44:53 +02:00
Ruediger Oertel
8d3c4d748c merge changed from beta 2025-07-01 12:01:57 +02:00
Ruediger Oertel
b3f8ceba7b update chromium-125-compiler.patch 2025-06-27 16:38:13 +02:00
Ruediger Oertel
b4a29328f4 update gcc-enable-lto.patch 2025-06-27 00:31:18 +02:00
Ruediger Oertel
51c9423f65 update to 140.0.7259.2 2025-06-26 22:49:12 +02:00
Ruediger Oertel
9a121476a6 try another fix for clang_warning_suppression 2025-06-18 00:23:10 +02:00
Ruediger Oertel
01a50f7393 add jobs commit 2025-06-17 23:56:15 +02:00
Ruediger Oertel
53dac2e157 drop chromium-warning-suppression-mappings.patch 2025-06-17 17:02:07 +02:00
Ruediger Oertel
0834a2db9a drop chrome/third_party/mozilla_security_manager from keeplibs 2025-06-17 16:08:43 +02:00
Ruediger Oertel
221d2f56e9 update to 139.0.7232.3 2025-06-17 15:44:02 +02:00
43 changed files with 11323 additions and 82884 deletions

2
.gitattributes vendored
View File

@@ -21,3 +21,5 @@
*.xz filter=lfs diff=lfs merge=lfs -text *.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text *.zst filter=lfs diff=lfs merge=lfs -text
## Specific LFS patterns
chromium-symbolic.svg filter=lfs diff=lfs merge=lfs -text

View File

@@ -1,349 +0,0 @@
From 84d1d7adcd1697348e3f821811179c525d3b5717 Mon Sep 17 00:00:00 2001
From: Dale Curtis <dalecurtis@chromium.org>
Date: Tue, 28 Nov 2023 00:41:42 +0000
Subject: [PATCH] Roll src/third_party/ffmpeg/ c1d0dc413..866768f35 (492
commits)
https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/c1d0dc4135ec..866768f35c22
$ git log c1d0dc413..866768f35 --date=short --no-merges --format='%ad %ae %s'
2023-11-22 dalecurtis README.chromium file
2023-11-22 dalecurtis Chromium patches file
2023-11-22 dalecurtis GN Configuration
2023-11-21 dalecurtis Switch to remoteexec for robosushi
2023-11-12 mypopydev vulkan_decode: fix the print format of VkDeviceSize
2023-08-28 mypopydev avdevice/decklink_dec: add explicit specifier
2023-11-20 jamrial avcodec: bump version after EVC additions
2023-09-19 d.kozinski avcodec/evc_decoder: Provided support for EVC decoder
2023-09-19 d.kozinski avcodec/evc_encoder: Provided support for EVC encoder
2023-10-17 michael avcodec/h264dec: Support skipping frames that used gray gap frames
2023-10-17 michael avcodec/h264: Avoid using gray gap frames as references
2023-10-17 michael avcodec/h264: keep track of which frames used gray references
2023-10-02 michael avcodec/h264dec: More elaborate documentation for frame_recovered
2023-10-02 michael avcodec/h264: Use FRAME_RECOVERED_HEURISTIC instead of IDR/SEI
2023-10-02 michael avcodec/h264: Seperate SEI and IDR recovery handling
2023-11-19 onemda avfilter/af_afir: remove flag that is not needed
2023-11-19 onemda avfilter/af_afir: no need to dynamically add outpad
2023-11-19 onemda avfilter/af_afir: refactor crossfade code
2023-11-19 onemda avfilter/af_afir: add timeline support
2023-11-16 remi riscv: set fast half-precision conversion
2023-11-19 onemda avfilter/af_afir: remove IR response video rendering support
2023-11-19 onemda doc/filters: add one more example for afir filter usage
2023-11-14 anton tools/general_assembly: update to conform to new rules
2023-11-14 anton tools/general_assembly: make the script executable
2023-11-18 onemda avfilter/avf_showvolume: improve step for vertical orientation
2023-11-18 onemda avfilter/avf_showvolume: draw channel names directly into output frame
2023-11-15 remi lavc/llviddsp: R-V V add_bytes
2023-11-15 remi lavc/flacdsp: R-V V LPC16 function
2023-11-15 remi lavc/flacdsp: R-V V LPC32
2023-11-15 remi checkasm/flacdsp: add LPC test
2023-11-15 remi riscv: fix builds without Zbb support
2023-11-18 mypopydev lavfi/Makefile: fix vf_cropdetect missed edge_common
2023-11-10 ffmpeg-devel apply spelling fixes
2023-11-18 onemda avfilter/af_afir: add irnorm and irlink options
2023-11-14 remi lavc/flacdsp: R-V V decorrelate_indep 16-bit packed
2023-11-14 remi lavc/flacdsp: R-V V decorrelate_indep 32-bit packed
2023-11-13 remi lavc/flacdsp: R-V V decorrelate_ms packed
2023-08-16 remi lavc/flacdsp: R-V V packed decorrelate_{l,r}s
2023-11-13 remi checkasm/flacdsp: fix ls/rs/ms tests
2023-11-08 onemda avfilter/af_adynamicequalizer: add adaptive detection mode
2023-11-06 onemda avfilter/af_adynamicequalizer: do gain calculations in log domain
2023-11-03 sunyuechi af_afir: RISC-V V fcmul_add
2023-11-12 remi lavc/llauddsp: R-V V scalarproduct_and_madd_int32
2023-11-12 remi lavc/llauddsp: R-V V scalarproduct_and_madd_int16
2023-11-12 remi checkasm: add lossless audio DSP
2023-11-15 jamrial x86/flacds: clear the high bits from pred_order in lpc_32 functions
2023-11-13 jianhui.j.dai-at-intel.com avcodec/cbs_vp8: Add support for VP8 codec bitstream
2023-11-13 jianhui.j.dai-at-intel.com avcodec/vp8: Export `vp8_token_update_probs` variable
2023-11-12 remi lavc/huffyuvdsp: basic R-V V add_hfyu_left_pred_bgr32
2023-11-12 remi checkasm/huffyuvdsp: test for add_hfyu_left_pred_bgr32
(...)
2022-08-04 andreas.rheinhardt avcodec/cbs: Use RefStruct-API for unit content
2022-08-04 andreas.rheinhardt avcodec/refstruct: Allow checking for exclusive ownership
2022-08-04 andreas.rheinhardt avcodec/dovi_rpu: Use RefStruct API for Vdr data
2022-08-04 andreas.rheinhardt avcodec/wavpack: Use RefStruct API for DSD context
2023-07-17 andreas.rheinhardt avcodec/vp8: Use RefStruct API for seg_map
2022-08-04 andreas.rheinhardt avcodec/hevc_ps: Use RefStruct API for parameter sets
2022-08-04 andreas.rheinhardt avcodec/h264_ps: Use RefStruct API for SPS/PPS
2022-08-04 andreas.rheinhardt avcodec/get_buffer: Use RefStruct API for FramePool
2022-08-04 andreas.rheinhardt avcodec/refstruct: Add simple API for refcounted objects
2023-10-03 remi lavu/fixed_dsp: R-V V scalarproduct
2023-10-07 onemda avformat/wavdec: w64: do not error out for broken files if data start is found
2023-10-06 onemda avcodec/mlpenc: rename some variables related to thd
2023-10-03 andreas.rheinhardt avcodec/mpegvideo: Move allocating new_picture to the encoder
2023-07-17 jamrial fftools/ffplay: stop injecting stream side data in packets
2023-07-17 jamrial fftools/ffmpeg: stop injecting stream side data in packets
2023-07-17 jamrial avcodec/decode: propagate global side data to frames
2023-07-17 jamrial avcodec/hevcdec: check for DOVI configuration record in AVCodecContext side data
2023-07-16 jamrial fftools/ffprobe: stop using AVStream.side_data
2023-07-16 jamrial fftools/ffplay: stop using AVStream.side_data
2023-07-16 jamrial fftools/ffmpeg: stop using AVStream.side_data
2023-09-26 jamrial avcodec/packet: add some documentation for AVPacketSideData
2023-07-16 jamrial avformat/avformat: use the side data from AVStream.codecpar
2023-07-16 jamrial avcodec/codec_par: add side data to AVCodecParameters
2023-07-16 jamrial avcodec/packet: add generic side data helpers
2023-10-06 andreas.rheinhardt avfilter/vulkan_filter: Remove unused label
2023-10-06 onemda avcodec/mlpdec: set extended_substream_info from header
2023-08-26 stefasab doc/encoders/libopus: clarify lowdelay and cutoff options
2023-08-26 stefasab doc/encoders/libxvid: fix references for me_quality option
2023-08-26 stefasab doc/encoders/libx264: clarify meaning of level option
2023-08-26 stefasab lavc: clarify meaning of avctx.level option
2023-10-03 leo.izen avcodec/jpegxl_parser: fix various memory issues
2023-10-03 leo.izen avcodec/jpegxl_parser: add some icc profile checks
2023-09-01 stefasab ffprobe: introduce section type, use for the compact output
2023-09-01 stefasab ffprobe: correct section name for side data piece
2023-08-31 stefasab ffprobe: factorize side data printing to dedicated function
2023-10-03 onemda avcodec/mlpenc: restructure code and resolve several bugs
2023-10-05 dev hwcontext_vulkan: properly support STORAGE usage for mutliplane images
2023-09-30 ben vulkan_hevc: handle non-contiguous SPS/PPS/VPS ids
2023-10-03 ffmpeg-devel avcodec/svt-av1: Set force_key_frames only when gop_size == 1
2023-10-03 andreas.rheinhardt avcodec/h261dec, mpeg12dec, vc1dec: Remove setting write-only flags
2023-10-03 andreas.rheinhardt avcodec/rv10: Replace switch by LUT
2023-10-03 andreas.rheinhardt avcodec/rv10: Remove dead code
2023-10-02 andreas.rheinhardt avcodec/h263dec, mpeg4videodec: Parse extradata during init
2023-10-01 andreas.rheinhardt avcodec/mpegvideo_dec: Always initialize IDCTDSPContext during init
2023-10-01 andreas.rheinhardt avcodec/mpegvideo_dec: Don't zero context on init failure
2023-10-01 andreas.rheinhardt avcodec/mpeg12dec: Don't initialize IDCT more than once
2023-10-02 remi lavc/ac3: add R-V Zbb extract_exponents
2023-10-04 jamrial avcodec/hcadec: add a flush callback
2023-10-01 remi swscale/rgb2rgb: R-V V deinterleaveBytes
2023-10-01 remi swscale/rgb2rgb: fix extra iteration in R-V V interleave
Created with:
roll-dep src/third_party/ffmpeg
R=jrummell
Bug: 1504603
Change-Id: Ia40313bc2abcb0594543019bc8d1c22fbf7bde82
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5055586
Reviewed-by: John Rummell <jrummell@chromium.org>
Auto-Submit: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1229653}
---
DEPS | 2 +-
media/ffmpeg/ffmpeg_common.cc | 169 +++++++++---------
.../filters/audio_video_metadata_extractor.cc | 17 +-
media/filters/ffmpeg_demuxer_unittest.cc | 4 +-
third_party/ffmpeg | 2 +-
5 files changed, 97 insertions(+), 97 deletions(-)
diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc
index 3c97e4a6cf4c7..a55e4ab51d5b3 100644
--- a/media/ffmpeg/ffmpeg_common.cc
+++ b/media/ffmpeg/ffmpeg_common.cc
@@ -653,15 +653,6 @@ bool AVStreamToVideoDecoderConfig(const AVStream* stream,
profile = ProfileIDToVideoCodecProfile(codec_context->profile);
}
- void* display_matrix =
- av_stream_get_side_data(stream, AV_PKT_DATA_DISPLAYMATRIX, nullptr);
-
- VideoTransformation video_transformation = VideoTransformation();
- if (display_matrix) {
- video_transformation = VideoTransformation::FromFFmpegDisplayMatrix(
- static_cast<int32_t*>(display_matrix));
- }
-
if (!color_space.IsSpecified()) {
// VP9 frames may have color information, but that information cannot
// express new color spaces, like HDR. For that reason, color space
@@ -792,91 +792,92 @@
.copy_from_nonoverlapping(AVCodecContextToSpan(codec_context.get()));
}
- if (stream->nb_side_data) {
- for (int i = 0; i < stream->nb_side_data; ++i) {
- AVPacketSideData side_data = stream->side_data[i];
- switch (side_data.type) {
- case AV_PKT_DATA_MASTERING_DISPLAY_METADATA: {
- AVMasteringDisplayMetadata* mdcv =
- reinterpret_cast<AVMasteringDisplayMetadata*>(side_data.data);
- gfx::HdrMetadataSmpteSt2086 smpte_st_2086;
- if (mdcv->has_primaries) {
- smpte_st_2086.primaries = {
- static_cast<float>(av_q2d(mdcv->display_primaries[0][0])),
- static_cast<float>(av_q2d(mdcv->display_primaries[0][1])),
- static_cast<float>(av_q2d(mdcv->display_primaries[1][0])),
- static_cast<float>(av_q2d(mdcv->display_primaries[1][1])),
- static_cast<float>(av_q2d(mdcv->display_primaries[2][0])),
- static_cast<float>(av_q2d(mdcv->display_primaries[2][1])),
- static_cast<float>(av_q2d(mdcv->white_point[0])),
- static_cast<float>(av_q2d(mdcv->white_point[1])),
- };
- }
- if (mdcv->has_luminance) {
- smpte_st_2086.luminance_max = av_q2d(mdcv->max_luminance);
- smpte_st_2086.luminance_min = av_q2d(mdcv->min_luminance);
- }
-
- // TODO(crbug.com/40268540): Consider rejecting metadata that
- // does not specify all values.
- if (mdcv->has_primaries || mdcv->has_luminance) {
- hdr_metadata.smpte_st_2086 = smpte_st_2086;
- }
- break;
+ VideoTransformation video_transformation = VideoTransformation();
+ for (const auto& side_data :
+ AVCodecParametersCodedSideToSpan(stream->codecpar)) {
+ switch (side_data.type) {
+ case AV_PKT_DATA_DISPLAYMATRIX: {
+ CHECK_EQ(side_data.size, sizeof(int32_t) * 3 * 3);
+ video_transformation = VideoTransformation::FromFFmpegDisplayMatrix(
+ reinterpret_cast<int32_t*>(side_data.data));
+ break;
+ }
+ case AV_PKT_DATA_MASTERING_DISPLAY_METADATA: {
+ AVMasteringDisplayMetadata* mdcv =
+ reinterpret_cast<AVMasteringDisplayMetadata*>(side_data.data);
+ gfx::HdrMetadataSmpteSt2086 smpte_st_2086;
+ if (mdcv->has_primaries) {
+ smpte_st_2086.primaries = {
+ static_cast<float>(av_q2d(mdcv->display_primaries[0][0])),
+ static_cast<float>(av_q2d(mdcv->display_primaries[0][1])),
+ static_cast<float>(av_q2d(mdcv->display_primaries[1][0])),
+ static_cast<float>(av_q2d(mdcv->display_primaries[1][1])),
+ static_cast<float>(av_q2d(mdcv->display_primaries[2][0])),
+ static_cast<float>(av_q2d(mdcv->display_primaries[2][1])),
+ static_cast<float>(av_q2d(mdcv->white_point[0])),
+ static_cast<float>(av_q2d(mdcv->white_point[1])),
+ };
}
- case AV_PKT_DATA_CONTENT_LIGHT_LEVEL: {
- AVContentLightMetadata* clli =
- reinterpret_cast<AVContentLightMetadata*>(side_data.data);
- hdr_metadata.cta_861_3 =
- gfx::HdrMetadataCta861_3(clli->MaxCLL, clli->MaxFALL);
- break;
+ if (mdcv->has_luminance) {
+ smpte_st_2086.luminance_max = av_q2d(mdcv->max_luminance);
+ smpte_st_2086.luminance_min = av_q2d(mdcv->min_luminance);
+ }
+
+ // TODO(crbug.com/40268540): Consider rejecting metadata that
+ // does not specify all values.
+ if (mdcv->has_primaries || mdcv->has_luminance) {
+ hdr_metadata.smpte_st_2086 = smpte_st_2086;
}
+ break;
+ }
+ case AV_PKT_DATA_CONTENT_LIGHT_LEVEL: {
+ AVContentLightMetadata* clli =
+ reinterpret_cast<AVContentLightMetadata*>(side_data.data);
+ hdr_metadata.cta_861_3 =
+ gfx::HdrMetadataCta861_3(clli->MaxCLL, clli->MaxFALL);
+ break;
+ }
#if BUILDFLAG(ENABLE_PLATFORM_DOLBY_VISION)
- case AV_PKT_DATA_DOVI_CONF: {
- AVDOVIDecoderConfigurationRecord* dovi =
- reinterpret_cast<AVDOVIDecoderConfigurationRecord*>(
- side_data.data);
- VideoType type;
- type.codec = VideoCodec::kDolbyVision;
- type.level = dovi->dv_level;
- type.color_space = color_space;
- type.hdr_metadata_type = gfx::HdrMetadataType::kNone;
- switch (dovi->dv_profile) {
- case 0:
- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE0;
- break;
- case 4:
- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE4;
- break;
- case 5:
- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE5;
- break;
- case 7:
- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE7;
- break;
- case 8:
- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE8;
- break;
- case 9:
- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE9;
- break;
- default:
- type.profile = VideoCodecProfile::VIDEO_CODEC_PROFILE_UNKNOWN;
- break;
- }
- // Treat dolby vision contents as dolby vision codec only if the
- // device support clear DV decoding, otherwise use the original
- // HEVC or AVC codec and profile.
- if (media::IsDecoderSupportedVideoType(type)) {
- codec = type.codec;
- profile = type.profile;
- }
- break;
+ case AV_PKT_DATA_DOVI_CONF: {
+ AVDOVIDecoderConfigurationRecord* dovi =
+ reinterpret_cast<AVDOVIDecoderConfigurationRecord*>(side_data.data);
+ VideoType type;
+ type.codec = VideoCodec::kDolbyVision;
+ type.level = dovi->dv_level;
+ type.color_space = color_space;
+ type.hdr_metadata_type = gfx::HdrMetadataType::kNone;
+ switch (dovi->dv_profile) {
+ case 0:
+ type.profile = VideoCodecProfile::DOLBYVISION_PROFILE0;
+ break;
+ case 5:
+ type.profile = VideoCodecProfile::DOLBYVISION_PROFILE5;
+ break;
+ case 7:
+ type.profile = VideoCodecProfile::DOLBYVISION_PROFILE7;
+ break;
+ case 8:
+ type.profile = VideoCodecProfile::DOLBYVISION_PROFILE8;
+ break;
+ case 9:
+ type.profile = VideoCodecProfile::DOLBYVISION_PROFILE9;
+ break;
+ default:
+ type.profile = VideoCodecProfile::VIDEO_CODEC_PROFILE_UNKNOWN;
+ break;
}
+ // Treat dolby vision contents as dolby vision codec only if the
+ // device support clear DV decoding, otherwise use the original
+ // HEVC or AVC codec and profile.
+ if (media::IsDecoderSupportedVideoType(type)) {
+ codec = type.codec;
+ profile = type.profile;
+ }
+ break;
+ }
#endif // BUILDFLAG(ENABLE_PLATFORM_DOLBY_VISION)
default:
break;
- }
}
}
diff --git a/media/filters/audio_video_metadata_extractor.cc b/media/filters/audio_video_metadata_extractor.cc
index cb002490a6322..e841b4ad13383 100644
--- a/media/filters/audio_video_metadata_extractor.cc
+++ b/media/filters/audio_video_metadata_extractor.cc
@@ -118,13 +118,15 @@
return;
}
- void* display_matrix =
- av_stream_get_side_data(stream, AV_PKT_DATA_DISPLAYMATRIX, nullptr);
- if (display_matrix) {
- rotation_ = VideoTransformation::FromFFmpegDisplayMatrix(
- static_cast<int32_t*>(display_matrix))
- .rotation;
- info.tags["rotate"] = base::NumberToString(rotation_);
+ for (const auto& sd : AVCodecParametersCodedSideToSpan(stream->codecpar)) {
+ if (sd.type == AV_PKT_DATA_DISPLAYMATRIX) {
+ CHECK_EQ(sd.size, sizeof(int32_t) * 3 * 3);
+ rotation_ = VideoTransformation::FromFFmpegDisplayMatrix(
+ reinterpret_cast<int32_t*>(sd.data))
+ .rotation;
+ info.tags["rotate"] = base::NumberToString(rotation_);
+ break;
+ }
}
// Extract dictionary from streams also. Needed for containers that attach

View File

@@ -120,6 +120,13 @@ if [ -f "${OUTPUTDIR}/libqt6_shim.so" ]; then
install -m ${SHLIB_PERMS} "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/${file}" install -m ${SHLIB_PERMS} "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/${file}"
fi fi
# FFMPEG (if using the bundled one)
if [ -f "${OUTPUTDIR}/libffmpeg.so" ]; then
file="libffmpeg.so"
buildfile="${OUTPUTDIR}/${file}"
install -m ${SHLIB_PERMS} "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/${file}"
fi
# default apps # default apps
if [ -d "${OUTPUTDIR}/default_apps" ]; then if [ -d "${OUTPUTDIR}/default_apps" ]; then
cp -a "${OUTPUTDIR}/default_apps" "${STAGEDIR}/${INSTALLDIR}/" cp -a "${OUTPUTDIR}/default_apps" "${STAGEDIR}/${INSTALLDIR}/"

View File

@@ -1,8 +1,6 @@
Index: chromium-123.0.6312.46/components/autofill/core/browser/BUILD.gn --- chromium-140.0.7327.6/components/autofill/core/browser/BUILD.gn 2025/08/01 09:33:04 1.1
=================================================================== +++ chromium-140.0.7327.6/components/autofill/core/browser/BUILD.gn 2025/08/01 09:34:47
--- chromium-123.0.6312.46.orig/components/autofill/core/browser/BUILD.gn @@ -75,6 +75,11 @@
+++ chromium-123.0.6312.46/components/autofill/core/browser/BUILD.gn
@@ -64,6 +64,11 @@
} }
static_library("browser") { static_library("browser") {
@@ -12,5 +10,5 @@ Index: chromium-123.0.6312.46/components/autofill/core/browser/BUILD.gn
+ ] + ]
+ } + }
sources = [ sources = [
"autofill_browser_util.cc", "autofill_ai_form_rationalization.cc",
"autofill_browser_util.h", "autofill_ai_form_rationalization.h",

View File

@@ -1,17 +0,0 @@
Index: chromium-106.0.5249.91/media/filters/audio_file_reader.cc
===================================================================
--- chromium-106.0.5249.91.orig/media/filters/audio_file_reader.cc
+++ chromium-106.0.5249.91/media/filters/audio_file_reader.cc
@@ -243,10 +243,10 @@ bool AudioFileReader::OnNewFrame(
// silence from being output. In the case where we are also discarding some
// portion of the packet (as indicated by a negative pts), we further want to
// adjust the duration downward by however much exists before zero.
- if (audio_codec_ == AudioCodec::kAAC && frame->duration) {
+ if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) {
const base::TimeDelta pkt_duration = ConvertFromTimeBase(
glue_->format_context()->streams[stream_index_]->time_base,
- frame->duration + std::min(static_cast<int64_t>(0), frame->pts));
+ frame->pkt_duration + std::min(static_cast<int64_t>(0), frame->pts));
const base::TimeDelta frame_duration =
base::Seconds(frames_read / static_cast<double>(sample_rate_));

View File

@@ -1,42 +0,0 @@
diff -up chromium-121.0.6167.57/build/config/clang/BUILD.gn.rust-clang_lib chromium-121.0.6167.57/build/config/clang/BUILD.gn
--- chromium-121.0.6167.57/build/config/clang/BUILD.gn.rust-clang_lib 2024-01-10 16:43:01.000000000 +0100
+++ chromium-121.0.6167.57/build/config/clang/BUILD.gn 2024-01-20 19:51:38.481992799 +0100
@@ -166,8 +166,7 @@
_prefix = "lib"
_suffix = ""
_ext = "a"
-
- _clang_lib_dir = "$clang_base_path/lib/clang/$clang_version/lib"
+ _libprefix = ""
if (is_win) {
_dir = "windows"
_prefix = ""
@@ -197,7 +196,19 @@
} else {
assert(false) # Unhandled cpu type
}
- } else if (is_linux || is_chromeos) {
+ } else if (is_linux) {
+ _libprefix = "64"
+ _dir = "linux"
+ if (current_cpu == "x64") {
+ _suffix ="-x86_64"
+ } else if (current_cpu == "arm64") {
+ _suffix = "-aarch64"
+ } else if (current_cpu == "riscv64") {
+ _suffix = "-riscv64"
+ } else {
+ assert(false) # Unhandled cpu type
+ }
+ } else if (is_chromeos) {
if (current_cpu == "x64") {
_dir = "x86_64-unknown-linux-gnu"
} else if (current_cpu == "x86") {
@@ -236,6 +247,7 @@
assert(false) # Unhandled target platform
}
+ _clang_lib_dir = "$clang_base_path/lib${_libprefix}/clang/$clang_version/lib"
_lib_file = "${_prefix}clang_rt.${_libname}${_suffix}.${_ext}"
libs = [ "$_clang_lib_dir/$_dir/$_lib_file" ]

View File

@@ -1,6 +1,8 @@
--- chromium-138.0.7191.0/build/config/compiler/BUILD.gn 2025/05/26 08:54:48 1.1 Index: chromium-141.0.7378.3/build/config/compiler/BUILD.gn
+++ chromium-138.0.7191.0/build/config/compiler/BUILD.gn 2025/05/26 08:56:08 ===================================================================
@@ -310,9 +310,7 @@ --- chromium-141.0.7378.3.orig/build/config/compiler/BUILD.gn
+++ chromium-141.0.7378.3/build/config/compiler/BUILD.gn
@@ -337,9 +337,7 @@ config("compiler") {
configs += [ configs += [
# See the definitions below. # See the definitions below.
@@ -10,11 +12,11 @@
":compiler_codegen", ":compiler_codegen",
":compiler_deterministic", ":compiler_deterministic",
":clang_warning_suppression", ":clang_warning_suppression",
@@ -581,63 +579,6 @@ @@ -634,64 +632,6 @@ config("compiler") {
ldflags += [ "-Wl,-z,keep-text-section-prefix" ] ldflags += [ "-Wl,-z,keep-text-section-prefix" ]
} }
- if (is_clang && !is_nacl) { - if (is_clang) {
- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ] - cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ]
- if (save_reproducers_on_lld_crash && use_lld) { - if (save_reproducers_on_lld_crash && use_lld) {
- ldflags += [ - ldflags += [
@@ -62,19 +64,20 @@
- cflags += [ "-ffp-contract=off" ] - cflags += [ "-ffp-contract=off" ]
- } - }
- -
- # Enable ELF CREL (see crbug.com/357878242) for all platforms that use ELF - # Enable ELF CREL (see crbug.com/357878242) for all platforms that use ELF.
- # (excluding toolchains that use an older version of LLVM).
- # TODO(crbug.com/376278218): This causes segfault on Linux ARM builds. - # TODO(crbug.com/376278218): This causes segfault on Linux ARM builds.
- # It also causes segfault on Linux s390x:
- # https://github.com/llvm/llvm-project/issues/149511
- if (is_linux && use_lld && !llvm_android_mainline && current_cpu != "arm" && - if (is_linux && use_lld && !llvm_android_mainline && current_cpu != "arm" &&
- default_toolchain != "//build/toolchain/cros:target") { - current_cpu != "s390x") {
- cflags += [ "-Wa,--crel,--allow-experimental-crel" ] - cflags += [ "-Wa,--crel,--allow-experimental-crel" ]
- } - }
- } - }
- -
# C11/C++11 compiler flags setup. # C11/C++11 compiler flags setup.
# --------------------------- # ---------------------------
if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) || if (is_linux || is_chromeos || is_android || current_os == "aix") {
@@ -1596,52 +1537,6 @@ @@ -1642,43 +1582,6 @@ config("compiler_deterministic") {
} }
} }
@@ -85,26 +88,17 @@
- # different build directory like "out/feature_a" and "out/feature_b" if - # different build directory like "out/feature_a" and "out/feature_b" if
- # we build same files with same compile flag. - # we build same files with same compile flag.
- # Other paths are already given in relative, no need to normalize them. - # Other paths are already given in relative, no need to normalize them.
- if (is_nacl) {
- # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here.
- cflags += [
- "-Xclang",
- "-fdebug-compilation-dir",
- "-Xclang",
- ".",
- ]
- } else {
- # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir=
- # and -fcoverage-compilation-dir=.
- cflags += [ "-ffile-compilation-dir=." ]
- -
- # Convert absolute paths to relative paths. Expands to, for example: - # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir=
- # -file-prefix-map /path/to/chromium/src=../.. - # and -fcoverage-compilation-dir=.
- swiftflags += [ - cflags += [ "-ffile-compilation-dir=." ]
- "-file-prefix-map", -
- rebase_path("//.", "") + "=" + rebase_path("//.", root_build_dir), - # Convert absolute paths to relative paths. Expands to, for example:
- ] - # -file-prefix-map /path/to/chromium/src=../..
- } - swiftflags += [
- "-file-prefix-map",
- rebase_path("//.", "") + "=" + rebase_path("//.", root_build_dir),
- ]
- if (!is_win) { - if (!is_win) {
- # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167) - # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
- asmflags = [ "-Wa,-fdebug-compilation-dir,." ] - asmflags = [ "-Wa,-fdebug-compilation-dir,." ]
@@ -127,7 +121,7 @@
# Tells the compiler not to use absolute paths when passing the default # Tells the compiler not to use absolute paths when passing the default
# paths to the tools it invokes. We don't want this because we don't # paths to the tools it invokes. We don't want this because we don't
# really need it and it can mess up the RBE cache entries. # really need it and it can mess up the RBE cache entries.
@@ -1660,87 +1555,6 @@ @@ -1705,87 +1608,6 @@ config("compiler_deterministic") {
} }
} }
@@ -215,7 +209,7 @@
# Controls the usage of a warning suppression mapping (WSM) file to suppress # Controls the usage of a warning suppression mapping (WSM) file to suppress
# warnings based on the path of the file they come from. It's controlled by the # warnings based on the path of the file they come from. It's controlled by the
# `clang_warning_suppression_file` gn argument , which points to a text file # `clang_warning_suppression_file` gn argument , which points to a text file
@@ -2231,10 +2045,6 @@ @@ -2286,10 +2108,6 @@ config("chromium_code") {
} }
} else { } else {
cflags = [ "-Wall" ] cflags = [ "-Wall" ]
@@ -226,7 +220,7 @@
# In Chromium code, we define __STDC_foo_MACROS in order to get the # In Chromium code, we define __STDC_foo_MACROS in order to get the
# C99 macros on Mac and Linux. # C99 macros on Mac and Linux.
@@ -2243,24 +2053,6 @@ @@ -2298,24 +2116,6 @@ config("chromium_code") {
"__STDC_FORMAT_MACROS", "__STDC_FORMAT_MACROS",
] ]
@@ -242,7 +236,7 @@
- # ChromeOS's toolchain supports a high-quality _FORTIFY_SOURCE=3 - # ChromeOS's toolchain supports a high-quality _FORTIFY_SOURCE=3
- # implementation with a few custom glibc patches. Use that if it's - # implementation with a few custom glibc patches. Use that if it's
- # available. - # available.
- if (is_chromeos_device && !lacros_use_chromium_toolchain) { - if (is_chromeos_device) {
- fortify_level = "3" - fortify_level = "3"
- } - }
- defines += [ "_FORTIFY_SOURCE=" + fortify_level ] - defines += [ "_FORTIFY_SOURCE=" + fortify_level ]
@@ -251,7 +245,7 @@
if (is_apple) { if (is_apple) {
cflags_objc = [ "-Wimplicit-retain-self" ] cflags_objc = [ "-Wimplicit-retain-self" ]
cflags_objcc = [ "-Wimplicit-retain-self" ] cflags_objcc = [ "-Wimplicit-retain-self" ]
@@ -2676,7 +2468,8 @@ @@ -2735,7 +2535,8 @@ config("default_stack_frames") {
# [0]: https://pinpoint-dot-chromeperf.appspot.com/job/147634a8be0000 # [0]: https://pinpoint-dot-chromeperf.appspot.com/job/147634a8be0000
# [1]: https://pinpoint-dot-chromeperf.appspot.com/job/132bc772be0000 # [1]: https://pinpoint-dot-chromeperf.appspot.com/job/132bc772be0000
# [2]: https://crrev.com/c/5447532 # [2]: https://crrev.com/c/5447532
@@ -261,7 +255,7 @@
if (is_win) { if (is_win) {
# clang-cl's /O2 corresponds to clang's -O3, and really want -O2 for # clang-cl's /O2 corresponds to clang's -O3, and really want -O2 for
# consistency with the other platforms. # consistency with the other platforms.
@@ -2725,7 +2518,8 @@ @@ -2784,7 +2585,8 @@ config("optimize") {
} }
# Turn off optimizations. # Turn off optimizations.
@@ -271,28 +265,28 @@
if (is_win) { if (is_win) {
cflags = [ cflags = [
"/Od", # Disable optimization. "/Od", # Disable optimization.
@@ -2760,7 +2554,8 @@ @@ -2819,7 +2621,8 @@ config("no_optimize") {
# Turns up the optimization level. Used to explicitly enable -O2 instead of # Turns up the optimization level. Used to explicitly enable -O2 instead of
# -Os for select targets on platforms that use optimize_for_size. No-op # -Os for select targets on platforms that use optimize_for_size. No-op
# elsewhere. # elsewhere.
-config("optimize_max") { -config("optimize_max") {
+config("optimize_max") { } +config("optimize_max") { }
+config("xoptimize_max") { +config("xoptimize_max") {
if (is_nacl && is_nacl_irt) { ldflags = common_optimize_on_ldflags
# The NaCl IRT is a special case and always wants its own config. if (is_win) {
# Various components do: # Favor speed over size, /O2 must be before the common flags.
@@ -2793,7 +2588,8 @@ @@ -2840,7 +2643,8 @@ config("optimize_max") {
# #
# TODO(crbug.com/41259697) - rework how all of these configs are related # TODO(crbug.com/41259697) - rework how all of these configs are related
# so that we don't need this disclaimer. # so that we don't need this disclaimer.
-config("optimize_speed") { -config("optimize_speed") {
+config("optimize_speed") { } +config("optimize_speed") { }
+config("xoptimize_speed") { +config("xoptimize_speed") {
if (is_nacl && is_nacl_irt) { ldflags = common_optimize_on_ldflags
# The NaCl IRT is a special case and always wants its own config. if (is_win) {
# Various components do: # Favor speed over size, /O2 must be before the common flags.
@@ -2822,7 +2618,8 @@ @@ -2857,7 +2661,8 @@ config("optimize_speed") {
} rustflags = [ "-Copt-level=3" ]
} }
-config("optimize_fuzzing") { -config("optimize_fuzzing") {
@@ -301,7 +295,7 @@
cflags = [ "-O1" ] + common_optimize_on_cflags cflags = [ "-O1" ] + common_optimize_on_cflags
rustflags = [ "-Copt-level=1" ] rustflags = [ "-Copt-level=1" ]
ldflags = common_optimize_on_ldflags ldflags = common_optimize_on_ldflags
@@ -2953,7 +2750,8 @@ @@ -2984,7 +2789,8 @@ config("win_pdbaltpath") {
} }
# Full symbols. # Full symbols.
@@ -311,7 +305,7 @@
rustflags = [] rustflags = []
configs = [] configs = []
if (is_win) { if (is_win) {
@@ -3124,7 +2922,8 @@ @@ -3140,7 +2946,8 @@ config("symbols") {
# Minimal symbols. # Minimal symbols.
# This config guarantees to hold symbol for stack trace which are shown to user # This config guarantees to hold symbol for stack trace which are shown to user
# when crash happens in unittests running on buildbot. # when crash happens in unittests running on buildbot.
@@ -321,7 +315,7 @@
rustflags = [] rustflags = []
if (is_win) { if (is_win) {
# Functions, files, and line tables only. # Functions, files, and line tables only.
@@ -3209,7 +3008,8 @@ @@ -3216,7 +3023,8 @@ config("minimal_symbols") {
# This configuration contains function names only. That is, the compiler is # This configuration contains function names only. That is, the compiler is
# told to not generate debug information and the linker then just puts function # told to not generate debug information and the linker then just puts function
# names in the final debug information. # names in the final debug information.

View File

@@ -1,105 +0,0 @@
commit 62274859104bd828373ae406aa9309e610449ac5
Author: Ted Meyer <tmathmeyer@chromium.org>
Date: Fri Mar 22 19:56:55 2024 +0000
Replace deprecated use of AVCodecContext::reordered_opaque
We can use the AV_CODEC_FLAG_COPY_OPAQUE flag on the codec context
now to trigger timestamp propagation.
Bug: 330573128
Change-Id: I6bc57241a35ab5283742aad8d42acb4dc5e85858
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5384308
Commit-Queue: Ted (Chromium) Meyer <tmathmeyer@chromium.org>
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1277051}
diff --git a/media/filters/ffmpeg_video_decoder.cc b/media/filters/ffmpeg_video_decoder.cc
index bd75477feeabb..8a658a58caac5 100644
--- a/media/filters/ffmpeg_video_decoder.cc
+++ b/media/filters/ffmpeg_video_decoder.cc
@@ -134,7 +134,7 @@ bool FFmpegVideoDecoder::IsCodecSupported(VideoCodec codec) {
}
FFmpegVideoDecoder::FFmpegVideoDecoder(MediaLog* media_log)
- : media_log_(media_log) {
+ : media_log_(media_log), timestamp_map_(128) {
DVLOG(1) << __func__;
DETACH_FROM_SEQUENCE(sequence_checker_);
}
@@ -363,8 +363,10 @@ bool FFmpegVideoDecoder::FFmpegDecode(const DecoderBuffer& buffer) {
DCHECK(packet->data);
DCHECK_GT(packet->size, 0);
- // Let FFmpeg handle presentation timestamp reordering.
- codec_context_->reordered_opaque = buffer.timestamp().InMicroseconds();
+ const int64_t timestamp = buffer.timestamp().InMicroseconds();
+ const TimestampId timestamp_id = timestamp_id_generator_.GenerateNextId();
+ timestamp_map_.Put(std::make_pair(timestamp_id, timestamp));
+ packet->opaque = reinterpret_cast<void*>(timestamp_id.GetUnsafeValue());
}
FFmpegDecodingLoop::DecodeStatus decode_status = decoding_loop_->DecodePacket(
packet, base::BindRepeating(&FFmpegVideoDecoder::OnNewFrame,
@@ -423,7 +425,12 @@ bool FFmpegVideoDecoder::OnNewFrame(AVFrame* frame) {
}
gfx::Size natural_size = aspect_ratio.GetNaturalSize(visible_rect);
- const auto pts = base::Microseconds(frame->reordered_opaque);
+ const auto ts_id = TimestampId(reinterpret_cast<size_t>(frame->opaque));
+ const auto ts_lookup = timestamp_map_.Get(ts_id);
+ if (ts_lookup == timestamp_map_.end()) {
+ return false;
+ }
+ const auto pts = base::Microseconds(std::get<1>(*ts_lookup));
auto video_frame = VideoFrame::WrapExternalDataWithLayout(
opaque->layout, visible_rect, natural_size, opaque->data, opaque->size,
pts);
@@ -482,8 +482,10 @@ bool FFmpegVideoDecoder::ConfigureDecoder(const VideoDecoderConfig& config,
codec_context_->thread_count = GetFFmpegVideoDecoderThreadCount(config);
codec_context_->thread_type =
FF_THREAD_SLICE | (low_delay ? 0 : FF_THREAD_FRAME);
+
codec_context_->opaque = this;
codec_context_->get_buffer2 = GetVideoBufferImpl;
+ codec_context_->flags |= AV_CODEC_FLAG_COPY_OPAQUE;
if (decode_nalus_) {
codec_context_->flags2 |= AV_CODEC_FLAG2_CHUNKS;
diff --git a/media/filters/ffmpeg_video_decoder.h b/media/filters/ffmpeg_video_decoder.h
index d02cb89c3ddf7..0a2de1c623fff 100644
--- a/media/filters/ffmpeg_video_decoder.h
+++ b/media/filters/ffmpeg_video_decoder.h
@@ -7,10 +7,12 @@
#include <memory>
+#include "base/containers/lru_cache.h"
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/scoped_refptr.h"
#include "base/sequence_checker.h"
+#include "base/types/id_type.h"
#include "media/base/frame_buffer_pool.h"
#include "media/base/supported_video_decoder_config.h"
#include "media/base/video_decoder.h"
@@ -87,6 +89,20 @@ class MEDIA_EXPORT FFmpegVideoDecoder : public VideoDecoder {
// FFmpeg structures owned by this object.
std::unique_ptr<AVCodecContext, ScopedPtrAVFreeContext> codec_context_;
+ // The gist here is that timestamps need to be 64 bits to store microsecond
+ // precision. A 32 bit integer would overflow at ~35 minutes at this level of
+ // precision. We can't cast the timestamp to the void ptr object used by the
+ // opaque field in ffmpeg then, because it would lose data on a 32 bit build.
+ // However, we don't actually have 2^31 timestamped frames in a single
+ // playback, so it's fine to use the 32 bit value as a key in a map which
+ // contains the actual timestamps. Additionally, we've in the past set 128
+ // outstanding frames for re-ordering as a limit for cross-thread decoding
+ // tasks, so we'll do that here too with the LRU cache.
+ using TimestampId = base::IdType<int64_t, size_t, 0>;
+
+ TimestampId::Generator timestamp_id_generator_;
+ base::LRUCache<TimestampId, int64_t> timestamp_map_;
+
VideoDecoderConfig config_;
scoped_refptr<FrameBufferPool> frame_pool_;

View File

@@ -1,6 +1,8 @@
--- chromium-133.0.6943.98/media/base/media_switches.h 2025/02/18 15:56:48 1.1 Index: chromium-141.0.7378.3/media/base/media_switches.h
+++ chromium-133.0.6943.98/media/base/media_switches.h 2025/02/18 15:57:20 ===================================================================
@@ -516,6 +516,8 @@ --- chromium-141.0.7378.3.orig/media/base/media_switches.h
+++ chromium-141.0.7378.3/media/base/media_switches.h
@@ -519,6 +519,8 @@ MEDIA_EXPORT BASE_DECLARE_FEATURE(
MEDIA_EXPORT BASE_DECLARE_FEATURE(kUseWindowBoundsForPip); MEDIA_EXPORT BASE_DECLARE_FEATURE(kUseWindowBoundsForPip);
@@ -9,11 +11,13 @@
MEDIA_EXPORT BASE_DECLARE_FEATURE(kMediaLogToConsole); MEDIA_EXPORT BASE_DECLARE_FEATURE(kMediaLogToConsole);
MEDIA_EXPORT BASE_DECLARE_FEATURE(kLibvpxUseChromeThreads); MEDIA_EXPORT BASE_DECLARE_FEATURE(kLibvpxUseChromeThreads);
--- chromium-133.0.6943.98/media/base/media_switches.cc 2025/02/18 15:56:07 1.1 Index: chromium-141.0.7378.3/media/base/media_switches.cc
+++ chromium-133.0.6943.98/media/base/media_switches.cc 2025/02/18 15:56:48 ===================================================================
@@ -1657,6 +1657,11 @@ --- chromium-141.0.7378.3.orig/media/base/media_switches.cc
"UseWindowBoundsForPip", +++ chromium-141.0.7378.3/media/base/media_switches.cc
base::FEATURE_ENABLED_BY_DEFAULT); @@ -1687,6 +1687,11 @@ bool IsRestrictOwnAudioSupported() {
#endif
}
+// Enables FFmpeg allow lists for supported codecs / containers. +// Enables FFmpeg allow lists for supported codecs / containers.
+BASE_FEATURE(kFFmpegAllowLists, +BASE_FEATURE(kFFmpegAllowLists,
@@ -21,11 +25,13 @@
+ base::FEATURE_DISABLED_BY_DEFAULT); + base::FEATURE_DISABLED_BY_DEFAULT);
+ +
#if BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_WIN)
// Enables audio offload when supported by endpoints. bool IsMediaFoundationD3D11VideoCaptureEnabled() {
BASE_FEATURE(kAudioOffload, "AudioOffload", base::FEATURE_DISABLED_BY_DEFAULT); return base::FeatureList::IsEnabled(kMediaFoundationD3D11VideoCapture);
--- chromium-133.0.6943.98/media/ffmpeg/ffmpeg_common.cc 2025/02/18 16:03:18 1.1 Index: chromium-141.0.7378.3/media/ffmpeg/ffmpeg_common.cc
+++ chromium-133.0.6943.98/media/ffmpeg/ffmpeg_common.cc 2025/02/18 16:04:02 ===================================================================
@@ -19,6 +19,7 @@ --- chromium-141.0.7378.3.orig/media/ffmpeg/ffmpeg_common.cc
+++ chromium-141.0.7378.3/media/ffmpeg/ffmpeg_common.cc
@@ -16,6 +16,7 @@
#include "media/base/audio_decoder_config.h" #include "media/base/audio_decoder_config.h"
#include "media/base/decoder_buffer.h" #include "media/base/decoder_buffer.h"
#include "media/base/encryption_scheme.h" #include "media/base/encryption_scheme.h"
@@ -33,7 +39,7 @@
#include "media/base/media_util.h" #include "media/base/media_util.h"
#include "media/base/supported_types.h" #include "media/base/supported_types.h"
#include "media/base/video_aspect_ratio.h" #include "media/base/video_aspect_ratio.h"
@@ -76,7 +76,8 @@ @@ -72,7 +73,8 @@ const char* GetAllowedVideoDecoders() {
void ApplyCodecContextSecuritySettings(AVCodecContext* codec_context) { void ApplyCodecContextSecuritySettings(AVCodecContext* codec_context) {
// Future versions of ffmpeg may copy the allow list from the format // Future versions of ffmpeg may copy the allow list from the format
// context. // context.
@@ -43,9 +49,11 @@
// Note: FFmpeg will try to free this string, so we must duplicate it. // Note: FFmpeg will try to free this string, so we must duplicate it.
codec_context->codec_whitelist = codec_context->codec_whitelist =
av_strdup(codec_context->codec_type == AVMEDIA_TYPE_AUDIO av_strdup(codec_context->codec_type == AVMEDIA_TYPE_AUDIO
--- chromium-133.0.6943.98/media/filters/ffmpeg_glue.cc 2025/02/18 16:06:06 1.1 Index: chromium-141.0.7378.3/media/filters/ffmpeg_glue.cc
+++ chromium-133.0.6943.98/media/filters/ffmpeg_glue.cc 2025/02/18 16:07:06 ===================================================================
@@ -131,8 +131,10 @@ --- chromium-141.0.7378.3.orig/media/filters/ffmpeg_glue.cc
+++ chromium-141.0.7378.3/media/filters/ffmpeg_glue.cc
@@ -137,8 +137,10 @@ FFmpegGlue::FFmpegGlue(FFmpegURLProtocol
// memory usage. // memory usage.
// //
// Note: FFmpeg will try to free these strings, so we must duplicate them. // Note: FFmpeg will try to free these strings, so we must duplicate them.

View File

@@ -1,22 +0,0 @@
--- chromium-135.0.7023.0/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc 2025/04/04 08:28:56 1.1
+++ chromium-135.0.7023.0/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc 2025/04/04 08:29:47
@@ -34,6 +34,10 @@
#include "sandbox/linux/system_headers/linux_syscalls.h"
#include "sandbox/linux/system_headers/linux_time.h"
+#if !defined(MAP_DROPPABLE)
+#define MAP_DROPPABLE 0x08 // Zero memory under memory pressure.
+#endif
+
#if BUILDFLAG(IS_LINUX) && !defined(__arm__) && !defined(__aarch64__) && \
!defined(PTRACE_GET_THREAD_AREA)
// Also include asm/ptrace-abi.h since ptrace.h in older libc (for instance
@@ -236,7 +240,7 @@
// TODO(davidung), remove MAP_DENYWRITE with updated Tegra libraries.
const uint64_t kAllowedMask = MAP_SHARED | MAP_PRIVATE | MAP_ANONYMOUS |
MAP_STACK | MAP_NORESERVE | MAP_FIXED |
- MAP_DENYWRITE | MAP_LOCKED |
+ MAP_DENYWRITE | MAP_LOCKED | MAP_DROPPABLE |
kArchSpecificAllowedMask;
const Arg<int> flags(3);
return If((flags & ~kAllowedMask) == 0, Allow()).Else(CrashSIGSYS());

View File

@@ -1,122 +0,0 @@
--- chromium-138.0.7166.2/media/ffmpeg/ffmpeg_common.cc 2025/05/13 09:04:46 1.1
+++ chromium-138.0.7166.2/media/ffmpeg/ffmpeg_common.cc 2025/05/13 09:05:59
@@ -263,22 +263,22 @@
static VideoCodecProfile ProfileIDToVideoCodecProfile(int profile) {
// Clear out the CONSTRAINED & INTRA flags which are strict subsets of the
// corresponding profiles with which they're used.
- profile &= ~AV_PROFILE_H264_CONSTRAINED;
- profile &= ~AV_PROFILE_H264_INTRA;
+ profile &= ~FF_PROFILE_H264_CONSTRAINED;
+ profile &= ~FF_PROFILE_H264_INTRA;
switch (profile) {
- case AV_PROFILE_H264_BASELINE:
+ case FF_PROFILE_H264_BASELINE:
return H264PROFILE_BASELINE;
- case AV_PROFILE_H264_MAIN:
+ case FF_PROFILE_H264_MAIN:
return H264PROFILE_MAIN;
- case AV_PROFILE_H264_EXTENDED:
+ case FF_PROFILE_H264_EXTENDED:
return H264PROFILE_EXTENDED;
- case AV_PROFILE_H264_HIGH:
+ case FF_PROFILE_H264_HIGH:
return H264PROFILE_HIGH;
- case AV_PROFILE_H264_HIGH_10:
+ case FF_PROFILE_H264_HIGH_10:
return H264PROFILE_HIGH10PROFILE;
- case AV_PROFILE_H264_HIGH_422:
+ case FF_PROFILE_H264_HIGH_422:
return H264PROFILE_HIGH422PROFILE;
- case AV_PROFILE_H264_HIGH_444_PREDICTIVE:
+ case FF_PROFILE_H264_HIGH_444_PREDICTIVE:
return H264PROFILE_HIGH444PREDICTIVEPROFILE;
default:
DVLOG(1) << "Unknown profile id: " << profile;
@@ -289,23 +289,23 @@
static int VideoCodecProfileToProfileID(VideoCodecProfile profile) {
switch (profile) {
case H264PROFILE_BASELINE:
- return AV_PROFILE_H264_BASELINE;
+ return FF_PROFILE_H264_BASELINE;
case H264PROFILE_MAIN:
- return AV_PROFILE_H264_MAIN;
+ return FF_PROFILE_H264_MAIN;
case H264PROFILE_EXTENDED:
- return AV_PROFILE_H264_EXTENDED;
+ return FF_PROFILE_H264_EXTENDED;
case H264PROFILE_HIGH:
- return AV_PROFILE_H264_HIGH;
+ return FF_PROFILE_H264_HIGH;
case H264PROFILE_HIGH10PROFILE:
- return AV_PROFILE_H264_HIGH_10;
+ return FF_PROFILE_H264_HIGH_10;
case H264PROFILE_HIGH422PROFILE:
- return AV_PROFILE_H264_HIGH_422;
+ return FF_PROFILE_H264_HIGH_422;
case H264PROFILE_HIGH444PREDICTIVEPROFILE:
- return AV_PROFILE_H264_HIGH_444_PREDICTIVE;
+ return FF_PROFILE_H264_HIGH_444_PREDICTIVE;
default:
DVLOG(1) << "Unknown VideoCodecProfile: " << profile;
}
- return AV_PROFILE_UNKNOWN;
+ return FF_PROFILE_UNKNOWN;
}
SampleFormat AVSampleFormatToSampleFormat(AVSampleFormat sample_format,
@@ -441,7 +441,7 @@
// TODO(dalecurtis): Just use the profile from the codec context if ffmpeg
// ever starts supporting xHE-AAC.
// FFmpeg provides the (defined_profile - 1) for AVCodecContext::profile
- if (codec_context->profile == AV_PROFILE_UNKNOWN ||
+ if (codec_context->profile == FF_PROFILE_UNKNOWN ||
codec_context->profile == mp4::AAC::kXHeAAcType - 1) {
// Errors aren't fatal here, so just drop any MediaLog messages.
NullMediaLog media_log;
@@ -659,16 +659,16 @@
break;
case VideoCodec::kVP9:
switch (codec_context->profile) {
- case AV_PROFILE_VP9_0:
+ case FF_PROFILE_VP9_0:
profile = VP9PROFILE_PROFILE0;
break;
- case AV_PROFILE_VP9_1:
+ case FF_PROFILE_VP9_1:
profile = VP9PROFILE_PROFILE1;
break;
- case AV_PROFILE_VP9_2:
+ case FF_PROFILE_VP9_2:
profile = VP9PROFILE_PROFILE2;
break;
- case AV_PROFILE_VP9_3:
+ case FF_PROFILE_VP9_3:
profile = VP9PROFILE_PROFILE3;
break;
default:
--- chromium-138.0.7166.2/media/filters/ffmpeg_aac_bitstream_converter.cc 2025/05/13 09:04:59 1.1
+++ chromium-138.0.7166.2/media/filters/ffmpeg_aac_bitstream_converter.cc 2025/05/13 09:05:59
@@ -68,17 +68,17 @@
hdr[1] |= 1;
switch (audio_profile) {
- case AV_PROFILE_AAC_MAIN:
+ case FF_PROFILE_AAC_MAIN:
break;
- case AV_PROFILE_AAC_HE:
- case AV_PROFILE_AAC_HE_V2:
- case AV_PROFILE_AAC_LOW:
+ case FF_PROFILE_AAC_HE:
+ case FF_PROFILE_AAC_HE_V2:
+ case FF_PROFILE_AAC_LOW:
hdr[2] |= (1 << 6);
break;
- case AV_PROFILE_AAC_SSR:
+ case FF_PROFILE_AAC_SSR:
hdr[2] |= (2 << 6);
break;
- case AV_PROFILE_AAC_LTP:
+ case FF_PROFILE_AAC_LTP:
hdr[2] |= (3 << 6);
break;
default:

View File

@@ -0,0 +1,11 @@
--- chromium-139.0.7258.5/build/config/compiler/BUILD.gn 2025/07/29 08:34:15 1.1
+++ chromium-139.0.7258.5/build/config/compiler/BUILD.gn 2025/07/29 08:35:44
@@ -1613,7 +1613,7 @@
# Eliminate build metadata (__DATE__, __TIME__ and __TIMESTAMP__) for
# deterministic build. See https://crbug.com/314403
- if (!is_official_build) {
+ if (true) {
if (is_win && !is_clang) {
cflags += [
"/wd4117", # Trying to define or undefine a predefined macro.

View File

@@ -0,0 +1,11 @@
--- chromium-139.0.7258.66/third_party/pdfium/third_party/libopenjpeg/jp2.c 2025/08/06 10:46:12 1.1
+++ chromium-139.0.7258.66/third_party/pdfium/third_party/libopenjpeg/jp2.c 2025/08/06 10:46:36
@@ -2899,7 +2899,7 @@
p_image,
p_manager);
- if (p_image && *p_image) {
+ if (ret && p_image && *p_image) {
/* Set Image Color Space */
if (jp2->enumcs == 16) {
(*p_image)->color_space = OPJ_CLRSPC_SRGB;

BIN
chromium-139.0.7219.3.tar.xz (Stored with Git LFS)

Binary file not shown.

View File

@@ -0,0 +1,17 @@
Index: chromium-141.0.7378.3/build/rust/allocator/lib.rs
===================================================================
--- chromium-141.0.7378.3.orig/build/rust/allocator/lib.rs
+++ chromium-141.0.7378.3/build/rust/allocator/lib.rs
@@ -96,6 +96,12 @@ mod both_allocators {
0
}
+ // TODO(crbug.com/422538133) Remove after rolling past
+ // https://github.com/rust-lang/rust/pull/141061
+ #[no_mangle]
+ #[linkage = "weak"]
+ static __rust_no_alloc_shim_is_unstable: u8 = 0;
+
// Mangle the symbol name as rustc expects.
// TODO(crbug.com/440481922): Remove this after rolling past https://github.com/rust-lang/rust/pull/143387
#[rustc_std_internal_symbol]

View File

@@ -0,0 +1,11 @@
--- chromium-140.0.7339.5/media/audio/flac_audio_handler.cc 2025/08/13 10:29:53 1.1
+++ chromium-140.0.7339.5/media/audio/flac_audio_handler.cc 2025/08/13 10:30:09
@@ -166,7 +166,7 @@
// `FLAC__STREAM_DECODER_ERROR_STATUS_BAD_METADATA` is the last enumeration
// value of `FLAC__StreamDecoderErrorStatus`. The legal status value should be
// less than or equal to it.
- CHECK_LE(status, FLAC__STREAM_DECODER_ERROR_STATUS_BAD_METADATA);
+ // CHECK_LE(status, FLAC__STREAM_DECODER_ERROR_STATUS_BAD_METADATA);
LOG(ERROR) << "Got an error callback: "
// SAFETY: The above CHECK ensures that `status` does not exceed
// the length of `FLAC__StreamDecoderErrorStatusString`

BIN
chromium-141.0.7390.7-linux.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -1,16 +0,0 @@
References: https://bugs.chromium.org/p/chromium/issues/detail?id=1192875
Index: chromium-91.0.4472.57/third_party/closure_compiler/compiler.py
===================================================================
--- chromium-91.0.4472.57.orig/third_party/closure_compiler/compiler.py
+++ chromium-91.0.4472.57/third_party/closure_compiler/compiler.py
@@ -13,8 +13,7 @@ import subprocess
_CURRENT_DIR = os.path.join(os.path.dirname(__file__))
-_JAVA_PATH = os.path.join(_CURRENT_DIR, "..", "jdk", "current", "bin", "java")
-assert os.path.isfile(_JAVA_PATH), "java only allowed in android builds"
+_JAVA_PATH = "java"
class Compiler(object):
"""Runs the Closure compiler on given source files to typecheck them

View File

@@ -1,59 +0,0 @@
From: 52c3e9c0f140a8742034e107fb0f371c0d73bf1d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Beh=C3=BAn?= <kabel@kernel.org>
Date: Sun, 12 Sep 2021 04:20:11 +0200
Subject: [PATCH] chromium-93: fix building with system-ffmpeg
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The version of ffmpeg bundled in Chromium changed ABI a little, which
affected the code in that the type of the last parameter of
av_packet_get_side_data() is now size_t instead of int.
This causes Chromium to fail to build with system-ffmpeg if the system
ffmpeg's version does not yet have this ABI change.
Fix the code to be able to compile with older ffmpeg as well.
Signed-off-by: Marek Behún <kabel@kernel.org>
---
media/filters/audio_decoder_unittest.cc | 4 ++++
media/filters/ffmpeg_demuxer.cc | 16 ++++++++++++++++
2 files changed, 20 insertions(+)
Index: chromium-126.0.6478.8/media/filters/ffmpeg_demuxer.cc
===================================================================
--- chromium-126.0.6478.8.orig/media/filters/ffmpeg_demuxer.cc
+++ chromium-126.0.6478.8/media/filters/ffmpeg_demuxer.cc
@@ -343,11 +343,19 @@
}
base::span<const uint8_t> GetSideData(const AVPacket* packet) {
+#if LIBAVUTIL_VERSION_MAJOR < 57
+ int side_data_size = 0;
+#else
size_t side_data_size = 0;
+#endif
uint8_t* side_data = av_packet_get_side_data(
packet, AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size);
+#if LIBAVUTIL_VERSION_MAJOR < 57
+ return base::span<const uint8_t>(side_data, base::checked_cast<size_t>(side_data_size));
+#else
return base::span<const uint8_t>(side_data, side_data_size);
+#endif
}
void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
@@ -474,7 +482,11 @@
base::HeapArray<uint8_t>::CopiedFrom(side_data);
}
+#if LIBAVUTIL_VERSION_MAJOR < 57
+ int skip_samples_size = 0;
+#else
size_t skip_samples_size = 0;
+#endif
const uint32_t* skip_samples_ptr =
reinterpret_cast<const uint32_t*>(av_packet_get_side_data(
packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size));

View File

@@ -1,39 +0,0 @@
From: 52c3e9c0f140a8742034e107fb0f371c0d73bf1d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Beh=C3=BAn?= <kabel@kernel.org>
Date: Sun, 12 Sep 2021 04:20:11 +0200
Subject: [PATCH] chromium-93: fix building with system-ffmpeg
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The version of ffmpeg bundled in Chromium changed ABI a little, which
affected the code in that the type of the last parameter of
av_packet_get_side_data() is now size_t instead of int.
This causes Chromium to fail to build with system-ffmpeg if the system
ffmpeg's version does not yet have this ABI change.
Fix the code to be able to compile with older ffmpeg as well.
Signed-off-by: Marek Behún <kabel@kernel.org>
---
media/filters/audio_decoder_unittest.cc | 4 ++++
media/filters/ffmpeg_demuxer.cc | 16 ++++++++++++++++
2 files changed, 20 insertions(+)
Index: chromium-126.0.6478.8/media/filters/audio_decoder_unittest.cc
===================================================================
--- chromium-126.0.6478.8.orig/media/filters/audio_decoder_unittest.cc
+++ chromium-126.0.6478.8/media/filters/audio_decoder_unittest.cc
@@ -109,7 +109,11 @@ void SetDiscardPadding(AVPacket* packet,
}
// If the timestamp is positive, try to use FFmpeg's discard data.
+#if LIBAVUTIL_VERSION_MAJOR < 57
+ int skip_samples_size = 0;
+#else
size_t skip_samples_size = 0;
+#endif
const uint32_t* skip_samples_ptr =
reinterpret_cast<const uint32_t*>(av_packet_get_side_data(
packet, AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size));

View File

@@ -1,10 +1,10 @@
diff -up chromium-48.0.2564.116/services/device/usb/usb_context.cc.modern-libusbx chromium-48.0.2564.116/device/usb/usb_context.cc diff -up chromium-48.0.2564.116/services/device/usb/usb_context.cc.modern-libusbx chromium-48.0.2564.116/device/usb/usb_context.cc
--- chromium-48.0.2564.116/services/device/usb/usb_context.cc.modern-libusbx 2016-02-24 10:21:10.534996028 -0500 --- chromium-48.0.2564.116/services/device/usb/usb_context.cc.modern-libusbx 2016-02-24 10:21:10.534996028 -0500
+++ chromium-48.0.2564.116/services/device/usb/usb_context.cc 2016-02-24 10:22:28.270499864 -0500 +++ chromium-48.0.2564.116/services/device/usb/usb_context.cc 2016-02-24 10:22:28.270499864 -0500
@@ -57,7 +57,11 @@ void UsbContext::UsbEventHandler::Run() @@ -63,7 +63,11 @@
void UsbContext::UsbEventHandler::Stop() { void UsbContext::UsbEventHandler::Stop() {
base::subtle::Release_Store(&running_, 0); running_.store(false, std::memory_order_release);
+#ifdef LIBUSB_API_VERSION >= 0x01000105 +#ifdef LIBUSB_API_VERSION >= 0x01000105
+ libusb_interrupt_event_handler(context_); + libusb_interrupt_event_handler(context_);
+#else +#else

BIN
chromium-symbolic.svg (Stored with Git LFS)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 129 B

View File

@@ -1,201 +0,0 @@
From b9f7ffacaa06eb2b1ef1d8f1600845a048ada0d6 Mon Sep 17 00:00:00 2001
From: Devon Loehr <dloehr@google.com>
Date: Wed, 26 Mar 2025 06:55:13 -0700
Subject: [PATCH] Add warning suppression mapping file to the build
This adds an (empty) warning suppression mapping file, per the linked bug. It controls its use by adding a new gn arg pointing to the file, and passing the WSM to each clang compilation if the arg is set. Since the arg is set in our `.gn` file, consumers of our `build/` directory will see no change, but can choose to use their own WSM file if they wish.
It also contains some hacks/configs to make sure the file gets uploaded by reclient/siso.
So far, the file is unused, but we'll start filling it out as we make progress enabling warnings.
Change-Id: I0493109c1c365643b97de937286ca7d0a4f89729
Bug: 404297941
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6344734
Reviewed-by: Hans Wennborg <hans@chromium.org>
Commit-Queue: Devon Loehr <dloehr@google.com>
Cr-Commit-Position: refs/heads/main@{#1438081}
diff --git a/.gn b/.gn
index 3f65718281973..54d2631ec2032 100644
--- a/.gn
+++ b/.gn
@@ -74,6 +74,7 @@ default_args = {
devtools_visibility = [ "*" ]
clang_unsafe_buffers_paths = "//build/config/unsafe_buffers_paths.txt"
+ clang_warning_suppression_file = "//build/config/warning_suppression.txt"
}
# These are the targets to skip header checking by default. The files in targets
diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn
index 3f3ea354f3ee6..a9d2caeb1c92e 100644
--- a/build/config/BUILDCONFIG.gn
+++ b/build/config/BUILDCONFIG.gn
@@ -184,6 +184,7 @@ declare_args() {
# Unsafe buffers. Location of file used by plugins to track portions of
# the codebase which have been made manifestly safe.
clang_unsafe_buffers_paths = ""
+ clang_warning_suppression_file = ""
}
# ==============================================================================
diff --git a/build/config/OWNERS b/build/config/OWNERS
index 8a097f03eee10..2dbcc3916d893 100644
--- a/build/config/OWNERS
+++ b/build/config/OWNERS
@@ -5,3 +5,8 @@ per-file cast.gni=file://build/config/chromecast/OWNERS
per-file unsafe_buffers_paths.txt=arthursonzogni@chromium.org
per-file unsafe_buffers_paths.txt=tsepez@chromium.org
+
+per-file warning_suppression.txt=dloehr@google.com
+per-file warning_suppression.txt=thakis@chromium.org
+per-file warning_suppression.txt=hans@chromium.org
+per-file warning_suppression.txt=tsepez@chromium.org
diff --git a/build/config/clang/clang.gni b/build/config/clang/clang.gni
index e120a847c6d43..2ad331d38f6b6 100644
--- a/build/config/clang/clang.gni
+++ b/build/config/clang/clang.gni
@@ -51,19 +51,20 @@
lld_emit_indexes_and_imports && is_a_target_toolchain
# TODO(crbug.com/326584510): Reclient does not upload `inputs` from C/C++
-# targets. This file is added to `inputs` for all C targets in
-# //build/config/BUILDCONFIG.gn via //build/config/clang:unsafe_buffers.
-# We work around the bug in Reclient by specifying the file here.
-#
-# This is a comma-delimited list of paths relative to the source tree root. The
-# leading space is important, if the string is non-empty. :)
-rbe_bug_326584510_missing_inputs = ""
+# targets. We work around the bug in Reclient by
+# specifying the files here.
+rbe_bug_326584510_missing_input_list = []
if (clang_use_chrome_plugins && defined(clang_unsafe_buffers_paths) &&
"$clang_unsafe_buffers_paths" != "") {
- if (rbe_exec_root != rebase_path("//")) {
- assert(!use_siso, "Can't use non-default rbe_exec_root with siso.")
- }
- from_exec_root = rebase_path(clang_unsafe_buffers_paths, rbe_exec_root)
- rbe_bug_326584510_missing_inputs = " -inputs=$from_exec_root"
+ rbe_bug_326584510_missing_input_list +=
+ [ rebase_path(clang_unsafe_buffers_paths, rbe_exec_root) ]
+}
+if (defined(clang_warning_suppression_file) &&
+ "$clang_warning_suppression_file" != "") {
+ rbe_bug_326584510_missing_input_list +=
+ [ rebase_path(clang_warning_suppression_file, rbe_exec_root) ]
}
+# The leading space is important, if the string is non-empty.
+rbe_bug_326584510_missing_inputs =
+ " -inputs=" + string_join(",", rbe_bug_326584510_missing_input_list)
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index 037d3b769add3..5b07f038e6bab 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -313,8 +313,19 @@
":rustc_revision",
":compiler_codegen",
":compiler_deterministic",
+ ":clang_warning_suppression",
]
+ # TODO(https://crbug.com/404297941): Disable clang_warning_suppression
+ # configuration because the ICECC build doesn't distribute the
+ # warning_suppression.txt file to other ICECC nodes. As a result, the nodes
+ # cannot locate the file during target compilation. Therefore, we are
+ # disabling the clang_warning_suppression configuration for ICECC builds for
+ # now.
+ if (cc_wrapper == "icecc") {
+ configs -= [ ":clang_warning_suppression" ]
+ }
+
# Here we enable -fno-delete-null-pointer-checks, which makes various nullptr
# operations (e.g. dereferencing) into defined behavior. This avoids deletion
# of some security-critical code: see https://crbug.com/1139129.
@@ -1544,6 +1555,28 @@
}
}
+# Controls the usage of a warning suppression mapping (WSM) file to suppress
+# warnings based on the path of the file they come from. It's controlled by the
+# `clang_warning_suppression_file` gn argument , which points to a text file
+# defining which warnings should be suppressed where.
+# See //build/config/warning_suppression.txt for an example file; this is the
+# file used by Chromium.
+#
+# To use a different file, or to use this functionality outside of chromium,
+# set the `clang_warning_suppression_file` argument to point to the new file,
+# e.g. by setting in the the project's .gn file.
+config("clang_warning_suppression") {
+ # Some build configs use older versions of clang that don't support WSMs
+ if (!is_nacl && default_toolchain != "//build/toolchain/cros:target" &&
+ !llvm_android_mainline && is_clang &&
+ clang_warning_suppression_file != "") {
+ from_build_root =
+ rebase_path(clang_warning_suppression_file, root_build_dir)
+ inputs = [ clang_warning_suppression_file ]
+ cflags = [ "--warning-suppression-mappings=" + from_build_root ]
+ }
+}
+
config("rustc_revision") {
if (rustc_revision != "") {
# Similar to the above config, this is here so that all files get recompiled
diff --git a/build/config/siso/clang_all.star b/build/config/siso/clang_all.star
index 9aea43bd81883..ca062f967b5d1 100644
--- a/build/config/siso/clang_all.star
+++ b/build/config/siso/clang_all.star
@@ -13,6 +13,7 @@
__clang_plugin_configs = [
"build/config/unsafe_buffers_paths.txt",
+ "build/config/warning_suppression.txt",
# crbug.com/418842344: Angle, PDFium use a different plugin config.
"unsafe_buffers_paths.txt",
]
diff --git a/build/config/warning_suppression.txt b/build/config/warning_suppression.txt
new file mode 100644
index 0000000000000..4f78ea84d3a93
--- /dev/null
+++ b/build/config/warning_suppression.txt
@@ -0,0 +1,37 @@
+# Copyright 2025 The Chromium Project. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This file is used to suppress warnings based on the file they originate from,
+# as opposed to disabling warnings via -Wno flags which apply to all the files
+# involved in each compilation. For more information, see
+# https://clang.llvm.org/docs/WarningSuppressionMappings.html
+# For background information on their use in chromium, see crbug.com/404297941
+
+# Warning Suppression Policy: updates to this file should be tightly controlled,
+# for reasons discussed in crbug.com/404297941. In particular:
+#
+# 1. This file should never grow (as measured by the number of files suppressed)
+# except when a new warning is enabled.
+# 2. This file should only be used to opt out whole directories, never
+# individual files.
+# 3. This file should be used as a last resort; if it's possible to fix the warning or suppress
+# it without using the file, do so.
+# 1. For first-party code, just fix it directly, or use `#pragma GCC diagnostic ignored`.
+# 2. For third-party code, first attempt to fix it upstream.
+# 3. If that's not possible, attempt to suppress the warning using `-Wno` flags in a gn file.
+# 4. All entries should have a path to eventually be removed.
+#
+# In practice, rules (3) and (4) mean that the only accepted use case for this file is to
+# speed up rolls or enable a warning slightly sooner, for cases where an upstream fix has been
+# proposed but is likely to take a long time to get merged and rolled into chromium.
+#
+# We may make an exception to the policy for extremely high-value warnings that backslide a lot
+# (such as unsafe buffers), but this is expected to be rare.
+
+# Formatting note: Don't put comments on the same line as a glob pattern! Clang
+# will get confused and the warning won't be suppressed.
+
+[unnecessary-virtual-specifier]
+# Can be removed when https://github.com/google/nearby/pull/3392 is merged and rolled
+src:*/third_party/nearby/*
\ No newline at end of file

View File

@@ -1,8 +1,203 @@
------------------------------------------------------------------- -------------------------------------------------------------------
Fri May 30 22:55:54 CEST 2025 - ro@suse.de Thu Sep 4 19:45:18 UTC 2025 - Andreas Stieger <andreas.stieger@gmx.de>
- Chromium 141.0.7390.7
(dev released 2025-09-04)
- dropped patches:
ppc-fedora-fix-rustc.patch (obsolete)
chromium-121-rust-clang_lib.patch
chromium-135-add_map_droppable.patch
-------------------------------------------------------------------
Thu Aug 28 18:06:15 UTC 2025 - Andreas Stieger <andreas.stieger@gmx.de>
- Chromium 140.0.7339.41
(early stable released 2025-08-27)
- modified patches:
chromium-125-compiler.patch
chromium-libusb_interrupt_event_handler.patch
gcc-enable-lto.patch
ppc-fedora-fix-unknown-warning-option-messages.diff
ppc-fedora-0001-sandbox-linux-Update-syscall-helpers-lists-for-ppc64.patch
ppc-fedora-add-ppc64-architecture-to-extensions.diff
chromium-102-regex_pattern-array.patch
gtk-414.patch
ppc-fedora-fix-study-crash.patch
ppc-fedora-0002-regenerate-xnn-buildgn.patch (stub, needs to be redone)
ppc-fedora-0001-Add-pregenerated-config-for-libaom-on-ppc64.patch
- added patches:
chromium-140-keep-__rust_no_alloc_shim_is_unstable.patch
(revert of upstream patch
8393b61ba876c8e1614275c97767f9b06b889f48)
chromium-140-old-flac.patch (applied for flac < 1.5.0)
- change rust_version to 1.86
- keeplibs:
removed buildtools/third_party/eu-strip (gone upstream)
removed wasm_tts_engine (gone upstream)
- bump gn BuildReq to 0.20250619
- do not use system_harfbuzz for 16+ for now, unbundle is broken
-------------------------------------------------------------------
Wed Aug 27 12:12:26 CEST 2025 - ro@suse.de
- Chromium 139.0.7258.154 (boo#1248769)
* CVE-2025-9478: Use after free in ANGLE
-------------------------------------------------------------------
Tue Aug 19 21:07:41 UTC 2025 - Andreas Stieger <andreas.stieger@gmx.de>
- Chromium 139.0.7258.138 (boo#1248315):
* CVE-2025-9132: Out of bounds write in V8
-------------------------------------------------------------------
Wed Aug 13 04:21:07 UTC 2025 - Andreas Stieger <andreas.stieger@gmx.de>
- Chromium 139.0.7258.127 (boo#1247981):
* CVE-2025-8879: Heap buffer overflow in libaom
* CVE-2025-8880: Race in V8
* CVE-2025-8901: Out of bounds write in ANGLE
* CVE-2025-8881: Inappropriate implementation in File Picker
* CVE-2025-8882: Use after free in Aura
* Various fixes from internal audits, fuzzing and other initiatives
-------------------------------------------------------------------
Thu Aug 7 15:48:37 CEST 2025 - ro@suse.de
- really install libffmpeg.so if using the bundled one
and block the extra dependency
-------------------------------------------------------------------
Wed Aug 6 12:47:40 CEST 2025 - ro@suse.de
- add patch:
chromium-139-pdfium-openjpeg-CVE-2025-54874.patch
(CVE-2025-54874 bsc#1247661) fix missing error check in openjpeg
-------------------------------------------------------------------
Wed Aug 6 12:28:51 CEST 2025 - ro@suse.de
- re-add updated patch:
ppc-fedora-0002-regenerate-xnn-buildgn.patch
from https://src.fedoraproject.org/rpms/chromium/blob/
rawhide/f/0002-regenerate-xnn-buildgn.patch
-------------------------------------------------------------------
Tue Aug 5 19:55:25 UTC 2025 - Andreas Stieger <andreas.stieger@gmx.de>
- Chromium 139.0.7258.66 (boo#1247664):
* CVE-2025-8576: Use after free in Extensions
* CVE-2025-8577: Inappropriate implementation in Picture In Picture
* CVE-2025-8578: Use after free in Cast
* CVE-2025-8579: Inappropriate implementation in Gemini Live in Chrome
* CVE-2025-8580: Inappropriate implementation in Filesystems
* CVE-2025-8581: Inappropriate implementation in Extensions
* CVE-2025-8582: Insufficient validation of untrusted input in DOM
* CVE-2025-8583: Inappropriate implementation in Permissions
- modified patches:
gcc-enable-lto.patch
ppc-fedora-0001-sandbox-linux-Update-syscall-helpers-lists-for-ppc64.patch
ppc-fedora-skia-vsx-instructions.patch
ppc-fedora-fix-partition-alloc-compile.patch
ppc-fedora-0001-add-xnn-ppc64el-support.patch
- dropped patches:
chromium-warning-suppression-mappings.patch (using cmdline switch)
chromium-93-ffmpeg-4.4.patch
- dropped the ffmpeg revert patches that were only applied for 15:
chromium-125-ffmpeg-5.x-reordered_opaque.patch
Cr122-ffmpeg-new-channel-layout.patch
ffmpeg-new-channel-layout.patch
chromium-106-ffmpeg-duration.patch
chromium-93-ffmpeg-4.4-rest.patch
chromium-138-revert_ffmpeg_FF_AV.patch
- added patches:
ppc-debian-0003-third_party-ffmpeg-Add-ppc64-generated-config.patch
- keeplibs:
removed chrome/third_party/mozilla_security_manager
removed third_party/mesa
added third_party/ml_dtypes (needed in tflite/xla)
added third_party/readability (needed in tools/grit/grit)
added third_party/ffmpeg (gave up on reverting all recent
commits in the code using ffmpeg, need at least ffmpeg-7)
- remove disabled ppc-fedora-0002-regenerate-xnn-buildgn.patch
to please factory-auto
-------------------------------------------------------------------
Wed Jul 30 10:26:40 CEST 2025 - ro@suse.de
- Chromium 138.0.7204.183 (boo#1247365):
* CVE-2025-8292: Use after free in Media Stream
- try to switch to smaller linux tarball from
https://github.com/chromium-linux-tarballs)
- disable chromium-91-java-only-allowed-in-android-builds.patch
(not part of reduced tarball)
-------------------------------------------------------------------
Tue Jul 29 10:44:14 CEST 2025 - ro@suse.de
- set official_build to true (like other distributions)
"official builds have less debugging and go faster..."
- added patches:
chromium-139-deterministic.patch
(undefine __DATE__,__TIME__ like without official-build set
to keep the build reproducible)
-------------------------------------------------------------------
Thu Jul 24 18:23:20 CEST 2025 - ro@suse.de
- modified patches:
ppc-fedora-0001-sandbox-linux-Update-syscall-helpers-lists-for-ppc64.patch
(update context to apply)
-------------------------------------------------------------------
Tue Jul 22 21:31:06 UTC 2025 - Andreas Stieger <andreas.stieger@gmx.de>
- Chromium 138.0.7204.168 (boo#1246902):
* CVE-2025-8010: Type Confusion in V8
* CVE-2025-8011: Type Confusion in V8
* Various fixes from internal audits, fuzzing and other
initiatives
-------------------------------------------------------------------
Tue Jul 15 19:46:14 UTC 2025 - Andreas Stieger <andreas.stieger@gmx.de>
- Chromium 138.0.7204.157 (boo#1246558):
* CVE-2025-7656: Integer overflow in V8
* CVE-2025-6558: Incorrect validation of untrusted input in ANGLE
and GPU
* CVE-2025-7657: Use after free in WebRTC
-------------------------------------------------------------------
Wed Jul 9 16:52:34 UTC 2025 - Andreas Stieger <andreas.stieger@gmx.de>
- Chromium 138.0.7204.100:
* tweaks to the Google services settings page
-------------------------------------------------------------------
Tue Jul 1 12:18:23 CEST 2025 - ro@suse.de
- update from debian:
ppc-fedora-skia-vsx-instructions.patch
- dropped patches:
ppc-skia-revert-1.patch
ppc-skia-revert-2.patch
ppc-skia-revert-3.patch
-------------------------------------------------------------------
Tue Jul 1 10:43:12 CEST 2025 - ro@suse.de
- Chromium 138.0.7204.96
(stable released 2025-06-30) (boo#1245544)
* CVE-2025-6554: Type Confusion in V8
-------------------------------------------------------------------
Wed Jun 25 10:32:36 CEST 2025 - ro@suse.de
- Chromium 138.0.7204.49
(stable released 2025-06-24) (boo#1245332)
* CVE-2025-6555: Use after free in Animation
* CVE-2025-6556: Insufficient policy enforcement in Loader
* CVE-2025-6557: Insufficient data validation in DevTools
- Chromium 139.0.7219.3
(dev released 2025-06-06)
- dropped patches: - dropped patches:
chromium-137-heuristics_missing_includes.patch (upstream) chromium-137-heuristics_missing_includes.patch (upstream)
chromium-137-pdfium_fix_pattribute.patch (upstream) chromium-137-pdfium_fix_pattribute.patch (upstream)
@@ -11,20 +206,58 @@ Fri May 30 22:55:54 CEST 2025 - ro@suse.de
ffmpeg-new-channel-layout.patch (context) ffmpeg-new-channel-layout.patch (context)
chromium-134-revert-rust-adler2.patch (context,reverse application) chromium-134-revert-rust-adler2.patch (context,reverse application)
ppc-fedora-0001-Add-PPC64-support-for-boringssl.patch (context) ppc-fedora-0001-Add-PPC64-support-for-boringssl.patch (context)
ppc-fedora-0002-regenerate-xnn-buildgn.patch (context)
ppc-fedora-memory-allocator-dcheck-assert-fix.patch (context) ppc-fedora-memory-allocator-dcheck-assert-fix.patch (context)
chromium-warning-suppression-mappings.patch (context) chromium-warning-suppression-mappings.patch (context)
- added patches: - added patches:
(conditional revert for old ffmpeg, (conditional revert for old ffmpeg,
upstream 129f48501a7c3fa4236234f2fa0aee490a845b59) upstream 129f48501a7c3fa4236234f2fa0aee490a845b59)
chromium-138-revert_ffmpeg_FF_AV.patch chromium-138-revert_ffmpeg_FF_AV.patch
ppc-fedora-0001-add-xnn-ppc64el-support.patch
ppc-fedora-0002-regenerate-xnn-buildgn.patch
- keeplibs: - keeplibs:
removed third_party/distributed_point_functions removed third_party/distributed_point_functions
removed third_party/tflite/src/third_party/eigen3 removed third_party/tflite/src/third_party/eigen3
removed third_party/webrtc/rtc_base/third_party/base64 removed third_party/webrtc/rtc_base/third_party/base64
added third_party/dragonbox added third_party/dragonbox
(needed by ../v8/src/numbers/conversions.cc ) (needed by ../v8/src/numbers/conversions.cc )
- bump gn buildrequires to 0.20250520
-------------------------------------------------------------------
Tue Jun 17 23:36:50 CEST 2025 - ro@suse.de
- Chromium 137.0.7151.119
(stable release 2025-06-17) (boo#1244711)
* CVE-2025-6191: Integer overflow in V8
* CVE-2025-6192: Use after free in Profiler
-------------------------------------------------------------------
Thu Jun 12 09:05:12 UTC 2025 - Bernhard Wiedemann <bwiedemann@suse.com>
- Replace usage of %jobs for reproducible builds (boo#1237231)
-------------------------------------------------------------------
Wed Jun 11 12:18:31 CEST 2025 - ro@suse.de
- Chromium 137.0.7151.103
(stable release 2025-06-10) (boo#1244452)
* CVE-2025-5958: Use after free in Media
* CVE-2025-5959: Type Confusion in V8
-------------------------------------------------------------------
Tue Jun 3 12:48:01 CEST 2025 - ro@suse.de
- Chromium 137.0.7151.68
(stable release 2025-06-03) (boo#1244019)
* CVE-2025-5419: Out of bounds read and write in V8
* CVE-2025-5068: Use after free in Blink
- Google is aware that an exploit for CVE-2025-5419
exists in the wild.
-------------------------------------------------------------------
Fri May 30 00:25:43 CEST 2025 - ro@suse.de
- added patches:
ppc-fedora-0001-add-xnn-ppc64el-support.patch
ppc-fedora-0002-regenerate-xnn-buildgn.patch
------------------------------------------------------------------- -------------------------------------------------------------------
Wed May 28 01:08:19 CEST 2025 - ro@suse.de Wed May 28 01:08:19 CEST 2025 - ro@suse.de
@@ -139,7 +372,7 @@ Mon May 12 17:13:38 CEST 2025 - ro@suse.de
- added patches - added patches
ppc-chromium-136-clang-config.patch ppc-chromium-136-clang-config.patch
- disable swiftshader on ppc64le like on aarch64 - disable swiftshader on ppc64le like on aarch64
------------------------------------------------------------------- -------------------------------------------------------------------
Wed May 7 10:17:50 CEST 2025 - ro@suse.de Wed May 7 10:17:50 CEST 2025 - ro@suse.de

View File

@@ -22,6 +22,7 @@
%define outputdir out %define outputdir out
# bsc#1108175 # bsc#1108175
%define __provides_exclude ^lib.*\\.so.*$ %define __provides_exclude ^lib.*\\.so.*$
%define __requires_exclude ^libffmpeg\\.so.*$
# suse_version 1500 all of sle code 15, all of leap15 # suse_version 1500 all of sle code 15, all of leap15
# suse_version 1600 all of alp, slfo # suse_version 1600 all of alp, slfo
# suse_version 1699 tw # suse_version 1699 tw
@@ -41,7 +42,7 @@
%bcond_without swiftshader %bcond_without swiftshader
%endif %endif
%if 0%{?suse_version} >= 1600 %if 0%{?suse_version} >= 1600
%bcond_without system_harfbuzz %bcond_with system_harfbuzz
%bcond_without system_freetype %bcond_without system_freetype
%bcond_without arm_bti %bcond_without arm_bti
# ERROR Unresolved dependencies. # ERROR Unresolved dependencies.
@@ -49,17 +50,16 @@
# needs //third_party/icu:icuuc_public(//build/toolchain/linux/unbundle:default) # needs //third_party/icu:icuuc_public(//build/toolchain/linux/unbundle:default)
%bcond_with system_icu %bcond_with system_icu
%bcond_without qt6 %bcond_without qt6
%bcond_without ffmpeg_51 %bcond_without system_ffmpeg
%define ffmpeg_version 59
%else %else
%bcond_with system_harfbuzz %bcond_with system_harfbuzz
%bcond_with system_freetype %bcond_with system_freetype
%bcond_with arm_bti %bcond_with arm_bti
%bcond_with system_icu %bcond_with system_icu
%bcond_without qt6 %bcond_without qt6
%bcond_with ffmpeg_51 %bcond_with system_ffmpeg
%define ffmpeg_version 58
%endif %endif
%define ffmpeg_version 59
%bcond_with system_zstd %bcond_with system_zstd
%define node_ver 22 %define node_ver 22
%define node_ver_next 23 %define node_ver_next 23
@@ -67,7 +67,7 @@
# LLVM version # LLVM version
%define llvm_version 19 %define llvm_version 19
# RUST version # RUST version
%define rust_version 1.85 %define rust_version 1.86
# GCC version # GCC version
%define gcc_version 14 %define gcc_version 14
# esbuild version # esbuild version
@@ -88,7 +88,6 @@
# Chromium built with GCC 11 and LTO enabled crashes (boo#1194055) # Chromium built with GCC 11 and LTO enabled crashes (boo#1194055)
%bcond_without lto %bcond_without lto
%bcond_without pipewire %bcond_without pipewire
%bcond_without system_ffmpeg
%bcond_with system_zlib %bcond_with system_zlib
%bcond_with system_vpx %bcond_with system_vpx
%if %{pkg_vcmp libxml2-devel >= 2.12} %if %{pkg_vcmp libxml2-devel >= 2.12}
@@ -101,6 +100,11 @@
%else %else
%bcond_with gtk4_4_19 %bcond_with gtk4_4_19
%endif %endif
%if %{pkg_vcmp flac-devel >= 1.5.0}
%bcond_without flac_1_5
%else
%bcond_with flac_1_5
%endif
# Package names # Package names
%if %{with is_beta} %if %{with is_beta}
%define chromedriver_name %{name}-chromedriver %define chromedriver_name %{name}-chromedriver
@@ -109,13 +113,16 @@
%define chromedriver_name chromedriver %define chromedriver_name chromedriver
%define n_suffix %{nil} %define n_suffix %{nil}
%endif %endif
# official builds have less debugging and go faster... but we have to shut some things off.
%global official_build 1
Name: chromium%{n_suffix} Name: chromium%{n_suffix}
Version: 139.0.7219.3 Version: 141.0.7390.7
Release: 0 Release: 0
Summary: Google's open source browser project Summary: Google's open source browser project
License: BSD-3-Clause AND LGPL-2.1-or-later License: BSD-3-Clause AND LGPL-2.1-or-later
URL: https://www.chromium.org/ URL: https://www.chromium.org/
Source0: https://commondatastorage.googleapis.com/chromium-browser-official/%{rname}-%{version}.tar.xz Source0: https://github.com/chromium-linux-tarballs/chromium-tarballs/releases/download/%{version}/chromium-%{version}-linux.tar.xz
# https://github.com/evanw/esbuild/archive/refs/tags/v%%{esbuild_version}.tar.gz # https://github.com/evanw/esbuild/archive/refs/tags/v%%{esbuild_version}.tar.gz
Source1: esbuild-%{esbuild_version}.tar.gz Source1: esbuild-%{esbuild_version}.tar.gz
Source2: esbuild-%{esbuild_version}-vendor.tar.gz Source2: esbuild-%{esbuild_version}-vendor.tar.gz
@@ -141,13 +148,10 @@ Patch7: chromium-norar.patch
Patch9: system-libdrm.patch Patch9: system-libdrm.patch
# gentoo/fedora/arch patchset # gentoo/fedora/arch patchset
Patch15: chromium-125-compiler.patch Patch15: chromium-125-compiler.patch
Patch40: chromium-91-java-only-allowed-in-android-builds.patch
Patch62: chromium-93-ffmpeg-4.4.patch
Patch98: chromium-102-regex_pattern-array.patch Patch98: chromium-102-regex_pattern-array.patch
# PATCH-FIX-SUSE: allow prop codecs to be set with chromium branding # PATCH-FIX-SUSE: allow prop codecs to be set with chromium branding
Patch202: chromium-prop-codecs.patch Patch202: chromium-prop-codecs.patch
Patch240: chromium-117-string-convert.patch Patch240: chromium-117-string-convert.patch
Patch261: chromium-121-rust-clang_lib.patch
Patch337: chromium-123-missing-QtGui.patch Patch337: chromium-123-missing-QtGui.patch
Patch359: chromium-126-quiche-interator.patch Patch359: chromium-126-quiche-interator.patch
Patch360: chromium-127-bindgen.patch Patch360: chromium-127-bindgen.patch
@@ -159,7 +163,9 @@ Patch369: chromium-132-pdfium-explicit-template.patch
Patch371: chromium-133-bring_back_and_disable_allowlist.patch Patch371: chromium-133-bring_back_and_disable_allowlist.patch
Patch373: chromium-134-type-mismatch-error.patch Patch373: chromium-134-type-mismatch-error.patch
Patch375: chromium-131-fix-qt-ui.pach Patch375: chromium-131-fix-qt-ui.pach
Patch376: chromium-135-add_map_droppable.patch Patch377: chromium-139-deterministic.patch
Patch378: chromium-139-pdfium-openjpeg-CVE-2025-54874.patch
Patch379: chromium-140-keep-__rust_no_alloc_shim_is_unstable.patch
# conditionally applied patches ppc64le only # conditionally applied patches ppc64le only
Patch401: ppc-fedora-add-ppc64-architecture-string.patch Patch401: ppc-fedora-add-ppc64-architecture-string.patch
Patch402: ppc-fedora-0001-linux-seccomp-bpf-ppc64-glibc-workaround-in-SIGSYS-h.patch Patch402: ppc-fedora-0001-linux-seccomp-bpf-ppc64-glibc-workaround-in-SIGSYS-h.patch
@@ -201,7 +207,6 @@ Patch437: ppc-fedora-0001-Implement-support-for-ppc64-on-Linux.patch
Patch438: ppc-fedora-0001-Implement-support-for-PPC64-on-Linux.patch Patch438: ppc-fedora-0001-Implement-support-for-PPC64-on-Linux.patch
Patch439: ppc-fedora-0001-Force-baseline-POWER8-AltiVec-VSX-CPU-features-when-.patch Patch439: ppc-fedora-0001-Force-baseline-POWER8-AltiVec-VSX-CPU-features-when-.patch
Patch440: ppc-fedora-fix-clang-selection.patch Patch440: ppc-fedora-fix-clang-selection.patch
Patch441: ppc-fedora-fix-rustc.patch
Patch442: ppc-fedora-fix-rust-linking.patch Patch442: ppc-fedora-fix-rust-linking.patch
Patch443: ppc-fedora-fix-breakpad-compile.patch Patch443: ppc-fedora-fix-breakpad-compile.patch
Patch444: ppc-fedora-fix-partition-alloc-compile.patch Patch444: ppc-fedora-fix-partition-alloc-compile.patch
@@ -219,26 +224,18 @@ Patch455: ppc-fedora-add-ppc64-pthread-stack-size.patch
Patch456: ppc-fedora-fix-ppc64-rust_png-build-error.patch Patch456: ppc-fedora-fix-ppc64-rust_png-build-error.patch
Patch457: ppc-chromium-136-clang-config.patch Patch457: ppc-chromium-136-clang-config.patch
Patch458: ppc-fedora-0001-add-xnn-ppc64el-support.patch Patch458: ppc-fedora-0001-add-xnn-ppc64el-support.patch
#Patch459: ppc-fedora-0002-regenerate-xnn-buildgn.patch # https://src.fedoraproject.org/rpms/chromium/blob/rawhide/f/0002-regenerate-xnn-buildgn.patch
Patch459: ppc-fedora-0002-regenerate-xnn-buildgn.patch
Patch460: ppc-debian-0003-third_party-ffmpeg-Add-ppc64-generated-config.patch
# conditionally applied patches # conditionally applied patches
# patch where ffmpeg < 5
Patch1002: chromium-125-ffmpeg-5.x-reordered_opaque.patch
Patch1003: Cr122-ffmpeg-new-channel-layout.patch
Patch1004: ffmpeg-new-channel-layout.patch
Patch1005: chromium-106-ffmpeg-duration.patch
Patch1006: chromium-93-ffmpeg-4.4-rest.patch
Patch1007: chromium-138-revert_ffmpeg_FF_AV.patch
# patch where libxml < 2.12 # patch where libxml < 2.12
Patch1010: chromium-124-system-libxml.patch Patch1010: chromium-124-system-libxml.patch
# patch where rust <= 1.85 # patch where rust <= 1.85
Patch1030: chromium-134-revert-rust-adler2.patch Patch1030: chromium-134-revert-rust-adler2.patch
# gtk4 is too old # gtk4 is too old
Patch1040: gtk-414.patch Patch1040: gtk-414.patch
# clang is too old # flac is too old
Patch1050: chromium-warning-suppression-mappings.patch Patch1050: chromium-140-old-flac.patch
#Patch1061: ppc-skia-revert-1.patch
Patch1062: ppc-skia-revert-2.patch
Patch1063: ppc-skia-revert-3.patch
# end conditionally applied patches # end conditionally applied patches
BuildRequires: SDL-devel BuildRequires: SDL-devel
BuildRequires: bison BuildRequires: bison
@@ -248,7 +245,7 @@ BuildRequires: elfutils
BuildRequires: fdupes BuildRequires: fdupes
BuildRequires: flex BuildRequires: flex
BuildRequires: git BuildRequires: git
BuildRequires: gn >= 0.20250306 BuildRequires: gn >= 0.20250619
BuildRequires: gperf BuildRequires: gperf
BuildRequires: hicolor-icon-theme BuildRequires: hicolor-icon-theme
BuildRequires: golang(API) BuildRequires: golang(API)
@@ -501,17 +498,6 @@ WebDriver is an open source tool for automated testing of webapps across many br
%autopatch -p1 -m 400 -M 499 %autopatch -p1 -m 400 -M 499
%endif %endif
%if %{without ffmpeg_51}
# ffmpeg is too old
%patch -p1 -R -P 1002
%patch -p1 -R -P 1003
%patch -p1 -R -P 1004
%patch -p1 -P 1005
%patch -p1 -P 1006
%patch -p1 -P 1007
%endif
%if %{without libxml2_2_12} %if %{without libxml2_2_12}
%patch -p1 -P 1010 %patch -p1 -P 1010
%endif %endif
@@ -524,19 +510,8 @@ WebDriver is an open source tool for automated testing of webapps across many br
%patch -p1 -R -P 1040 %patch -p1 -R -P 1040
%endif %endif
clang_version="$(clang --version | sed -n 's/clang version //p')" %if %{without flac_1_5}
if [[ $(echo ${clang_version} | cut -d. -f1) -ge 16 ]]; then %patch -p1 -P 1050
clang_version="$(echo ${clang_version} | cut -d. -f1)"
fi
if [ "$clang_version" -lt 20 ] ; then
%patch -p1 -R -P 1050
fi
%ifarch ppc64le
pushd third_party/skia
%patch -p1 -R -P 1062
%patch -p1 -R -P 1063
popd
%endif %endif
%build %build
@@ -560,9 +535,6 @@ rm -f third_party/node/linux/node-linux-x64/bin/node
ln -s %{_bindir}/node third_party/node/linux/node-linux-x64/bin/node ln -s %{_bindir}/node third_party/node/linux/node-linux-x64/bin/node
sed -i -e "s@^NODE_VERSION=.*@NODE_VERSION=\"v%{node_version}\"@" third_party/node/update_node_binaries sed -i -e "s@^NODE_VERSION=.*@NODE_VERSION=\"v%{node_version}\"@" third_party/node/update_node_binaries
rm buildtools/third_party/eu-strip/bin/eu-strip
ln -s %{_bindir}/eu-strip buildtools/third_party/eu-strip/bin/eu-strip
# python3 # python3
mkdir -p $HOME/bin mkdir -p $HOME/bin
%if 0%{?suse_version} >= 1600 %if 0%{?suse_version} >= 1600
@@ -596,11 +568,9 @@ keeplibs=(
base/third_party/superfasthash base/third_party/superfasthash
base/third_party/symbolize base/third_party/symbolize
base/third_party/xdg_user_dirs base/third_party/xdg_user_dirs
buildtools/third_party/eu-strip
buildtools/third_party/libc++ buildtools/third_party/libc++
buildtools/third_party/libc++abi buildtools/third_party/libc++abi
buildtools/third_party/libunwind buildtools/third_party/libunwind
chrome/third_party/mozilla_security_manager
net/third_party/mozilla_security_manager net/third_party/mozilla_security_manager
net/third_party/nss net/third_party/nss
net/third_party/quic net/third_party/quic
@@ -711,6 +681,7 @@ keeplibs=(
third_party/libaom/source/libaom/third_party/SVT-AV1 third_party/libaom/source/libaom/third_party/SVT-AV1
third_party/libaom/source/libaom/third_party/vector third_party/libaom/source/libaom/third_party/vector
third_party/libaom/source/libaom/third_party/x86inc third_party/libaom/source/libaom/third_party/x86inc
third_party/libc++
third_party/libgav1 third_party/libgav1
third_party/libjingle third_party/libjingle
third_party/libphonenumber third_party/libphonenumber
@@ -732,9 +703,9 @@ keeplibs=(
third_party/mako third_party/mako
third_party/markupsafe third_party/markupsafe
third_party/material_color_utilities third_party/material_color_utilities
third_party/mesa
third_party/metrics_proto third_party/metrics_proto
third_party/minigbm third_party/minigbm
third_party/ml_dtypes
third_party/modp_b64 third_party/modp_b64
third_party/nasm third_party/nasm
third_party/nearby third_party/nearby
@@ -766,6 +737,7 @@ keeplibs=(
third_party/pyjson5 third_party/pyjson5
third_party/pyyaml third_party/pyyaml
third_party/rapidhash third_party/rapidhash
third_party/readability
third_party/rnnoise third_party/rnnoise
third_party/rust third_party/rust
third_party/ruy third_party/ruy
@@ -803,7 +775,6 @@ keeplibs=(
third_party/utf third_party/utf
third_party/vulkan third_party/vulkan
third_party/wayland third_party/wayland
third_party/wasm_tts_engine
third_party/webdriver third_party/webdriver
third_party/webgpu-cts third_party/webgpu-cts
third_party/webrtc third_party/webrtc
@@ -959,7 +930,7 @@ export RUSTFLAGS
%limit_build -m 2600 %limit_build -m 2600
%if %{with lto} && %{without clang} %if %{with lto} && %{without clang}
# reduce the threads for linking even more due to LTO eating ton of memory # reduce the threads for linking even more due to LTO eating ton of memory
_link_threads=$(((%{jobs} - 2))) _link_threads=$((($(echo %{?_smp_mflags} | cut -c 3-) - 2)))
test "$_link_threads" -le 0 && _link_threads=1 test "$_link_threads" -le 0 && _link_threads=1
export LDFLAGS="-flto=$_link_threads --param lto-max-streaming-parallelism=1" export LDFLAGS="-flto=$_link_threads --param lto-max-streaming-parallelism=1"
%endif %endif
@@ -1046,6 +1017,10 @@ myconf_gn+=" arm_control_flow_integrity=\"none\""
myconf_gn+=" host_cpu=\"ppc64\"" myconf_gn+=" host_cpu=\"ppc64\""
%endif %endif
myconf_gn+=" host_os=\"linux\"" myconf_gn+=" host_os=\"linux\""
%if %{official_build}
myconf_gn+=" is_official_build=true"
sed -i 's|OFFICIAL_BUILD|GOOGLE_CHROME_BUILD|g' tools/generate_shim_headers/generate_shim_headers.py
%endif
myconf_gn+=" is_debug=false" myconf_gn+=" is_debug=false"
myconf_gn+=" dcheck_always_on=false" myconf_gn+=" dcheck_always_on=false"
myconf_gn+=" enable_nacl=false" myconf_gn+=" enable_nacl=false"
@@ -1140,6 +1115,10 @@ myconf_gn+=" ffmpeg_branding=\"Chrome\""
google_api_key="AIzaSyD1hTe85_a14kr1Ks8T3Ce75rvbR1_Dx7Q" google_api_key="AIzaSyD1hTe85_a14kr1Ks8T3Ce75rvbR1_Dx7Q"
myconf_gn+=" google_api_key=\"${google_api_key}\"" myconf_gn+=" google_api_key=\"${google_api_key}\""
if [ "$clang_version" -lt 20 ] ; then
myconf_gn+=" clang_warning_suppression_file=\"\""
fi
# GN does not support passing cflags: # GN does not support passing cflags:
# https://bugs.chromium.org/p/chromium/issues/detail?id=642016 # https://bugs.chromium.org/p/chromium/issues/detail?id=642016
gn gen --args="${myconf_gn}" %{outputdir} gn gen --args="${myconf_gn}" %{outputdir}

View File

@@ -1,290 +0,0 @@
From 6e554a30893150793c2638e3689cf208ffc8e375 Mon Sep 17 00:00:00 2001
From: Dale Curtis <dalecurtis@chromium.org>
Date: Sat, 2 Apr 2022 05:13:53 +0000
Subject: [PATCH] Roll src/third_party/ffmpeg/ 574c39cce..32b2d1d526 (1125
commits)
https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/574c39cce323..32b2d1d526
Created with:
roll-dep src/third_party/ffmpeg
Fixed: 1293918
Cq-Include-Trybots: luci.chromium.try:mac_chromium_asan_rel_ng,linux_chromium_asan_rel_ng,linux_chromium_chromeos_asan_rel_ng
Change-Id: I41945d0f963e3d1f65940067bac22f63b68e37d2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3565647
Auto-Submit: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/main@{#988253}
---
.../clear_key_cdm/ffmpeg_cdm_audio_decoder.cc | 29 ++++++++++---------
media/ffmpeg/ffmpeg_common.cc | 11 +++----
media/filters/audio_file_reader.cc | 9 +++---
media/filters/audio_file_reader_unittest.cc | 6 ++--
.../filters/audio_video_metadata_extractor.cc | 11 +++++--
.../filters/ffmpeg_aac_bitstream_converter.cc | 7 +++--
...ffmpeg_aac_bitstream_converter_unittest.cc | 2 +-
media/filters/ffmpeg_audio_decoder.cc | 13 +++++----
8 files changed, 51 insertions(+), 37 deletions(-)
diff --git a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
index e4fc3f460e2..9b1ad9f7675 100644
--- a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
+++ b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
@@ -74,7 +74,7 @@ void CdmAudioDecoderConfigToAVCodecContext(
codec_context->sample_fmt = AV_SAMPLE_FMT_NONE;
}
- codec_context->channels = config.channel_count;
+ codec_context->ch_layout.nb_channels = config.channel_count;
codec_context->sample_rate = config.samples_per_second;
if (config.extra_data) {
@@ -124,8 +124,8 @@ void CopySamples(cdm::AudioFormat cdm_format,
case cdm::kAudioFormatPlanarS16:
case cdm::kAudioFormatPlanarF32: {
const int decoded_size_per_channel =
- decoded_audio_size / av_frame.channels;
- for (int i = 0; i < av_frame.channels; ++i) {
+ decoded_audio_size / av_frame.ch_layout.nb_channels;
+ for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) {
memcpy(output_buffer, av_frame.extended_data[i],
decoded_size_per_channel);
output_buffer += decoded_size_per_channel;
@@ -185,13 +185,14 @@ bool FFmpegCdmAudioDecoder::Initialize(
// Success!
decoding_loop_ = std::make_unique<FFmpegDecodingLoop>(codec_context_.get());
samples_per_second_ = config.samples_per_second;
- bytes_per_frame_ = codec_context_->channels * config.bits_per_channel / 8;
+ bytes_per_frame_ =
+ codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8;
output_timestamp_helper_ =
std::make_unique<AudioTimestampHelper>(config.samples_per_second);
is_initialized_ = true;
// Store initial values to guard against midstream configuration changes.
- channels_ = codec_context_->channels;
+ channels_ = codec_context_->ch_layout.nb_channels;
av_sample_format_ = codec_context_->sample_fmt;
return true;
@@ -291,17 +292,19 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer(
for (auto& frame : audio_frames) {
int decoded_audio_size = 0;
if (frame->sample_rate != samples_per_second_ ||
- frame->channels != channels_ || frame->format != av_sample_format_) {
+ frame->ch_layout.nb_channels != channels_ ||
+ frame->format != av_sample_format_) {
DLOG(ERROR) << "Unsupported midstream configuration change!"
<< " Sample Rate: " << frame->sample_rate << " vs "
- << samples_per_second_ << ", Channels: " << frame->channels
- << " vs " << channels_ << ", Sample Format: " << frame->format
- << " vs " << av_sample_format_;
+ << samples_per_second_
+ << ", Channels: " << frame->ch_layout.nb_channels << " vs "
+ << channels_ << ", Sample Format: " << frame->format << " vs "
+ << av_sample_format_;
return cdm::kDecodeError;
}
decoded_audio_size = av_samples_get_buffer_size(
- nullptr, codec_context_->channels, frame->nb_samples,
+ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
codec_context_->sample_fmt, 1);
if (!decoded_audio_size)
continue;
@@ -320,9 +323,9 @@ bool FFmpegCdmAudioDecoder::OnNewFrame(
size_t* total_size,
std::vector<std::unique_ptr<AVFrame, ScopedPtrAVFreeFrame>>* audio_frames,
AVFrame* frame) {
- *total_size += av_samples_get_buffer_size(nullptr, codec_context_->channels,
- frame->nb_samples,
- codec_context_->sample_fmt, 1);
+ *total_size += av_samples_get_buffer_size(
+ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
+ codec_context_->sample_fmt, 1);
audio_frames->emplace_back(av_frame_clone(frame));
return true;
}
diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc
index 87ca8969626..76f03d6608e 100644
--- a/media/ffmpeg/ffmpeg_common.cc
+++ b/media/ffmpeg/ffmpeg_common.cc
@@ -334,10 +334,11 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
codec_context->sample_fmt, codec_context->codec_id);
ChannelLayout channel_layout =
- codec_context->channels > 8
+ codec_context->ch_layout.nb_channels > 8
? CHANNEL_LAYOUT_DISCRETE
- : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout,
- codec_context->channels);
+ : ChannelLayoutToChromeChannelLayout(
+ codec_context->ch_layout.u.mask,
+ codec_context->ch_layout.nb_channels);
switch (codec) {
// For AC3/EAC3 we enable only demuxing, but not decoding, so FFmpeg does
@@ -401,7 +402,7 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
extra_data, encryption_scheme, seek_preroll,
codec_context->delay);
if (channel_layout == CHANNEL_LAYOUT_DISCRETE)
- config->SetChannelsForDiscrete(codec_context->channels);
+ config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels);
#if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO)
// These are bitstream formats unknown to ffmpeg, so they don't have
@@ -470,7 +471,7 @@ void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config,
// TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses
// said information to decode.
- codec_context->channels = config.channels();
+ codec_context->ch_layout.nb_channels = config.channels();
codec_context->sample_rate = config.samples_per_second();
CopyBufferFromConfig(config, codec_context);
diff --git a/media/filters/audio_file_reader.cc b/media/filters/audio_file_reader.cc
index 5f257bdfaa6..e1be5aa9a5b 100644
--- a/media/filters/audio_file_reader.cc
+++ b/media/filters/audio_file_reader.cc
@@ -113,14 +113,15 @@ bool AudioFileReader::OpenDecoder() {
// Verify the channel layout is supported by Chrome. Acts as a sanity check
// against invalid files. See http://crbug.com/171962
- if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout,
- codec_context_->channels) ==
+ if (ChannelLayoutToChromeChannelLayout(
+ codec_context_->ch_layout.u.mask,
+ codec_context_->ch_layout.nb_channels) ==
CHANNEL_LAYOUT_UNSUPPORTED) {
return false;
}
// Store initial values to guard against midstream configuration changes.
- channels_ = codec_context_->channels;
+ channels_ = codec_context_->ch_layout.nb_channels;
audio_codec_ = CodecIDToAudioCodec(codec_context_->codec_id);
sample_rate_ = codec_context_->sample_rate;
av_sample_format_ = codec_context_->sample_fmt;
@@ -223,7 +224,7 @@ bool AudioFileReader::OnNewFrame(
if (frames_read < 0)
return false;
- const int channels = frame->channels;
+ const int channels = frame->ch_layout.nb_channels;
if (frame->sample_rate != sample_rate_ || channels != channels_ ||
frame->format != av_sample_format_) {
DLOG(ERROR) << "Unsupported midstream configuration change!"
diff --git a/media/filters/audio_file_reader_unittest.cc b/media/filters/audio_file_reader_unittest.cc
index 2aba7927a31..1f45a50cace 100644
--- a/media/filters/audio_file_reader_unittest.cc
+++ b/media/filters/audio_file_reader_unittest.cc
@@ -121,11 +121,11 @@ class AudioFileReaderTest : public testing::Test {
EXPECT_FALSE(reader_->Open());
}
- void RunTestFailingDecode(const char* fn) {
+ void RunTestFailingDecode(const char* fn, int expect_read = 0) {
Initialize(fn);
EXPECT_TRUE(reader_->Open());
std::vector<std::unique_ptr<AudioBus>> decoded_audio_packets;
- EXPECT_EQ(reader_->Read(&decoded_audio_packets), 0);
+ EXPECT_EQ(reader_->Read(&decoded_audio_packets), expect_read);
}
void RunTestPartialDecode(const char* fn) {
@@ -219,7 +219,7 @@ TEST_F(AudioFileReaderTest, AAC_ADTS) {
}
TEST_F(AudioFileReaderTest, MidStreamConfigChangesFail) {
- RunTestFailingDecode("midstream_config_change.mp3");
+ RunTestFailingDecode("midstream_config_change.mp3", 0);
}
#endif
diff --git a/media/filters/ffmpeg_aac_bitstream_converter.cc b/media/filters/ffmpeg_aac_bitstream_converter.cc
index 6f231c85729..ca5e5fb927d 100644
--- a/media/filters/ffmpeg_aac_bitstream_converter.cc
+++ b/media/filters/ffmpeg_aac_bitstream_converter.cc
@@ -195,14 +195,15 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
if (!header_generated_ || codec_ != stream_codec_parameters_->codec_id ||
audio_profile_ != stream_codec_parameters_->profile ||
sample_rate_index_ != sample_rate_index ||
- channel_configuration_ != stream_codec_parameters_->channels ||
+ channel_configuration_ !=
+ stream_codec_parameters_->ch_layout.nb_channels ||
frame_length_ != header_plus_packet_size) {
header_generated_ =
GenerateAdtsHeader(stream_codec_parameters_->codec_id,
0, // layer
stream_codec_parameters_->profile, sample_rate_index,
0, // private stream
- stream_codec_parameters_->channels,
+ stream_codec_parameters_->ch_layout.nb_channels,
0, // originality
0, // home
0, // copyrighted_stream
@@ -214,7 +215,7 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
codec_ = stream_codec_parameters_->codec_id;
audio_profile_ = stream_codec_parameters_->profile;
sample_rate_index_ = sample_rate_index;
- channel_configuration_ = stream_codec_parameters_->channels;
+ channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels;
frame_length_ = header_plus_packet_size;
}
diff --git a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
index 1fd4c5ccd7d..f59bcd8fdaf 100644
--- a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
+++ b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
@@ -34,7 +34,7 @@ class FFmpegAACBitstreamConverterTest : public testing::Test {
memset(&test_parameters_, 0, sizeof(AVCodecParameters));
test_parameters_.codec_id = AV_CODEC_ID_AAC;
test_parameters_.profile = AV_PROFILE_AAC_MAIN;
- test_parameters_.channels = 2;
+ test_parameters_.ch_layout.nb_channels = 2;
test_parameters_.extradata = extradata_header_;
test_parameters_.extradata_size = sizeof(extradata_header_);
}
diff --git a/media/filters/ffmpeg_audio_decoder.cc b/media/filters/ffmpeg_audio_decoder.cc
index 6a56c675f7d..4615fdeb3fb 100644
--- a/media/filters/ffmpeg_audio_decoder.cc
+++ b/media/filters/ffmpeg_audio_decoder.cc
@@ -28,7 +28,7 @@ namespace media {
// Return the number of channels from the data in |frame|.
static inline int DetermineChannels(AVFrame* frame) {
- return frame->channels;
+ return frame->ch_layout.nb_channels;
}
// Called by FFmpeg's allocation routine to allocate a buffer. Uses
@@ -231,7 +231,7 @@ bool FFmpegAudioDecoder::OnNewFrame(const DecoderBuffer& buffer,
// Translate unsupported into discrete layouts for discrete configurations;
// ffmpeg does not have a labeled discrete configuration internally.
ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout(
- codec_context_->channel_layout, codec_context_->channels);
+ codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels);
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED &&
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) {
channel_layout = CHANNEL_LAYOUT_DISCRETE;
@@ -403,7 +403,7 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
if (frame->nb_samples <= 0)
return AVERROR(EINVAL);
- if (s->channels != channels) {
+ if (s->ch_layout.nb_channels != channels) {
DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count.";
return AVERROR(EINVAL);
}
@@ -436,7 +436,8 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
ChannelLayout channel_layout =
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE
? CHANNEL_LAYOUT_DISCRETE
- : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels);
+ : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask,
+ s->ch_layout.nb_channels);
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) {
DLOG(ERROR) << "Unsupported channel layout.";

View File

@@ -11,8 +11,8 @@ Index: chromium-120.0.6099.18/build/config/BUILDCONFIG.gn
# Set to true when compiling with the Clang compiler. # Set to true when compiling with the Clang compiler.
is_clang = current_os != "linux" || is_clang = current_os != "linux" ||
(current_cpu != "s390x" && current_cpu != "s390" && (current_cpu != "s390x" && current_cpu != "s390" &&
@@ -354,6 +356,12 @@ default_compiler_configs = [ @@ -389,6 +389,12 @@
"//build/config/sanitizers:default_sanitizer_flags", "//build/config:feature_flags",
] ]
+if (gcc_lto) { +if (gcc_lto) {
@@ -28,8 +28,8 @@ Index: chromium-120.0.6099.18/build/config/compiler/BUILD.gn
=================================================================== ===================================================================
--- chromium-120.0.6099.18.orig/build/config/compiler/BUILD.gn --- chromium-120.0.6099.18.orig/build/config/compiler/BUILD.gn
+++ chromium-120.0.6099.18/build/config/compiler/BUILD.gn +++ chromium-120.0.6099.18/build/config/compiler/BUILD.gn
@@ -2342,6 +2342,10 @@ if (is_win) { @@ -2672,6 +2672,10 @@
common_optimize_on_cflags += [ "-fno-math-errno" ] }
} }
+config("gcc_lto") { +config("gcc_lto") {
@@ -65,6 +65,6 @@ Index: chromium-120.0.6099.18/base/BUILD.gn
+ configs -= [ "//build/config/compiler:gcc_lto" ] + configs -= [ "//build/config/compiler:gcc_lto" ]
+ } + }
+ +
if (!is_nacl) { sources += [
sources += [ "containers/span_rust_unittest.cc",
"containers/span_rust_unittest.cc", "strings/string_piece_rust_unittest.cc",

View File

@@ -110,7 +110,7 @@ index efe6321149679..239fbf4ca69a1 100644
- GdkTexture* texture = GetTextureFromRenderNode(node); - GdkTexture* texture = GetTextureFromRenderNode(node);
size_t nbytes = width * height * sizeof(SkColor); size_t nbytes = width * height * sizeof(SkColor);
SkColor* pixels = reinterpret_cast<SkColor*>(g_malloc(nbytes)); SkColor* pixels = reinterpret_cast<SkColor*>(g_malloc(nbytes));
+ memset(pixels, 0, nbytes); + UNSAFE_TODO(memset(pixels, 0, nbytes));
size_t stride = sizeof(SkColor) * width; size_t stride = sizeof(SkColor) * width;
- gdk_texture_download(texture, reinterpret_cast<guchar*>(pixels), stride); - gdk_texture_download(texture, reinterpret_cast<guchar*>(pixels), stride);
+ if (GdkTexture* texture = GetTextureFromRenderNode(node)) { + if (GdkTexture* texture = GetTextureFromRenderNode(node)) {
@@ -118,7 +118,7 @@ index efe6321149679..239fbf4ca69a1 100644
+ } + }
SkColor fg = GtkStyleContextGetColor(button_context); SkColor fg = GtkStyleContextGetColor(button_context);
for (int i = 0; i < width * height; ++i) { for (int i = 0; i < width * height; ++i) {
pixels[i] = SkColorSetA(fg, SkColorGetA(pixels[i])); UNSAFE_TODO(pixels[i]) =
@@ -199,7 +201,7 @@ void CalculateUnscaledButtonSize( @@ -199,7 +201,7 @@ void CalculateUnscaledButtonSize(
gfx::Size* button_size, gfx::Size* button_size,
gfx::Insets* button_margin) { gfx::Insets* button_margin) {

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/abi_self_test.cc Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/abi_self_test.cc
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/crypto/abi_self_test.cc --- chromium-138.0.7204.35.orig/third_party/boringssl/src/crypto/abi_self_test.cc
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/abi_self_test.cc +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/abi_self_test.cc
@@ -521,3 +521,289 @@ TEST(ABITest, AArch64) { @@ -521,3 +521,289 @@ TEST(ABITest, AArch64) {
CHECK_ABI_NO_UNWIND(abi_test_clobber_v15_upper); CHECK_ABI_NO_UNWIND(abi_test_clobber_v15_upper);
} }
@@ -292,10 +292,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/abi_self_test.cc
+ CHECK_ABI_NO_UNWIND(abi_test_clobber_lr); + CHECK_ABI_NO_UNWIND(abi_test_clobber_lr);
+} +}
+#endif // OPENSSL_PPC64LE && SUPPORTS_ABI_TEST +#endif // OPENSSL_PPC64LE && SUPPORTS_ABI_TEST
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/cpu_ppc64le.cc Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/cpu_ppc64le.cc
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/cpu_ppc64le.cc +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/cpu_ppc64le.cc
@@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
+/* Copyright (c) 2016, Google Inc. +/* Copyright (c) 2016, Google Inc.
+ * + *
@@ -335,11 +335,11 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/cpu_ppc64le.cc
+} +}
+ +
+#endif // OPENSSL_PPC64LE +#endif // OPENSSL_PPC64LE
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/crypto.cc Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/crypto.cc
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/crypto/crypto.cc --- chromium-138.0.7204.35.orig/third_party/boringssl/src/crypto/crypto.cc
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/crypto.cc +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/crypto.cc
@@ -67,6 +67,10 @@ @@ -67,6 +67,10 @@ uint32_t OPENSSL_get_ia32cap(int idx) {
return OPENSSL_ia32cap_P[idx]; return OPENSSL_ia32cap_P[idx];
} }
@@ -350,10 +350,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/crypto.cc
#elif (defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)) && \ #elif (defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)) && \
!defined(OPENSSL_STATIC_ARMCAP) !defined(OPENSSL_STATIC_ARMCAP)
HIDDEN uint32_t OPENSSL_armcap_P = 0; HIDDEN uint32_t OPENSSL_armcap_P = 0;
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl
@@ -0,0 +1,3809 @@ @@ -0,0 +1,3809 @@
+#! /usr/bin/env perl +#! /usr/bin/env perl
+# Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved.
@@ -4164,10 +4164,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/aes/as
+} +}
+ +
+close STDOUT or die "error closing STDOUT: $!"; +close STDOUT or die "error closing STDOUT: $!";
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h --- chromium-138.0.7204.35.orig/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h
@@ -81,6 +81,12 @@ inline int vpaes_capable(void) { return @@ -81,6 +81,12 @@ inline int vpaes_capable(void) { return
inline int vpaes_capable(void) { return CRYPTO_is_NEON_capable(); } inline int vpaes_capable(void) { return CRYPTO_is_NEON_capable(); }
#endif #endif
@@ -4195,10 +4195,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/aes/in
#endif #endif
#endif // OPENSSL_NO_ASM #endif // OPENSSL_NO_ASM
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/bcm.cc Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/bcm.cc
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/crypto/fipsmodule/bcm.cc --- chromium-138.0.7204.35.orig/third_party/boringssl/src/crypto/fipsmodule/bcm.cc
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/bcm.cc +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/bcm.cc
@@ -104,6 +104,7 @@ @@ -104,6 +104,7 @@
#include "self_check/fips.cc.inc" #include "self_check/fips.cc.inc"
#include "self_check/self_check.cc.inc" #include "self_check/self_check.cc.inc"
@@ -4207,10 +4207,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/bcm.cc
#include "sha/sha1.cc.inc" #include "sha/sha1.cc.inc"
#include "sha/sha256.cc.inc" #include "sha/sha256.cc.inc"
#include "sha/sha512.cc.inc" #include "sha/sha512.cc.inc"
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/bn/bn.cc.inc Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/bn/bn.cc.inc
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/crypto/fipsmodule/bn/bn.cc.inc --- chromium-138.0.7204.35.orig/third_party/boringssl/src/crypto/fipsmodule/bn/bn.cc.inc
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/bn/bn.cc.inc +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/bn/bn.cc.inc
@@ -330,6 +330,23 @@ int bn_expand(BIGNUM *bn, size_t bits) { @@ -330,6 +330,23 @@ int bn_expand(BIGNUM *bn, size_t bits) {
} }
@@ -4235,11 +4235,11 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/bn/bn.
if ((size_t)bn->width <= words) { if ((size_t)bn->width <= words) {
if (!bn_wexpand(bn, words)) { if (!bn_wexpand(bn, words)) {
return 0; return 0;
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.cc.inc Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.cc.inc
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.cc.inc --- chromium-138.0.7204.35.orig/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.cc.inc
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.cc.inc +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.cc.inc
@@ -1231,6 +1231,8 @@ int EVP_has_aes_hardware(void) { @@ -1229,6 +1229,8 @@ int EVP_has_aes_hardware(void) {
return hwaes_capable() && crypto_gcm_clmul_enabled(); return hwaes_capable() && crypto_gcm_clmul_enabled();
#elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64) #elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
return hwaes_capable() && CRYPTO_is_ARMv8_PMULL_capable(); return hwaes_capable() && CRYPTO_is_ARMv8_PMULL_capable();
@@ -4248,10 +4248,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/cipher
#else #else
return 0; return 0;
#endif #endif
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/aes/asm/ghashp8-ppc.pl Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/aes/asm/ghashp8-ppc.pl
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/aes/asm/ghashp8-ppc.pl +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/aes/asm/ghashp8-ppc.pl
@@ -0,0 +1,671 @@ @@ -0,0 +1,671 @@
+#! /usr/bin/env perl +#! /usr/bin/env perl
+# Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved.
@@ -4924,10 +4924,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/aes/as
+} +}
+ +
+close STDOUT or die "error closing STDOUT: $!"; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/aes/gcm.cc.inc Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/aes/gcm.cc.inc
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/crypto/fipsmodule/aes/gcm.cc.inc --- chromium-138.0.7204.35.orig/third_party/boringssl/src/crypto/fipsmodule/aes/gcm.cc.inc
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/aes/gcm.cc.inc +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/aes/gcm.cc.inc
@@ -233,6 +233,13 @@ void CRYPTO_ghash_init(gmult_func *out_m @@ -233,6 +233,13 @@ void CRYPTO_ghash_init(gmult_func *out_m
*out_hash = gcm_ghash_neon; *out_hash = gcm_ghash_neon;
return; return;
@@ -4942,10 +4942,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/aes/gc
#endif #endif
gcm_init_nohw(out_table, H); gcm_init_nohw(out_table, H);
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/aes/gcm_test.cc Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/aes/gcm_test.cc
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/crypto/fipsmodule/aes/gcm_test.cc --- chromium-138.0.7204.35.orig/third_party/boringssl/src/crypto/fipsmodule/aes/gcm_test.cc
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/aes/gcm_test.cc +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/aes/gcm_test.cc
@@ -169,5 +169,15 @@ TEST(GCMTest, ABI) { @@ -169,5 +169,15 @@ TEST(GCMTest, ABI) {
} }
} }
@@ -4962,10 +4962,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/aes/gc
+#endif // GHASH_ASM_PPC64LE +#endif // GHASH_ASM_PPC64LE
} }
#endif // SUPPORTS_ABI_TEST && !OPENSSL_NO_ASM #endif // SUPPORTS_ABI_TEST && !OPENSSL_NO_ASM
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/rand/getrandom_fillin.h Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/rand/getrandom_fillin.h
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/crypto/rand/getrandom_fillin.h --- chromium-138.0.7204.35.orig/third_party/boringssl/src/crypto/rand/getrandom_fillin.h
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/rand/getrandom_fillin.h +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/rand/getrandom_fillin.h
@@ -30,6 +30,8 @@ @@ -30,6 +30,8 @@
#define EXPECTED_NR_getrandom 278 #define EXPECTED_NR_getrandom 278
#elif defined(OPENSSL_ARM) #elif defined(OPENSSL_ARM)
@@ -4975,10 +4975,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/rand/getrandom_fi
#elif defined(OPENSSL_RISCV64) #elif defined(OPENSSL_RISCV64)
#define EXPECTED_NR_getrandom 278 #define EXPECTED_NR_getrandom 278
#endif #endif
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/rand/rand.cc.inc Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/rand/rand.cc.inc
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/crypto/fipsmodule/rand/rand.cc.inc --- chromium-138.0.7204.35.orig/third_party/boringssl/src/crypto/fipsmodule/rand/rand.cc.inc
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/rand/rand.cc.inc +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/rand/rand.cc.inc
@@ -431,6 +431,11 @@ bcm_infallible BCM_rand_bytes_with_addit @@ -431,6 +431,11 @@ bcm_infallible BCM_rand_bytes_with_addit
// Take a read lock around accesses to |state->drbg|. This is needed to // Take a read lock around accesses to |state->drbg|. This is needed to
// avoid returning bad entropy if we race with // avoid returning bad entropy if we race with
@@ -4991,10 +4991,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/rand/r
CRYPTO_MUTEX_lock_read(&state->clear_drbg_lock); CRYPTO_MUTEX_lock_read(&state->clear_drbg_lock);
#endif #endif
if (!CTR_DRBG_reseed(&state->drbg, seed, reseed_additional_data, if (!CTR_DRBG_reseed(&state->drbg, seed, reseed_additional_data,
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h --- chromium-138.0.7204.35.orig/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h
@@ -23,6 +23,16 @@ @@ -23,6 +23,16 @@
extern "C" { extern "C" {
#endif #endif
@@ -5012,10 +5012,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/sha/in
// Define SHA{n}[_{variant}]_ASM if sha{n}_block_data_order[_{variant}] is // Define SHA{n}[_{variant}]_ASM if sha{n}_block_data_order[_{variant}] is
// defined in assembly. // defined in assembly.
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.cc.inc Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.cc.inc
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.cc.inc +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.cc.inc
@@ -0,0 +1,369 @@ @@ -0,0 +1,369 @@
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.ccom) +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.ccom)
+ * All rights reserved. + * All rights reserved.
@@ -5386,10 +5386,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/sha/sh
+#undef BODY_20_39 +#undef BODY_20_39
+#undef BODY_40_59 +#undef BODY_40_59
+#undef BODY_60_79 +#undef BODY_60_79
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/internal.h Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/internal.h
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/crypto/internal.h --- chromium-138.0.7204.35.orig/third_party/boringssl/src/crypto/internal.h
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/internal.h +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/internal.h
@@ -59,8 +59,9 @@ extern "C" { @@ -59,8 +59,9 @@ extern "C" {
#if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_STATIC_ARMCAP) && \ #if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_STATIC_ARMCAP) && \
(defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \ (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \
@@ -5402,7 +5402,7 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/internal.h
#define NEED_CPUID #define NEED_CPUID
// OPENSSL_cpuid_setup initializes the platform-specific feature cache. This // OPENSSL_cpuid_setup initializes the platform-specific feature cache. This
@@ -1401,6 +1402,16 @@ inline int CRYPTO_is_ARMv8_SHA512_capabl @@ -1394,6 +1395,16 @@ inline int CRYPTO_is_ARMv8_SHA512_capabl
#endif // OPENSSL_ARM || OPENSSL_AARCH64 #endif // OPENSSL_ARM || OPENSSL_AARCH64
@@ -5419,10 +5419,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/internal.h
#if defined(BORINGSSL_DISPATCH_TEST) #if defined(BORINGSSL_DISPATCH_TEST)
// Runtime CPU dispatch testing support // Runtime CPU dispatch testing support
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl
@@ -0,0 +1,320 @@ @@ -0,0 +1,320 @@
+#! /usr/bin/env perl +#! /usr/bin/env perl
+# Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
@@ -5744,10 +5744,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/perlasm/ppc-xlate
+___ +___
+ +
+close STDOUT or die "error closing STDOUT: $!"; +close STDOUT or die "error closing STDOUT: $!";
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/test/abi_test.h Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/test/abi_test.h
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/crypto/test/abi_test.h --- chromium-138.0.7204.35.orig/third_party/boringssl/src/crypto/test/abi_test.h
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/test/abi_test.h +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/test/abi_test.h
@@ -179,7 +179,78 @@ struct alignas(16) Reg128 { @@ -179,7 +179,78 @@ struct alignas(16) Reg128 {
CALLER_STATE_REGISTER(uint64_t, x28) \ CALLER_STATE_REGISTER(uint64_t, x28) \
CALLER_STATE_REGISTER(uint64_t, x29) CALLER_STATE_REGISTER(uint64_t, x29)
@@ -5854,10 +5854,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/test/abi_test.h
static_assert(sizeof...(args) <= 8, static_assert(sizeof...(args) <= 8,
"too many arguments for abi_test_trampoline"); "too many arguments for abi_test_trampoline");
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl
@@ -0,0 +1,262 @@ @@ -0,0 +1,262 @@
+#!/usr/bin/env perl +#!/usr/bin/env perl
+# Copyright (c) 2019, Google Inc. +# Copyright (c) 2019, Google Inc.
@@ -6121,10 +6121,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/test/asm/trampoli
+ +
+print $code; +print $code;
+close STDOUT or die "error closing STDOUT: $!"; +close STDOUT or die "error closing STDOUT: $!";
Index: chromium-136.0.7103.48/third_party/boringssl/src/include/openssl/target.h Index: chromium-138.0.7204.35/third_party/boringssl/src/include/openssl/target.h
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/include/openssl/target.h --- chromium-138.0.7204.35.orig/third_party/boringssl/src/include/openssl/target.h
+++ chromium-136.0.7103.48/third_party/boringssl/src/include/openssl/target.h +++ chromium-138.0.7204.35/third_party/boringssl/src/include/openssl/target.h
@@ -34,6 +34,9 @@ @@ -34,6 +34,9 @@
#elif defined(__ARMEL__) || defined(_M_ARM) #elif defined(__ARMEL__) || defined(_M_ARM)
#define OPENSSL_32_BIT #define OPENSSL_32_BIT
@@ -6135,10 +6135,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/include/openssl/target.h
#elif defined(__MIPSEL__) && !defined(__LP64__) #elif defined(__MIPSEL__) && !defined(__LP64__)
#define OPENSSL_32_BIT #define OPENSSL_32_BIT
#define OPENSSL_MIPS #define OPENSSL_MIPS
Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc Index: chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc --- chromium-138.0.7204.35.orig/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc
+++ chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc +++ chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc
@@ -35,6 +35,8 @@ int main(int argc, char **argv) { @@ -35,6 +35,8 @@ int main(int argc, char **argv) {
puts("ARM (32-bit)"); puts("ARM (32-bit)");
#elif defined(OPENSSL_AARCH64) #elif defined(OPENSSL_AARCH64)
@@ -6148,10 +6148,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/acvp/modu
#else #else
#error "FIPS build not supported on this architecture" #error "FIPS build not supported on this architecture"
#endif #endif
Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/delocate.go Index: chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/delocate.go
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.go --- chromium-138.0.7204.35.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.go
+++ chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/delocate.go +++ chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/delocate.go
@@ -56,7 +56,8 @@ type stringWriter interface { @@ -56,7 +56,8 @@ type stringWriter interface {
type processorType int type processorType int
@@ -6210,7 +6210,7 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
return statement, nil return statement, nil
} }
@@ -701,6 +713,191 @@ func (d *delocation) processAarch64Instr @@ -703,6 +715,191 @@ func (d *delocation) processAarch64Instr
return statement, nil return statement, nil
} }
@@ -6402,7 +6402,7 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
func (d *delocation) gatherOffsets(symRef *node32, offsets string) (*node32, string) { func (d *delocation) gatherOffsets(symRef *node32, offsets string) (*node32, string) {
for symRef != nil && symRef.pegRule == ruleOffset { for symRef != nil && symRef.pegRule == ruleOffset {
offset := d.contents(symRef) offset := d.contents(symRef)
@@ -755,6 +952,215 @@ func (d *delocation) parseMemRef(memRef @@ -757,6 +954,215 @@ func (d *delocation) parseMemRef(memRef
return return
} }
@@ -6618,7 +6618,7 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
/* Intel */ /* Intel */
type instructionType int type instructionType int
@@ -1368,6 +1774,8 @@ func writeAarch64Function(w stringWriter @@ -1370,6 +1776,8 @@ func writeAarch64Function(w stringWriter
func transform(w stringWriter, inputs []inputFile) error { func transform(w stringWriter, inputs []inputFile) error {
// symbols contains all defined symbols. // symbols contains all defined symbols.
symbols := make(map[string]struct{}) symbols := make(map[string]struct{})
@@ -6627,7 +6627,7 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
// fileNumbers is the set of IDs seen in .file directives. // fileNumbers is the set of IDs seen in .file directives.
fileNumbers := make(map[int]struct{}) fileNumbers := make(map[int]struct{})
// maxObservedFileNumber contains the largest seen file number in a // maxObservedFileNumber contains the largest seen file number in a
@@ -1400,6 +1808,25 @@ func transform(w stringWriter, inputs [] @@ -1402,6 +1810,25 @@ func transform(w stringWriter, inputs []
}, ruleStatement, ruleSymbolDefiningDirective, ruleSymbolDefiningDirectiveName) }, ruleStatement, ruleSymbolDefiningDirective, ruleSymbolDefiningDirectiveName)
forEachPath(input.ast.up, func(node *node32) { forEachPath(input.ast.up, func(node *node32) {
@@ -6653,7 +6653,7 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
assertNodeType(node, ruleLocationDirective) assertNodeType(node, ruleLocationDirective)
directive := input.contents[node.begin:node.end] directive := input.contents[node.begin:node.end]
if !strings.HasPrefix(directive, ".file") { if !strings.HasPrefix(directive, ".file") {
@@ -1447,11 +1874,13 @@ func transform(w stringWriter, inputs [] @@ -1449,11 +1876,13 @@ func transform(w stringWriter, inputs []
d := &delocation{ d := &delocation{
symbols: symbols, symbols: symbols,
@@ -6667,7 +6667,7 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
gotExternalsNeeded: make(map[string]struct{}), gotExternalsNeeded: make(map[string]struct{}),
gotOffsetsNeeded: make(map[string]struct{}), gotOffsetsNeeded: make(map[string]struct{}),
gotOffOffsetsNeeded: make(map[string]struct{}), gotOffOffsetsNeeded: make(map[string]struct{}),
@@ -1486,6 +1915,22 @@ func transform(w stringWriter, inputs [] @@ -1488,6 +1917,22 @@ func transform(w stringWriter, inputs []
for _, name := range redirectorNames { for _, name := range redirectorNames {
redirector := d.redirectors[name] redirector := d.redirectors[name]
switch d.processor { switch d.processor {
@@ -6690,7 +6690,7 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
case aarch64: case aarch64:
writeAarch64Function(w, redirector, func(w stringWriter) { writeAarch64Function(w, redirector, func(w stringWriter) {
w.WriteString("\tb " + name + "\n") w.WriteString("\tb " + name + "\n")
@@ -1510,6 +1955,13 @@ func transform(w stringWriter, inputs [] @@ -1512,6 +1957,13 @@ func transform(w stringWriter, inputs []
target := d.bssAccessorsNeeded[name] target := d.bssAccessorsNeeded[name]
switch d.processor { switch d.processor {
@@ -6704,7 +6704,7 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
case x86_64: case x86_64:
w.WriteString(".type " + funcName + ", @function\n") w.WriteString(".type " + funcName + ", @function\n")
w.WriteString(funcName + ":\n") w.WriteString(funcName + ":\n")
@@ -1525,6 +1977,26 @@ func transform(w stringWriter, inputs [] @@ -1527,6 +1979,26 @@ func transform(w stringWriter, inputs []
} }
switch d.processor { switch d.processor {
@@ -6731,7 +6731,7 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
case aarch64: case aarch64:
externalNames := sortedSet(d.gotExternalsNeeded) externalNames := sortedSet(d.gotExternalsNeeded)
for _, symbol := range externalNames { for _, symbol := range externalNames {
@@ -1816,6 +2288,10 @@ func localTargetName(name string) string @@ -1818,6 +2290,10 @@ func localTargetName(name string) string
return ".L" + name + "_local_target" return ".L" + name + "_local_target"
} }
@@ -6742,7 +6742,7 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
func isSynthesized(symbol string) bool { func isSynthesized(symbol string) bool {
return strings.HasSuffix(symbol, "_bss_get") || return strings.HasSuffix(symbol, "_bss_get") ||
strings.HasPrefix(symbol, "BORINGSSL_bcm_text_") strings.HasPrefix(symbol, "BORINGSSL_bcm_text_")
@@ -1870,6 +2346,8 @@ func detectProcessor(input inputFile) pr @@ -1872,6 +2348,8 @@ func detectProcessor(input inputFile) pr
switch instructionName { switch instructionName {
case "movq", "call", "leaq": case "movq", "call", "leaq":
return x86_64 return x86_64
@@ -6751,10 +6751,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
case "str", "bl", "ldr", "st1": case "str", "bl", "ldr", "st1":
return aarch64 return aarch64
} }
Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/delocate.peg Index: chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/delocate.peg
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.peg --- chromium-138.0.7204.35.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.peg
+++ chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/delocate.peg +++ chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/delocate.peg
@@ -12,9 +12,9 @@ @@ -12,9 +12,9 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
@@ -6768,10 +6768,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
# To regenerate delocate.peg.go: # To regenerate delocate.peg.go:
# #
Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go Index: chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go --- chromium-138.0.7204.35.orig/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go
+++ chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go +++ chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go
@@ -39,6 +39,11 @@ func (test *delocateTest) Path(file stri @@ -39,6 +39,11 @@ func (test *delocateTest) Path(file stri
var delocateTests = []delocateTest{ var delocateTests = []delocateTest{
@@ -6784,10 +6784,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
{"x86_64-Basic", []string{"in.s"}, "out.s"}, {"x86_64-Basic", []string{"in.s"}, "out.s"},
{"x86_64-BSS", []string{"in.s"}, "out.s"}, {"x86_64-BSS", []string{"in.s"}, "out.s"},
{"x86_64-GOTRewrite", []string{"in.s"}, "out.s"}, {"x86_64-GOTRewrite", []string{"in.s"}, "out.s"},
Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s Index: chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s +++ chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
+ .text + .text
+foo: +foo:
@@ -6798,10 +6798,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
+ .localentry foo,.-foo + .localentry foo,.-foo
+.LVL0: +.LVL0:
+ bl + bl
Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s Index: chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s +++ chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s
@@ -0,0 +1,62 @@ @@ -0,0 +1,62 @@
+.text +.text
+.file 1 "inserted_by_delocate.cc" +.file 1 "inserted_by_delocate.cc"
@@ -6865,19 +6865,19 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
+.byte 0xff +.byte 0xff
+.byte 0x31 +.byte 0x31
+.byte 0x80 +.byte 0x80
Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s Index: chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s +++ chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s
@@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
+ .text + .text
+foo: +foo:
+ addis 22,2,bar@toc@ha + addis 22,2,bar@toc@ha
+ ld 0,bar@toc@l(22) + ld 0,bar@toc@l(22)
Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s Index: chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s +++ chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s
@@ -0,0 +1,72 @@ @@ -0,0 +1,72 @@
+.text +.text
+.file 1 "inserted_by_delocate.cc" +.file 1 "inserted_by_delocate.cc"
@@ -6951,10 +6951,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
+.byte 0xff +.byte 0xff
+.byte 0x31 +.byte 0x31
+.byte 0x80 +.byte 0x80
Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s Index: chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s +++ chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s
@@ -0,0 +1,161 @@ @@ -0,0 +1,161 @@
+ .file "foo.cc" + .file "foo.cc"
+ .abiversion 2 + .abiversion 2
@@ -7117,10 +7117,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
+ .size exported_function,.-exported_function + .size exported_function,.-exported_function
+ .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2" + .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2"
+ .section .note.GNU-stack,"",@progbits + .section .note.GNU-stack,"",@progbits
Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s Index: chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s +++ chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s
@@ -0,0 +1,552 @@ @@ -0,0 +1,552 @@
+.text +.text
+.file 1 "inserted_by_delocate.cc" +.file 1 "inserted_by_delocate.cc"
@@ -7674,10 +7674,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
+.byte 0xff +.byte 0xff
+.byte 0x31 +.byte 0x31
+.byte 0x80 +.byte 0x80
Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s Index: chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s +++ chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s
@@ -0,0 +1,226 @@ @@ -0,0 +1,226 @@
+ .file "foo.cc" + .file "foo.cc"
+ .abiversion 2 + .abiversion 2
@@ -7905,10 +7905,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
+ .zero 20 + .zero 20
+ .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2" + .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2"
+ .section .note.GNU-stack,"",@progbits + .section .note.GNU-stack,"",@progbits
Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s Index: chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s +++ chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s
@@ -0,0 +1,677 @@ @@ -0,0 +1,677 @@
+.text +.text
+.file 1 "inserted_by_delocate.cc" +.file 1 "inserted_by_delocate.cc"
@@ -8587,10 +8587,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
+.byte 0xff +.byte 0xff
+.byte 0x31 +.byte 0x31
+.byte 0x80 +.byte 0x80
Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s Index: chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s +++ chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
+ .text + .text
+foo: +foo:
@@ -8615,10 +8615,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
+ +
+ addis 4, 2, 1+foo-2@toc@ha+3 + addis 4, 2, 1+foo-2@toc@ha+3
+ addi 4, 4, 1+foo-2@toc@l+3 + addi 4, 4, 1+foo-2@toc@l+3
Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s Index: chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s +++ chromium-138.0.7204.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s
@@ -0,0 +1,178 @@ @@ -0,0 +1,178 @@
+.text +.text
+.file 1 "inserted_by_delocate.cc" +.file 1 "inserted_by_delocate.cc"
@@ -8798,11 +8798,11 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/fipstools/delocate/
+.byte 0xff +.byte 0xff
+.byte 0x31 +.byte 0x31
+.byte 0x80 +.byte 0x80
Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.cc.inc Index: chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.cc.inc
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.cc.inc --- chromium-138.0.7204.35.orig/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.cc.inc
+++ chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.cc.inc +++ chromium-138.0.7204.35/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.cc.inc
@@ -367,6 +367,10 @@ static void sha1_block_data_order(uint32 @@ -377,6 +377,10 @@ static void sha1_block_data_order(uint32
return; return;
} }
#endif #endif
@@ -8813,10 +8813,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/crypto/fipsmodule/sha/sh
sha1_block_data_order_nohw(state, data, num); sha1_block_data_order_nohw(state, data, num);
} }
Index: chromium-136.0.7103.48/third_party/boringssl/src/build.json Index: chromium-138.0.7204.35/third_party/boringssl/src/build.json
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/build.json --- chromium-138.0.7204.35.orig/third_party/boringssl/src/build.json
+++ chromium-136.0.7103.48/third_party/boringssl/src/build.json +++ chromium-138.0.7204.35/third_party/boringssl/src/build.json
@@ -128,6 +128,10 @@ @@ -128,6 +128,10 @@
{"src": "crypto/fipsmodule/sha/asm/sha512-armv4.pl"}, {"src": "crypto/fipsmodule/sha/asm/sha512-armv4.pl"},
{"src": "crypto/fipsmodule/aes/asm/vpaes-armv7.pl"} {"src": "crypto/fipsmodule/aes/asm/vpaes-armv7.pl"}
@@ -8828,7 +8828,7 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/build.json
"perlasm_x86": [ "perlasm_x86": [
{"src": "crypto/fipsmodule/aes/asm/aesni-x86.pl"}, {"src": "crypto/fipsmodule/aes/asm/aesni-x86.pl"},
{"src": "crypto/fipsmodule/bn/asm/bn-586.pl"}, {"src": "crypto/fipsmodule/bn/asm/bn-586.pl"},
@@ -234,6 +238,7 @@ @@ -237,6 +241,7 @@
"crypto/cpu_arm_freebsd.cc", "crypto/cpu_arm_freebsd.cc",
"crypto/cpu_arm_linux.cc", "crypto/cpu_arm_linux.cc",
"crypto/cpu_intel.cc", "crypto/cpu_intel.cc",
@@ -8836,7 +8836,7 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/build.json
"crypto/crypto.cc", "crypto/crypto.cc",
"crypto/curve25519/curve25519.cc", "crypto/curve25519/curve25519.cc",
"crypto/curve25519/curve25519_64_adx.cc", "crypto/curve25519/curve25519_64_adx.cc",
@@ -791,6 +796,9 @@ @@ -798,6 +803,9 @@
"perlasm_arm": [ "perlasm_arm": [
{"src": "crypto/test/asm/trampoline-armv4.pl"} {"src": "crypto/test/asm/trampoline-armv4.pl"}
], ],
@@ -8846,10 +8846,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/build.json
"perlasm_x86": [ "perlasm_x86": [
{"src": "crypto/test/asm/trampoline-x86.pl"} {"src": "crypto/test/asm/trampoline-x86.pl"}
], ],
Index: chromium-136.0.7103.48/third_party/boringssl/src/util/pregenerate/build.go Index: chromium-138.0.7204.35/third_party/boringssl/src/util/pregenerate/build.go
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/util/pregenerate/build.go --- chromium-138.0.7204.35.orig/third_party/boringssl/src/util/pregenerate/build.go
+++ chromium-136.0.7103.48/third_party/boringssl/src/util/pregenerate/build.go +++ chromium-138.0.7204.35/third_party/boringssl/src/util/pregenerate/build.go
@@ -38,6 +38,7 @@ type InputTarget struct { @@ -38,6 +38,7 @@ type InputTarget struct {
// architecture. // architecture.
PerlasmAarch64 []PerlasmSource `json:"perlasm_aarch64,omitempty"` PerlasmAarch64 []PerlasmSource `json:"perlasm_aarch64,omitempty"`
@@ -8868,10 +8868,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/util/pregenerate/build.g
for _, p := range in.PerlasmX86 { for _, p := range in.PerlasmX86 {
addPerlasmTask(&out.Asm, &p, "-apple.S", []string{"macosx", "-fPIC"}) addPerlasmTask(&out.Asm, &p, "-apple.S", []string{"macosx", "-fPIC"})
addPerlasmTask(&out.Asm, &p, "-linux.S", []string{"elf", "-fPIC"}) addPerlasmTask(&out.Asm, &p, "-linux.S", []string{"elf", "-fPIC"})
Index: chromium-136.0.7103.48/third_party/boringssl/README.ppc64le Index: chromium-138.0.7204.35/third_party/boringssl/README.ppc64le
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ chromium-136.0.7103.48/third_party/boringssl/README.ppc64le +++ chromium-138.0.7204.35/third_party/boringssl/README.ppc64le
@@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
+============================================================== +==============================================================
+To recreate boringssl pregenerated files patch for ppc64le: +To recreate boringssl pregenerated files patch for ppc64le:
@@ -8881,10 +8881,10 @@ Index: chromium-136.0.7103.48/third_party/boringssl/README.ppc64le
+go run ./util/pregenerate +go run ./util/pregenerate
+cd ../../../../ +cd ../../../../
+diff -urN chromium-*/third_party/boringssl/src/gen.orig chromium-*/third_party/boringssl/src/gen +diff -urN chromium-*/third_party/boringssl/src/gen.orig chromium-*/third_party/boringssl/src/gen
Index: chromium-136.0.7103.48/third_party/boringssl/src/gen/sources.gni Index: chromium-138.0.7204.35/third_party/boringssl/src/gen/sources.gni
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/boringssl/src/gen/sources.gni --- chromium-138.0.7204.35.orig/third_party/boringssl/src/gen/sources.gni
+++ chromium-136.0.7103.48/third_party/boringssl/src/gen/sources.gni +++ chromium-138.0.7204.35/third_party/boringssl/src/gen/sources.gni
@@ -121,6 +121,7 @@ bcm_sources_asm = [ @@ -121,6 +121,7 @@ bcm_sources_asm = [
"gen/bcm/aesv8-gcm-armv8-apple.S", "gen/bcm/aesv8-gcm-armv8-apple.S",
"gen/bcm/aesv8-gcm-armv8-linux.S", "gen/bcm/aesv8-gcm-armv8-linux.S",
@@ -8901,7 +8901,7 @@ Index: chromium-136.0.7103.48/third_party/boringssl/src/gen/sources.gni
"gen/bcm/ghash-ssse3-x86-apple.S", "gen/bcm/ghash-ssse3-x86-apple.S",
"gen/bcm/ghash-ssse3-x86-linux.S", "gen/bcm/ghash-ssse3-x86-linux.S",
"gen/bcm/ghash-ssse3-x86_64-apple.S", "gen/bcm/ghash-ssse3-x86_64-apple.S",
@@ -333,6 +335,7 @@ crypto_sources = [ @@ -336,6 +338,7 @@ crypto_sources = [
"crypto/cpu_arm_freebsd.cc", "crypto/cpu_arm_freebsd.cc",
"crypto/cpu_arm_linux.cc", "crypto/cpu_arm_linux.cc",
"crypto/cpu_intel.cc", "crypto/cpu_intel.cc",

View File

@@ -2052,7 +2052,7 @@ Index: chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/confi
+void av1_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride); +void av1_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride);
+#define av1_fwht4x4 av1_fwht4x4_c +#define av1_fwht4x4 av1_fwht4x4_c
+ +
+uint32_t av1_get_crc32c_value_c(void *crc_calculator, uint8_t *p, size_t length); +uint32_t av1_get_crc32c_value_c(void *crc_calculator, const uint8_t *p, size_t length);
+#define av1_get_crc32c_value av1_get_crc32c_value_c +#define av1_get_crc32c_value av1_get_crc32c_value_c
+ +
+void av1_get_horver_correlation_full_c(const int16_t *diff, int stride, int w, int h, float *hcorr, float *vcorr); +void av1_get_horver_correlation_full_c(const int16_t *diff, int stride, int w, int h, float *hcorr, float *vcorr);

View File

@@ -1,17 +1,15 @@
--- a/third_party/xnnpack/generate_build_gn.py --- a/third_party/xnnpack/generate_build_gn.py
+++ b/third_party/xnnpack/generate_build_gn.py +++ b/third_party/xnnpack/generate_build_gn.py
@@ -236,7 +236,10 @@ @@ -219,6 +219,9 @@
_Platform(gn_cpu='x64', bazel_cpu='k8', bazel_platform='//:linux_x64'),
_Platform(gn_cpu='arm64', _Platform(gn_cpu='arm64',
bazel_cpu='aarch64', bazel_cpu='aarch64',
- bazel_platform='//:linux_aarch64') bazel_platform='//:linux_aarch64'),
+ bazel_platform='//:linux_aarch64'),
+ _Platform(gn_cpu='ppc64', + _Platform(gn_cpu='ppc64',
+ bazel_cpu='ppc64le', + bazel_cpu='ppc64le',
+ bazel_platform='//:linux_ppc64le') + bazel_platform='//:linux_ppc64le'),
] _Platform(gn_cpu='riscv64',
bazel_cpu='riscv64',
bazel_platform='//:linux_riscv64')
--- a/third_party/xnnpack/bazelroot/BUILD --- a/third_party/xnnpack/bazelroot/BUILD
+++ b/third_party/xnnpack/bazelroot/BUILD +++ b/third_party/xnnpack/bazelroot/BUILD
@@ -21,6 +21,14 @@ @@ -21,6 +21,14 @@

View File

@@ -16,7 +16,7 @@ Index: chromium-136.0.7103.48/sandbox/linux/seccomp-bpf-helpers/baseline_policy.
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc --- chromium-136.0.7103.48.orig/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
+++ chromium-136.0.7103.48/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc +++ chromium-136.0.7103.48/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
@@ -90,7 +90,8 @@ bool IsBaselinePolicyWatched(int sysno) @@ -90,7 +90,8 @@
SyscallSets::IsPrctl(sysno) || SyscallSets::IsPrctl(sysno) ||
SyscallSets::IsProcessGroupOrSession(sysno) || SyscallSets::IsProcessGroupOrSession(sysno) ||
#if defined(__i386__) || \ #if defined(__i386__) || \
@@ -26,25 +26,16 @@ Index: chromium-136.0.7103.48/sandbox/linux/seccomp-bpf-helpers/baseline_policy.
SyscallSets::IsSocketCall(sysno) || SyscallSets::IsSocketCall(sysno) ||
#endif #endif
#if defined(__arm__) #if defined(__arm__)
@@ -255,7 +256,7 @@ ResultExpr EvaluateSyscallImpl(int fs_de @@ -254,7 +255,7 @@
}
// TODO(crbug.com/40528912): should i386 really be in this list?
#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \
- defined(__aarch64__) - defined(__aarch64__)
+ defined(__aarch64__) || defined(__powerpc64__) + defined(__aarch64__) || defined(__powerpc64__)
if (sysno == __NR_mmap) if (sysno == __NR_mmap)
return RestrictMmapFlags(); return RestrictMmapFlags();
#endif #endif
@@ -276,7 +277,7 @@ ResultExpr EvaluateSyscallImpl(int fs_de @@ -336,7 +337,8 @@
return RestrictPrctl();
#if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \
- defined(__aarch64__)
+ defined(__aarch64__) || defined(__powerpc64__)
if (sysno == __NR_socketpair) {
// Only allow AF_UNIX, PF_UNIX. Crash if anything else is seen.
static_assert(AF_UNIX == PF_UNIX,
@@ -340,7 +341,8 @@ ResultExpr EvaluateSyscallImpl(int fs_de
} }
#if defined(__i386__) || \ #if defined(__i386__) || \
@@ -376,7 +367,7 @@ Index: chromium-136.0.7103.48/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
case __NR__llseek: case __NR__llseek:
#endif #endif
#if !defined(__aarch64__) #if !defined(__aarch64__)
@@ -604,26 +619,28 @@ bool SyscallSets::IsAllowedGeneralIo(int @@ -619,18 +619,19 @@
case __NR_readv: case __NR_readv:
case __NR_pread64: case __NR_pread64:
#if defined(__arm__) || \ #if defined(__arm__) || \
@@ -399,15 +390,19 @@ Index: chromium-136.0.7103.48/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
+#if defined(__i386__) || defined(__arm__) || defined(__mips__) || defined(__powerpc64__) +#if defined(__i386__) || defined(__arm__) || defined(__mips__) || defined(__powerpc64__)
case __NR__newselect: case __NR__newselect:
#endif #endif
case __NR_write:
@@ -650,11 +651,12 @@
#endif
// send* syscalls need their flags filtered.
#if defined(__arm__) || \ #if defined(__arm__) || \
- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS))
+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \
+ defined(__powerpc64__) + defined(__powerpc64__)
case __NR_send: case __NR_send:
#endif #endif
#if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || \
- defined(__aarch64__) - defined(__mips__) || defined(__aarch64__)
+ defined(__aarch64__) || defined(__powerpc64__) + defined(__mips__) || defined(__aarch64__) || defined(__powerpc64__)
case __NR_sendmsg: // Could specify destination. case __NR_sendmsg: // Could specify destination.
case __NR_sendto: // Could specify destination. case __NR_sendto: // Could specify destination.
#endif #endif

File diff suppressed because it is too large Load Diff

View File

@@ -2,45 +2,26 @@ Index: chromium-128.0.6613.113/chrome/browser/extensions/api/runtime/chrome_runt
=================================================================== ===================================================================
--- chromium-128.0.6613.113.orig/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc --- chromium-128.0.6613.113.orig/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
+++ chromium-128.0.6613.113/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc +++ chromium-128.0.6613.113/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
@@ -310,6 +310,8 @@ @@ -348,6 +348,8 @@
info->arch = extensions::api::runtime::PlatformArch::kMips;
} else if (strcmp(arch, "mips64el") == 0) {
info->arch = extensions::api::runtime::PlatformArch::kMips64; info->arch = extensions::api::runtime::PlatformArch::kMips64;
} else if (strcmp(arch, "riscv64") == 0) {
info->arch = extensions::api::runtime::PlatformArch::kRiscv64;
+ } else if (strcmp(arch, "ppc64") == 0) { + } else if (strcmp(arch, "ppc64") == 0) {
+ info->arch = extensions::api::runtime::PlatformArch::kPpc64; + info->arch = extensions::api::runtime::PlatformArch::kPpc64;
} else { } else {
NOTREACHED(); NOTREACHED();
} }
@@ -325,6 +327,8 @@
info->nacl_arch = extensions::api::runtime::PlatformNaclArch::kMips;
} else if (strcmp(nacl_arch, "mips64") == 0) {
info->nacl_arch = extensions::api::runtime::PlatformNaclArch::kMips64;
+ } else if (strcmp(nacl_arch, "ppc64") == 0) {
+ info->nacl_arch = extensions::api::runtime::PlatformNaclArch::kPpc64;
} else {
NOTREACHED();
}
Index: chromium-128.0.6613.113/extensions/common/api/runtime.json Index: chromium-128.0.6613.113/extensions/common/api/runtime.json
=================================================================== ===================================================================
--- chromium-128.0.6613.113.orig/extensions/common/api/runtime.json --- chromium-128.0.6613.113.orig/extensions/common/api/runtime.json
+++ chromium-128.0.6613.113/extensions/common/api/runtime.json +++ chromium-128.0.6613.113/extensions/common/api/runtime.json
@@ -98,7 +98,8 @@ @@ -99,7 +99,8 @@
{"name": "x86-32", "description": "Specifies the processer architecture as x86-32."},
{"name": "x86-64", "description": "Specifies the processer architecture as x86-64."}, {"name": "x86-64", "description": "Specifies the processer architecture as x86-64."},
{"name": "mips", "description": "Specifies the processer architecture as mips."}, {"name": "mips", "description": "Specifies the processer architecture as mips."},
- {"name": "mips64", "description": "Specifies the processer architecture as mips64."} {"name": "mips64", "description": "Specifies the processer architecture as mips64."},
+ {"name": "mips64", "description": "Specifies the processer architecture as mips64."}, - {"name": "riscv64", "description": "Specifies the processer architecture as riscv64."}
+ {"name": "riscv64", "description": "Specifies the processer architecture as riscv64."},
+ {"name": "ppc64", "description": "Specifies the processer architecture as ppc64."} + {"name": "ppc64", "description": "Specifies the processer architecture as ppc64."}
], ],
"description": "The machine's processor architecture." "description": "The machine's processor architecture."
}, },
@@ -111,7 +112,8 @@
{"name": "x86-32", "description": "Specifies the native client architecture as x86-32."},
{"name": "x86-64", "description": "Specifies the native client architecture as x86-64."},
{"name": "mips", "description": "Specifies the native client architecture as mips."},
- {"name": "mips64", "description": "Specifies the native client architecture as mips64."}
+ {"name": "mips64", "description": "Specifies the native client architecture as mips64."},
+ {"name": "ppc64", "description": "Specifies the native client architecture as ppc64."}
]
},
{

View File

@@ -1,16 +1,11 @@
kIndex: chromium-114.0.5735.45/base/allocator/partition_allocator/partition_alloc.gni --- chromium-139.0.7258.5/base/allocator/partition_allocator/partition_alloc.gni 2025/06/30 09:01:19 1.1
=================================================================== +++ chromium-139.0.7258.5/base/allocator/partition_allocator/partition_alloc.gni 2025/06/30 09:01:57
Index: chromium-128.0.6613.113/base/allocator/partition_allocator/partition_alloc.gni @@ -66,7 +66,7 @@
=================================================================== # Whether 64-bit pointers are used.
--- chromium-128.0.6613.113.orig/base/allocator/partition_allocator/partition_alloc.gni # A static_assert in partition_alloc_config.h verifies that.
+++ chromium-128.0.6613.113/base/allocator/partition_allocator/partition_alloc.gni if (current_cpu == "x64" || current_cpu == "arm64" || current_cpu == "arm64e" ||
@@ -70,7 +70,8 @@ - current_cpu == "loong64" || current_cpu == "riscv64") {
has_64_bit_pointers = false + current_cpu == "loong64" || current_cpu == "riscv64" || current_cpu == "ppc64") {
} else if (current_cpu == "x64" || current_cpu == "arm64" ||
current_cpu == "arm64e" || current_cpu == "loong64" ||
- current_cpu == "riscv64") {
+ current_cpu == "riscv64" || current_cpu == "ppc64") {
+
assert(current_cpu != "arm64e" || (is_ios && target_environment == "device")) assert(current_cpu != "arm64e" || (is_ios && target_environment == "device"))
has_64_bit_pointers = true has_64_bit_pointers = true
} else if (current_cpu == "x86" || current_cpu == "arm" || } else if (current_cpu == "x86" || current_cpu == "arm" ||

View File

@@ -1,13 +0,0 @@
diff -up chromium-131.0.6778.69/build/config/rust.gni.fix-rustc chromium-131.0.6778.69/build/config/rust.gni
--- chromium-131.0.6778.69/build/config/rust.gni.fix-rustc 2024-11-12 22:48:45.000000000 +0100
+++ chromium-131.0.6778.69/build/config/rust.gni 2024-11-19 23:01:25.484436409 +0100
@@ -200,6 +200,9 @@ if (is_linux || is_chromeos) {
if (current_cpu == "arm64") {
rust_abi_target = "aarch64-unknown-linux-gnu"
cargo_target_abi = ""
+ } else if (current_cpu == "ppc64") {
+ rust_abi_target = "powerpc64le-unknown-linux-gnu"
+ cargo_target_abi = ""
} else if (current_cpu == "x86") {
rust_abi_target = "i686-unknown-linux-gnu"
cargo_target_abi = ""

View File

@@ -10,9 +10,9 @@
} }
// Enum to pass as optional bool. // Enum to pass as optional bool.
--- a/components/variations/service/variations_field_trial_creator_base.cc --- chromium-140.0.7339.5/components/variations/service/variations_field_trial_creator.cc 2025/08/12 14:50:52 1.1
+++ b/components/variations/service/variations_field_trial_creator_base.cc +++ chromium-140.0.7339.5/components/variations/service/variations_field_trial_creator.cc 2025/08/12 14:51:32
@@ -109,6 +109,9 @@ @@ -105,6 +105,9 @@
if (process_arch == "x86") { if (process_arch == "x86") {
return Study::X86_32; return Study::X86_32;
} }

View File

@@ -2,15 +2,27 @@ Index: chromium-128.0.6613.113/build/config/compiler/BUILD.gn
=================================================================== ===================================================================
--- chromium-128.0.6613.113.orig/build/config/compiler/BUILD.gn --- chromium-128.0.6613.113.orig/build/config/compiler/BUILD.gn
+++ chromium-128.0.6613.113/build/config/compiler/BUILD.gn +++ chromium-128.0.6613.113/build/config/compiler/BUILD.gn
@@ -1844,7 +1844,7 @@ config("default_warnings") { @@ -1835,12 +1835,16 @@
cflags_cc += [
# -Wno-class-memaccess warns about hash table and vector in blink. # See comment for -Wno-c++11-narrowing.
# But the violation is intentional. "-Wno-narrowing",
- if (!is_nacl) { -
+ if ((!is_nacl) && (current_cpu != "ppc64")) { - # -Wno-class-memaccess warns about hash table and vector in blink.
cflags_cc += [ "-Wno-class-memaccess" ] - # But the violation is intentional.
} - "-Wno-class-memaccess",
]
+ if (current_cpu != "ppc64") {
+ cflags_cc += [
+ # -Wno-class-memaccess warns about hash table and vector in blink.
+ # But the violation is intentional.
+ "-Wno-class-memaccess",
+ ]
+ }
+
# -Wunused-local-typedefs is broken in gcc,
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63872
cflags += [ "-Wno-unused-local-typedefs" ]
@@ -1854,7 +1854,9 @@ config("default_warnings") { @@ -1854,7 +1854,9 @@ config("default_warnings") {
# Don't warn about "maybe" uninitialized. Clang doesn't include this # Don't warn about "maybe" uninitialized. Clang doesn't include this

View File

@@ -1,7 +1,7 @@
Index: chromium-136.0.7103.48/third_party/skia/BUILD.gn Index: chromium-138.0.7204.35/third_party/skia/BUILD.gn
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/skia/BUILD.gn --- chromium-138.0.7204.35.orig/third_party/skia/BUILD.gn
+++ chromium-136.0.7103.48/third_party/skia/BUILD.gn +++ chromium-138.0.7204.35/third_party/skia/BUILD.gn
@@ -193,6 +193,12 @@ opts("lasx") { @@ -193,6 +193,12 @@ opts("lasx") {
cflags = [ "-mlasx" ] cflags = [ "-mlasx" ]
} }
@@ -15,7 +15,7 @@ Index: chromium-136.0.7103.48/third_party/skia/BUILD.gn
# Any feature of Skia that requires third-party code should be optional and use this template. # Any feature of Skia that requires third-party code should be optional and use this template.
template("optional") { template("optional") {
if (invoker.enabled) { if (invoker.enabled) {
@@ -1651,6 +1657,7 @@ skia_component("skia") { @@ -1661,6 +1667,7 @@ skia_component("skia") {
":skx", ":skx",
":typeface_fontations", ":typeface_fontations",
":vello", ":vello",
@@ -23,22 +23,10 @@ Index: chromium-136.0.7103.48/third_party/skia/BUILD.gn
":webp_decode", ":webp_decode",
":wuffs", ":wuffs",
":xml", ":xml",
@@ -1822,7 +1829,10 @@ skia_static_library("pathkit") { Index: chromium-138.0.7204.35/third_party/skia/gn/skia/BUILD.gn
public_configs = [ ":skia_public" ]
configs = skia_library_configs
- deps = [ ":hsw" ]
+ deps = [
+ ":hsw",
+ ":vsx",
+ ]
sources = []
sources += skia_pathops_sources
Index: chromium-136.0.7103.48/third_party/skia/gn/skia/BUILD.gn
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/skia/gn/skia/BUILD.gn --- chromium-138.0.7204.35.orig/third_party/skia/gn/skia/BUILD.gn
+++ chromium-136.0.7103.48/third_party/skia/gn/skia/BUILD.gn +++ chromium-138.0.7204.35/third_party/skia/gn/skia/BUILD.gn
@@ -175,6 +175,8 @@ config("default") { @@ -175,6 +175,8 @@ config("default") {
"-mfpmath=sse", "-mfpmath=sse",
] ]
@@ -48,11 +36,11 @@ Index: chromium-136.0.7103.48/third_party/skia/gn/skia/BUILD.gn
} else if (current_cpu == "loong64") { } else if (current_cpu == "loong64") {
cflags += [ cflags += [
"-mlsx", "-mlsx",
Index: chromium-136.0.7103.48/third_party/skia/include/core/SkTypes.h Index: chromium-138.0.7204.35/third_party/skia/include/core/SkTypes.h
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/skia/include/core/SkTypes.h --- chromium-138.0.7204.35.orig/third_party/skia/include/core/SkTypes.h
+++ chromium-136.0.7103.48/third_party/skia/include/core/SkTypes.h +++ chromium-138.0.7204.35/third_party/skia/include/core/SkTypes.h
@@ -188,4 +188,43 @@ static constexpr uint32_t SK_InvalidGenI @@ -194,4 +194,43 @@ static constexpr uint32_t SK_InvalidGenI
*/ */
static constexpr uint32_t SK_InvalidUniqueID = 0; static constexpr uint32_t SK_InvalidUniqueID = 0;
@@ -96,10 +84,10 @@ Index: chromium-136.0.7103.48/third_party/skia/include/core/SkTypes.h
+#endif +#endif
+ +
#endif #endif
Index: chromium-136.0.7103.48/third_party/skia/src/base/SkSpinlock.cpp Index: chromium-138.0.7204.35/third_party/skia/src/base/SkSpinlock.cpp
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/skia/src/base/SkSpinlock.cpp --- chromium-138.0.7204.35.orig/third_party/skia/src/base/SkSpinlock.cpp
+++ chromium-136.0.7103.48/third_party/skia/src/base/SkSpinlock.cpp +++ chromium-138.0.7204.35/third_party/skia/src/base/SkSpinlock.cpp
@@ -33,7 +33,8 @@ @@ -33,7 +33,8 @@
#endif #endif
@@ -110,10 +98,10 @@ Index: chromium-136.0.7103.48/third_party/skia/src/base/SkSpinlock.cpp
#include <emmintrin.h> #include <emmintrin.h>
static void do_pause() { _mm_pause(); } static void do_pause() { _mm_pause(); }
#else #else
Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkBitmapProcState_opts.h Index: chromium-138.0.7204.35/third_party/skia/src/opts/SkBitmapProcState_opts.h
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/skia/src/opts/SkBitmapProcState_opts.h --- chromium-138.0.7204.35.orig/third_party/skia/src/opts/SkBitmapProcState_opts.h
+++ chromium-136.0.7103.48/third_party/skia/src/opts/SkBitmapProcState_opts.h +++ chromium-138.0.7204.35/third_party/skia/src/opts/SkBitmapProcState_opts.h
@@ -21,7 +21,13 @@ @@ -21,7 +21,13 @@
// The rest are scattershot at the moment but I want to get them // The rest are scattershot at the moment but I want to get them
// all migrated to be normal code inside SkBitmapProcState.cpp. // all migrated to be normal code inside SkBitmapProcState.cpp.
@@ -129,10 +117,10 @@ Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkBitmapProcState_opts.h
#include <immintrin.h> #include <immintrin.h>
#elif defined(SK_ARM_HAS_NEON) #elif defined(SK_ARM_HAS_NEON)
#include <arm_neon.h> #include <arm_neon.h>
Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkBlitRow_opts.h Index: chromium-138.0.7204.35/third_party/skia/src/opts/SkBlitRow_opts.h
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/skia/src/opts/SkBlitRow_opts.h --- chromium-138.0.7204.35.orig/third_party/skia/src/opts/SkBlitRow_opts.h
+++ chromium-136.0.7103.48/third_party/skia/src/opts/SkBlitRow_opts.h +++ chromium-138.0.7204.35/third_party/skia/src/opts/SkBlitRow_opts.h
@@ -69,7 +69,7 @@ @@ -69,7 +69,7 @@
#endif #endif
@@ -142,10 +130,10 @@ Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkBlitRow_opts.h
static inline __m128i SkPMSrcOver_SSE2(const __m128i& src, const __m128i& dst) { static inline __m128i SkPMSrcOver_SSE2(const __m128i& src, const __m128i& dst) {
__m128i scale = _mm_sub_epi32(_mm_set1_epi32(256), __m128i scale = _mm_sub_epi32(_mm_set1_epi32(256),
Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkRasterPipeline_opts.h Index: chromium-138.0.7204.35/third_party/skia/src/opts/SkRasterPipeline_opts.h
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/skia/src/opts/SkRasterPipeline_opts.h --- chromium-138.0.7204.35.orig/third_party/skia/src/opts/SkRasterPipeline_opts.h
+++ chromium-136.0.7103.48/third_party/skia/src/opts/SkRasterPipeline_opts.h +++ chromium-138.0.7204.35/third_party/skia/src/opts/SkRasterPipeline_opts.h
@@ -1,5 +1,6 @@ @@ -1,5 +1,6 @@
/* /*
* Copyright 2018 Google Inc. * Copyright 2018 Google Inc.
@@ -171,7 +159,7 @@ Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkRasterPipeline_opts.h
#elif defined(SKRP_CPU_LASX) #elif defined(SKRP_CPU_LASX)
#include <lasxintrin.h> #include <lasxintrin.h>
#include <lsxintrin.h> #include <lsxintrin.h>
@@ -200,6 +205,184 @@ namespace SK_OPTS_NS { @@ -202,6 +207,192 @@ namespace SK_OPTS_NS {
ptr[3] = a; ptr[3] = a;
} }
@@ -238,6 +226,14 @@ Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkRasterPipeline_opts.h
+ SI V<T> gather(const T* p, U32 ix) { + SI V<T> gather(const T* p, U32 ix) {
+ return {p[ix[0]], p[ix[1]], p[ix[2]], p[ix[3]]}; + return {p[ix[0]], p[ix[1]], p[ix[2]], p[ix[3]]};
+ } + }
+ template <typename T>
+ SI V<T> gather_unaligned(const T* ptr, U32 ix) {
+ // This tells the compiler ptr might not be aligned appropriately, so
+ // it generates better assembly.
+ typedef T __attribute__ ((aligned (1))) unaligned_ptr;
+ const unaligned_ptr* uptr = static_cast<const unaligned_ptr*>(ptr);
+ return V<T>{uptr[ix[0]], uptr[ix[1]], uptr[ix[2]], uptr[ix[3]]};
+ }
+ template <typename V, typename S> + template <typename V, typename S>
+ SI void scatter_masked(V src, S* dst, U32 ix, I32 mask) { + SI void scatter_masked(V src, S* dst, U32 ix, I32 mask) {
+ V before = gather(dst, ix); + V before = gather(dst, ix);
@@ -356,7 +352,7 @@ Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkRasterPipeline_opts.h
#elif defined(SKRP_CPU_NEON) #elif defined(SKRP_CPU_NEON)
template <typename T> using V = Vec<4, T>; template <typename T> using V = Vec<4, T>;
using F = V<float >; using F = V<float >;
@@ -1389,6 +1572,15 @@ SI F from_half(U16 h) { @@ -1427,6 +1618,15 @@ SI F from_half(U16 h) {
#elif defined(SKRP_CPU_HSW) #elif defined(SKRP_CPU_HSW)
return _mm256_cvtph_ps((__m128i)h); return _mm256_cvtph_ps((__m128i)h);
@@ -372,7 +368,7 @@ Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkRasterPipeline_opts.h
#else #else
// Remember, a half is 1-5-10 (sign-exponent-mantissa) with 15 exponent bias. // Remember, a half is 1-5-10 (sign-exponent-mantissa) with 15 exponent bias.
U32 sem = expand(h), U32 sem = expand(h),
@@ -1412,6 +1604,16 @@ SI U16 to_half(F f) { @@ -1450,6 +1650,16 @@ SI U16 to_half(F f) {
#elif defined(SKRP_CPU_HSW) #elif defined(SKRP_CPU_HSW)
return (U16)_mm256_cvtps_ph(f, _MM_FROUND_CUR_DIRECTION); return (U16)_mm256_cvtps_ph(f, _MM_FROUND_CUR_DIRECTION);
@@ -389,7 +385,7 @@ Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkRasterPipeline_opts.h
#else #else
// Remember, a float is 1-8-23 (sign-exponent-mantissa) with 127 exponent bias. // Remember, a float is 1-8-23 (sign-exponent-mantissa) with 127 exponent bias.
U32 sem = sk_bit_cast<U32>(f), U32 sem = sk_bit_cast<U32>(f),
@@ -1492,7 +1694,7 @@ static constexpr size_t N = sizeof(F) / @@ -1530,7 +1740,7 @@ static constexpr size_t N = sizeof(F) /
// instead of {b,a} on the stack. Narrow stages work best for __vectorcall. // instead of {b,a} on the stack. Narrow stages work best for __vectorcall.
#define ABI __vectorcall #define ABI __vectorcall
#define SKRP_NARROW_STAGES 1 #define SKRP_NARROW_STAGES 1
@@ -398,7 +394,7 @@ Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkRasterPipeline_opts.h
// These platforms are ideal for wider stages, and their default ABI is ideal. // These platforms are ideal for wider stages, and their default ABI is ideal.
#define ABI #define ABI
#define SKRP_NARROW_STAGES 0 #define SKRP_NARROW_STAGES 0
@@ -5501,6 +5703,10 @@ SI F sqrt_(F x) { @@ -5539,6 +5749,10 @@ SI F sqrt_(F x) {
float32x4_t lo,hi; float32x4_t lo,hi;
split(x, &lo,&hi); split(x, &lo,&hi);
return join<F>(sqrt(lo), sqrt(hi)); return join<F>(sqrt(lo), sqrt(hi));
@@ -409,7 +405,7 @@ Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkRasterPipeline_opts.h
#elif defined(SKRP_CPU_LASX) #elif defined(SKRP_CPU_LASX)
__m256 lo,hi; __m256 lo,hi;
split(x, &lo,&hi); split(x, &lo,&hi);
@@ -5532,6 +5738,10 @@ SI F floor_(F x) { @@ -5570,6 +5784,10 @@ SI F floor_(F x) {
__m128 lo,hi; __m128 lo,hi;
split(x, &lo,&hi); split(x, &lo,&hi);
return join<F>(_mm_floor_ps(lo), _mm_floor_ps(hi)); return join<F>(_mm_floor_ps(lo), _mm_floor_ps(hi));
@@ -420,7 +416,7 @@ Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkRasterPipeline_opts.h
#elif defined(SKRP_CPU_LASX) #elif defined(SKRP_CPU_LASX)
__m256 lo,hi; __m256 lo,hi;
split(x, &lo,&hi); split(x, &lo,&hi);
@@ -5551,6 +5761,7 @@ SI F floor_(F x) { @@ -5589,6 +5807,7 @@ SI F floor_(F x) {
// (2 * a * b + (1 << 15)) >> 16 // (2 * a * b + (1 << 15)) >> 16
// The result is a number on [-1, 1). // The result is a number on [-1, 1).
// Note: on neon this is a saturating multiply while the others are not. // Note: on neon this is a saturating multiply while the others are not.
@@ -428,7 +424,7 @@ Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkRasterPipeline_opts.h
SI I16 scaled_mult(I16 a, I16 b) { SI I16 scaled_mult(I16 a, I16 b) {
#if defined(SKRP_CPU_SKX) #if defined(SKRP_CPU_SKX)
return (I16)_mm256_mulhrs_epi16((__m256i)a, (__m256i)b); return (I16)_mm256_mulhrs_epi16((__m256i)a, (__m256i)b);
@@ -5562,6 +5773,22 @@ SI I16 scaled_mult(I16 a, I16 b) { @@ -5600,6 +5819,22 @@ SI I16 scaled_mult(I16 a, I16 b) {
return vqrdmulhq_s16(a, b); return vqrdmulhq_s16(a, b);
#elif defined(SKRP_CPU_NEON) #elif defined(SKRP_CPU_NEON)
return vqrdmulhq_s16(a, b); return vqrdmulhq_s16(a, b);
@@ -451,7 +447,7 @@ Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkRasterPipeline_opts.h
#elif defined(SKRP_CPU_LASX) #elif defined(SKRP_CPU_LASX)
I16 res = __lasx_xvmuh_h(a, b); I16 res = __lasx_xvmuh_h(a, b);
return __lasx_xvslli_h(res, 1); return __lasx_xvslli_h(res, 1);
@@ -5589,7 +5816,26 @@ SI U16 constrained_add(I16 a, U16 b) { @@ -5627,7 +5862,26 @@ SI U16 constrained_add(I16 a, U16 b) {
SkASSERT(-ib <= ia && ia <= 65535 - ib); SkASSERT(-ib <= ia && ia <= 65535 - ib);
} }
#endif #endif
@@ -478,7 +474,7 @@ Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkRasterPipeline_opts.h
} }
SI F fract(F x) { return x - floor_(x); } SI F fract(F x) { return x - floor_(x); }
@@ -6606,8 +6852,14 @@ LOWP_STAGE_GP(bilerp_clamp_8888, const S @@ -6683,8 +6937,14 @@ LOWP_STAGE_GP(bilerp_clamp_8888, const S
// 2^-8 * v = 2^-9 * (tx*(R - L) + (R + L)) // 2^-8 * v = 2^-9 * (tx*(R - L) + (R + L))
// v = 1/2 * (tx*(R - L) + (R + L)) // v = 1/2 * (tx*(R - L) + (R + L))
auto lerpX = [&](U16 left, U16 right) -> U16 { auto lerpX = [&](U16 left, U16 right) -> U16 {
@@ -493,7 +489,7 @@ Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkRasterPipeline_opts.h
// The constrained_add is the most subtle part of lerp. The first term is on the interval // The constrained_add is the most subtle part of lerp. The first term is on the interval
// [-1, 1), and the second term is on the interval is on the interval [0, 1) because // [-1, 1), and the second term is on the interval is on the interval [0, 1) because
// both terms are too high by a factor of 2 which will be handled below. (Both R and L are // both terms are too high by a factor of 2 which will be handled below. (Both R and L are
@@ -6619,7 +6871,12 @@ LOWP_STAGE_GP(bilerp_clamp_8888, const S @@ -6696,7 +6956,12 @@ LOWP_STAGE_GP(bilerp_clamp_8888, const S
U16 v2 = constrained_add(scaled_mult(tx, width), middle) + 1; U16 v2 = constrained_add(scaled_mult(tx, width), middle) + 1;
// Divide by 2 to calculate v and at the same time bring the intermediate value onto the // Divide by 2 to calculate v and at the same time bring the intermediate value onto the
// interval [0, 1/2] to set up for the lerpY. // interval [0, 1/2] to set up for the lerpY.
@@ -506,7 +502,7 @@ Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkRasterPipeline_opts.h
}; };
const uint32_t* ptr; const uint32_t* ptr;
@@ -6653,9 +6910,15 @@ LOWP_STAGE_GP(bilerp_clamp_8888, const S @@ -6730,9 +6995,15 @@ LOWP_STAGE_GP(bilerp_clamp_8888, const S
I16 width = (I16)bottom - (I16)top; I16 width = (I16)bottom - (I16)top;
U16 middle = bottom + top; U16 middle = bottom + top;
// Add + 0x80 for rounding. // Add + 0x80 for rounding.
@@ -523,10 +519,10 @@ Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkRasterPipeline_opts.h
}; };
r = lerpY(topR, bottomR); r = lerpY(topR, bottomR);
Index: chromium-136.0.7103.48/third_party/skia/src/base/SkVx.h Index: chromium-138.0.7204.35/third_party/skia/src/base/SkVx.h
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/skia/src/base/SkVx.h --- chromium-138.0.7204.35.orig/third_party/skia/src/base/SkVx.h
+++ chromium-136.0.7103.48/third_party/skia/src/base/SkVx.h +++ chromium-138.0.7204.35/third_party/skia/src/base/SkVx.h
@@ -41,7 +41,12 @@ @@ -41,7 +41,12 @@
#endif #endif
@@ -541,10 +537,10 @@ Index: chromium-136.0.7103.48/third_party/skia/src/base/SkVx.h
#include <immintrin.h> #include <immintrin.h>
#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE41 #elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE41
#include <smmintrin.h> #include <smmintrin.h>
Index: chromium-136.0.7103.48/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp Index: chromium-138.0.7204.35/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp --- chromium-138.0.7204.35.orig/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp
+++ chromium-136.0.7103.48/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp +++ chromium-138.0.7204.35/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
#include "src/core/SkBlitMask.h" #include "src/core/SkBlitMask.h"
#include "src/core/SkOptsTargets.h" #include "src/core/SkOptsTargets.h"
@@ -554,10 +550,10 @@ Index: chromium-136.0.7103.48/third_party/skia/src/core/SkBlitMask_opts_ssse3.cp
// The order of these includes is important: // The order of these includes is important:
// 1) Select the target CPU architecture by defining SK_OPTS_TARGET and including SkOpts_SetTarget // 1) Select the target CPU architecture by defining SK_OPTS_TARGET and including SkOpts_SetTarget
Index: chromium-136.0.7103.48/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp Index: chromium-138.0.7204.35/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp --- chromium-138.0.7204.35.orig/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp
+++ chromium-136.0.7103.48/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp +++ chromium-138.0.7204.35/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
#include "src/core/SkOptsTargets.h" #include "src/core/SkOptsTargets.h"
#include "src/core/SkSwizzlePriv.h" #include "src/core/SkSwizzlePriv.h"
@@ -567,10 +563,10 @@ Index: chromium-136.0.7103.48/third_party/skia/src/core/SkSwizzler_opts_ssse3.cp
!defined(SK_ENABLE_OPTIMIZE_SIZE) && \ !defined(SK_ENABLE_OPTIMIZE_SIZE) && \
SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_SSSE3 SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_SSSE3
Index: chromium-136.0.7103.48/third_party/skia/src/core/SkBlitMask_opts.cpp Index: chromium-138.0.7204.35/third_party/skia/src/core/SkBlitMask_opts.cpp
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/skia/src/core/SkBlitMask_opts.cpp --- chromium-138.0.7204.35.orig/third_party/skia/src/core/SkBlitMask_opts.cpp
+++ chromium-136.0.7103.48/third_party/skia/src/core/SkBlitMask_opts.cpp +++ chromium-138.0.7204.35/third_party/skia/src/core/SkBlitMask_opts.cpp
@@ -25,7 +25,7 @@ namespace SkOpts { @@ -25,7 +25,7 @@ namespace SkOpts {
static bool init() { static bool init() {
#if defined(SK_ENABLE_OPTIMIZE_SIZE) #if defined(SK_ENABLE_OPTIMIZE_SIZE)
@@ -580,10 +576,10 @@ Index: chromium-136.0.7103.48/third_party/skia/src/core/SkBlitMask_opts.cpp
#if SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_SSSE3 #if SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_SSSE3
if (SkCpu::Supports(SkCpu::SSSE3)) { Init_BlitMask_ssse3(); } if (SkCpu::Supports(SkCpu::SSSE3)) { Init_BlitMask_ssse3(); }
#endif #endif
Index: chromium-136.0.7103.48/third_party/skia/src/core/SkBitmapProcState_opts.cpp Index: chromium-138.0.7204.35/third_party/skia/src/core/SkBitmapProcState_opts.cpp
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/skia/src/core/SkBitmapProcState_opts.cpp --- chromium-138.0.7204.35.orig/third_party/skia/src/core/SkBitmapProcState_opts.cpp
+++ chromium-136.0.7103.48/third_party/skia/src/core/SkBitmapProcState_opts.cpp +++ chromium-138.0.7204.35/third_party/skia/src/core/SkBitmapProcState_opts.cpp
@@ -27,7 +27,7 @@ namespace SkOpts { @@ -27,7 +27,7 @@ namespace SkOpts {
static bool init() { static bool init() {
#if defined(SK_ENABLE_OPTIMIZE_SIZE) #if defined(SK_ENABLE_OPTIMIZE_SIZE)
@@ -593,10 +589,10 @@ Index: chromium-136.0.7103.48/third_party/skia/src/core/SkBitmapProcState_opts.c
#if SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_SSSE3 #if SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_SSSE3
if (SkCpu::Supports(SkCpu::SSSE3)) { Init_BitmapProcState_ssse3(); } if (SkCpu::Supports(SkCpu::SSSE3)) { Init_BitmapProcState_ssse3(); }
#endif #endif
Index: chromium-136.0.7103.48/third_party/skia/src/core/SkCpu.h Index: chromium-138.0.7204.35/third_party/skia/src/core/SkCpu.h
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/skia/src/core/SkCpu.h --- chromium-138.0.7204.35.orig/third_party/skia/src/core/SkCpu.h
+++ chromium-136.0.7103.48/third_party/skia/src/core/SkCpu.h +++ chromium-138.0.7204.35/third_party/skia/src/core/SkCpu.h
@@ -60,7 +60,7 @@ inline bool SkCpu::Supports(uint32_t mas @@ -60,7 +60,7 @@ inline bool SkCpu::Supports(uint32_t mas
// If we mask in compile-time known lower limits, the compiler can // If we mask in compile-time known lower limits, the compiler can
@@ -606,10 +602,10 @@ Index: chromium-136.0.7103.48/third_party/skia/src/core/SkCpu.h
#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE1 #if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE1
features |= SSE1; features |= SSE1;
#endif #endif
Index: chromium-136.0.7103.48/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp Index: chromium-138.0.7204.35/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp --- chromium-138.0.7204.35.orig/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp
+++ chromium-136.0.7103.48/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp +++ chromium-138.0.7204.35/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
#include "include/private/base/SkFeatures.h" #include "include/private/base/SkFeatures.h"
#include "src/core/SkOptsTargets.h" #include "src/core/SkOptsTargets.h"
@@ -619,10 +615,10 @@ Index: chromium-136.0.7103.48/third_party/skia/src/core/SkBitmapProcState_opts_s
// The order of these includes is important: // The order of these includes is important:
// 1) Select the target CPU architecture by defining SK_OPTS_TARGET and including SkOpts_SetTarget // 1) Select the target CPU architecture by defining SK_OPTS_TARGET and including SkOpts_SetTarget
Index: chromium-136.0.7103.48/third_party/skia/include/private/base/SkFeatures.h Index: chromium-138.0.7204.35/third_party/skia/include/private/base/SkFeatures.h
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/skia/include/private/base/SkFeatures.h --- chromium-138.0.7204.35.orig/third_party/skia/include/private/base/SkFeatures.h
+++ chromium-136.0.7103.48/third_party/skia/include/private/base/SkFeatures.h +++ chromium-138.0.7204.35/third_party/skia/include/private/base/SkFeatures.h
@@ -63,6 +63,8 @@ @@ -63,6 +63,8 @@
#if defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) #if defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64)
@@ -632,10 +628,10 @@ Index: chromium-136.0.7103.48/third_party/skia/include/private/base/SkFeatures.h
#endif #endif
#if defined(__loongarch__) || defined (__loongarch64) #if defined(__loongarch__) || defined (__loongarch64)
Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkSwizzler_opts.inc Index: chromium-138.0.7204.35/third_party/skia/src/opts/SkSwizzler_opts.inc
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/skia/src/opts/SkSwizzler_opts.inc --- chromium-138.0.7204.35.orig/third_party/skia/src/opts/SkSwizzler_opts.inc
+++ chromium-136.0.7103.48/third_party/skia/src/opts/SkSwizzler_opts.inc +++ chromium-138.0.7204.35/third_party/skia/src/opts/SkSwizzler_opts.inc
@@ -14,7 +14,10 @@ @@ -14,7 +14,10 @@
#include <cmath> #include <cmath>
#include <utility> #include <utility>
@@ -682,11 +678,11 @@ Index: chromium-136.0.7103.48/third_party/skia/src/opts/SkSwizzler_opts.inc
#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE1 && (defined(__clang__) || !defined(_MSC_VER)) #elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE1 && (defined(__clang__) || !defined(_MSC_VER))
// -- SSE -- Harden against timing attacks -- MSVC is not supported. // -- SSE -- Harden against timing attacks -- MSVC is not supported.
using F4 = __m128; using F4 = __m128;
Index: chromium-136.0.7103.48/third_party/skia/src/core/SkBlitter_ARGB32.cpp Index: chromium-138.0.7204.35/third_party/skia/src/core/SkBlitter_ARGB32.cpp
=================================================================== ===================================================================
--- chromium-136.0.7103.48.orig/third_party/skia/src/core/SkBlitter_ARGB32.cpp --- chromium-138.0.7204.35.orig/third_party/skia/src/core/SkBlitter_ARGB32.cpp
+++ chromium-136.0.7103.48/third_party/skia/src/core/SkBlitter_ARGB32.cpp +++ chromium-138.0.7204.35/third_party/skia/src/core/SkBlitter_ARGB32.cpp
@@ -127,6 +127,16 @@ static inline SkPMColor blend_lcd16_opaq @@ -129,6 +129,16 @@ static inline SkPMColor blend_lcd16_opaq
#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2 #if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2
#include <emmintrin.h> #include <emmintrin.h>

View File

@@ -1,24 +0,0 @@
From bb255dd0252e256a28542475b22711346c319030 Mon Sep 17 00:00:00 2001
From: Jason Simmons <jsimmons@google.com>
Date: Fri, 16 May 2025 01:08:27 +0000
Subject: [PATCH] Fix shift of the blue component in store_1010102_xr
Bug: https://github.com/flutter/flutter/issues/168849
Change-Id: I43c21535fbea6749f644301e162aacb2bbd5f5c3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/994956
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Jason Simmons <jsimmons@google.com>
diff --git a/src/opts/SkRasterPipeline_opts.h b/src/opts/SkRasterPipeline_opts.h
index fb644ba5e3..3784ccbde5 100644
--- a/src/opts/SkRasterPipeline_opts.h
+++ b/src/opts/SkRasterPipeline_opts.h
@@ -3137,7 +3137,7 @@ HIGHP_STAGE(store_1010102_xr, const SkRasterPipelineContexts::MemoryCtx* ctx) {
// This is the inverse of from_1010102_xr, e.g. (v * 510 + 384)
U32 px = to_unorm(r, /*scale=*/510, /*bias=*/384, /*maxI=*/1023)
| to_unorm(g, /*scale=*/510, /*bias=*/384, /*maxI=*/1023) << 10
- | to_unorm(b, /*scale=*/510, /*bias=*/384, /*maxI=*/1023) << 10
+ | to_unorm(b, /*scale=*/510, /*bias=*/384, /*maxI=*/1023) << 20
| to_unorm(a, /*scale=*/3) << 30;
store(ptr, px);
}

View File

@@ -1,272 +0,0 @@
From c759c1a4717afadfedab300b6314f428b05741ac Mon Sep 17 00:00:00 2001
From: Kaylee Lubick <kjlubick@google.com>
Date: Mon, 21 Apr 2025 14:51:16 -0400
Subject: [PATCH] Remove alignment assumptions in highp gather
Follow-up to http://review.skia.org/981638
We didn't have any reports that this was causing a problem
but I didn't want to leave the same root cause lurking.
Change-Id: I0d42c4abf4d642f5a33e094f88bde7bf387d2f2f
Bug: b/409859319
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/983176
Reviewed-by: Daniel Dilan <danieldilan@google.com>
diff --git a/src/opts/SkRasterPipeline_opts.h b/src/opts/SkRasterPipeline_opts.h
index d14df3677c..fb644ba5e3 100644
--- a/src/opts/SkRasterPipeline_opts.h
+++ b/src/opts/SkRasterPipeline_opts.h
@@ -161,6 +161,8 @@ namespace SK_OPTS_NS {
template <typename T>
SI T gather(const T* p, U32 ix) { return p[ix]; }
+ template <typename T>
+ SI T gather_unaligned(const T* p, U32 ix) { return gather<T>(p, ix); }
SI void scatter_masked(I32 src, int* dst, U32 ix, I32 mask) {
dst[ix] = mask ? src : dst[ix];
@@ -274,9 +276,23 @@ namespace SK_OPTS_NS {
#endif
template <typename T>
- SI V<T> gather(const T* p, U32 ix) {
- return V<T>{p[ix[0]], p[ix[1]], p[ix[2]], p[ix[3]]};
+ SI V<T> gather(const T* ptr, U32 ix) {
+ // The compiler assumes ptr is aligned, which caused crashes on some
+ // arm32 chips because a register was marked as "aligned to 32 bits"
+ // incorrectly. https://crbug.com/skia/409859319
+ SkASSERTF(reinterpret_cast<uintptr_t>(ptr) % alignof(T) == 0,
+ "Should use gather_unaligned");
+ return V<T>{ptr[ix[0]], ptr[ix[1]], ptr[ix[2]], ptr[ix[3]]};
+ }
+ template <typename T>
+ SI V<T> gather_unaligned(const T* ptr, U32 ix) {
+ // This tells the compiler ptr might not be aligned appropriately, so
+ // it generates better assembly.
+ typedef T __attribute__ ((aligned (1))) unaligned_ptr;
+ const unaligned_ptr* uptr = static_cast<const unaligned_ptr*>(ptr);
+ return V<T>{uptr[ix[0]], uptr[ix[1]], uptr[ix[2]], uptr[ix[3]]};
}
+
SI void scatter_masked(I32 src, int* dst, U32 ix, I32 mask) {
I32 before = gather(dst, ix);
I32 after = if_then_else(mask, src, before);
@@ -389,6 +405,11 @@ namespace SK_OPTS_NS {
};
return sk_bit_cast<U64>(parts);
}
+ template <typename T>
+ SI V<T> gather_unaligned(const T* p, U32 ix) {
+ return gather(p, ix);
+ }
+
template <typename V, typename S>
SI void scatter_masked(V src, S* dst, U32 ix, I32 mask) {
V before = gather(dst, ix);
@@ -627,6 +648,11 @@ namespace SK_OPTS_NS {
};
return sk_bit_cast<U64>(parts);
}
+ template <typename T>
+ SI V<T> gather_unaligned(const T* p, U32 ix) {
+ return gather(p, ix);
+ }
+
SI void scatter_masked(I32 src, int* dst, U32 ix, I32 mask) {
I32 before = gather(dst, ix);
I32 after = if_then_else(mask, src, before);
@@ -827,6 +853,10 @@ namespace SK_OPTS_NS {
SI V<T> gather(const T* p, U32 ix) {
return V<T>{p[ix[0]], p[ix[1]], p[ix[2]], p[ix[3]]};
}
+ template <typename T>
+ SI V<T> gather_unaligned(const T* p, U32 ix) {
+ return gather(p, ix);
+ }
SI void scatter_masked(I32 src, int* dst, U32 ix, I32 mask) {
I32 before = gather(dst, ix);
I32 after = if_then_else(mask, src, before);
@@ -988,6 +1018,10 @@ namespace SK_OPTS_NS {
return V<T>{ p[ix[0]], p[ix[1]], p[ix[2]], p[ix[3]],
p[ix[4]], p[ix[5]], p[ix[6]], p[ix[7]], };
}
+ template <typename T>
+ SI V<T> gather_unaligned(const T* p, U32 ix) {
+ return gather(p, ix);
+ }
template <typename V, typename S>
SI void scatter_masked(V src, S* dst, U32 ix, I32 mask) {
@@ -1195,6 +1229,10 @@ namespace SK_OPTS_NS {
ret = (F)__lsx_vinsgr2vr_w(ret, p[ix3], 3);
return ret;
}
+ template <typename T>
+ SI V<T> gather_unaligned(const T* p, U32 ix) {
+ return gather(p, ix);
+ }
template <typename V, typename S>
SI void scatter_masked(V src, S* dst, U32 ix, I32 mask) {
@@ -2854,7 +2892,7 @@ HIGHP_STAGE(load_565_dst, const SkRasterPipelineContexts::MemoryCtx* ctx) {
HIGHP_STAGE(gather_565, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint16_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, r,g);
- from_565(gather(ptr, ix), &r,&g,&b);
+ from_565(gather_unaligned(ptr, ix), &r,&g,&b);
a = F1;
}
HIGHP_STAGE(store_565, const SkRasterPipelineContexts::MemoryCtx* ctx) {
@@ -2877,7 +2915,7 @@ HIGHP_STAGE(load_4444_dst, const SkRasterPipelineContexts::MemoryCtx* ctx) {
HIGHP_STAGE(gather_4444, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint16_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, r,g);
- from_4444(gather(ptr, ix), &r,&g,&b,&a);
+ from_4444(gather_unaligned(ptr, ix), &r,&g,&b,&a);
}
HIGHP_STAGE(store_4444, const SkRasterPipelineContexts::MemoryCtx* ctx) {
auto ptr = ptr_at_xy<uint16_t>(ctx, dx,dy);
@@ -2899,7 +2937,7 @@ HIGHP_STAGE(load_8888_dst, const SkRasterPipelineContexts::MemoryCtx* ctx) {
HIGHP_STAGE(gather_8888, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint32_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, r,g);
- from_8888(gather(ptr, ix), &r,&g,&b,&a);
+ from_8888(gather_unaligned(ptr, ix), &r,&g,&b,&a);
}
HIGHP_STAGE(store_8888, const SkRasterPipelineContexts::MemoryCtx* ctx) {
auto ptr = ptr_at_xy<uint32_t>(ctx, dx,dy);
@@ -2926,7 +2964,7 @@ HIGHP_STAGE(load_rg88_dst, const SkRasterPipelineContexts::MemoryCtx* ctx) {
HIGHP_STAGE(gather_rg88, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint16_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, r, g);
- from_88(gather(ptr, ix), &r, &g);
+ from_88(gather_unaligned(ptr, ix), &r, &g);
b = F0;
a = F1;
}
@@ -2950,7 +2988,7 @@ HIGHP_STAGE(gather_a16, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint16_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, r, g);
r = g = b = F0;
- a = from_short(gather(ptr, ix));
+ a = from_short(gather_unaligned(ptr, ix));
}
HIGHP_STAGE(store_a16, const SkRasterPipelineContexts::MemoryCtx* ctx) {
auto ptr = ptr_at_xy<uint16_t>(ctx, dx,dy);
@@ -2974,7 +3012,7 @@ HIGHP_STAGE(load_rg1616_dst, const SkRasterPipelineContexts::MemoryCtx* ctx) {
HIGHP_STAGE(gather_rg1616, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint32_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, r, g);
- from_1616(gather(ptr, ix), &r, &g);
+ from_1616(gather_unaligned(ptr, ix), &r, &g);
b = F0;
a = F1;
}
@@ -2997,7 +3035,7 @@ HIGHP_STAGE(load_16161616_dst, const SkRasterPipelineContexts::MemoryCtx* ctx) {
HIGHP_STAGE(gather_16161616, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint64_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, r, g);
- from_16161616(gather(ptr, ix), &r, &g, &b, &a);
+ from_16161616(gather_unaligned(ptr, ix), &r, &g, &b, &a);
}
HIGHP_STAGE(store_16161616, const SkRasterPipelineContexts::MemoryCtx* ctx) {
auto ptr = ptr_at_xy<uint16_t>(ctx, 4*dx,4*dy);
@@ -3021,7 +3059,7 @@ HIGHP_STAGE(load_10x6_dst, const SkRasterPipelineContexts::MemoryCtx* ctx) {
HIGHP_STAGE(gather_10x6, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint64_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, r, g);
- from_10x6(gather(ptr, ix), &r, &g, &b, &a);
+ from_10x6(gather_unaligned(ptr, ix), &r, &g, &b, &a);
}
HIGHP_STAGE(store_10x6, const SkRasterPipelineContexts::MemoryCtx* ctx) {
auto ptr = ptr_at_xy<uint16_t>(ctx, 4*dx,4*dy);
@@ -3053,17 +3091,17 @@ HIGHP_STAGE(load_1010102_xr_dst, const SkRasterPipelineContexts::MemoryCtx* ctx)
HIGHP_STAGE(gather_1010102, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint32_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, r,g);
- from_1010102(gather(ptr, ix), &r,&g,&b,&a);
+ from_1010102(gather_unaligned(ptr, ix), &r,&g,&b,&a);
}
HIGHP_STAGE(gather_1010102_xr, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint32_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, r, g);
- from_1010102_xr(gather(ptr, ix), &r,&g,&b,&a);
+ from_1010102_xr(gather_unaligned(ptr, ix), &r,&g,&b,&a);
}
HIGHP_STAGE(gather_10101010_xr, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint64_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, r, g);
- from_10101010_xr(gather(ptr, ix), &r, &g, &b, &a);
+ from_10101010_xr(gather_unaligned(ptr, ix), &r, &g, &b, &a);
}
HIGHP_STAGE(load_10101010_xr, const SkRasterPipelineContexts::MemoryCtx* ctx) {
auto ptr = ptr_at_xy<const uint64_t>(ctx, dx, dy);
@@ -3127,7 +3165,7 @@ HIGHP_STAGE(load_f16_dst, const SkRasterPipelineContexts::MemoryCtx* ctx) {
HIGHP_STAGE(gather_f16, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint64_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, r,g);
- auto px = gather(ptr, ix);
+ auto px = gather_unaligned(ptr, ix);
U16 R,G,B,A;
load4((const uint16_t*)&px, &R,&G,&B,&A);
@@ -3164,7 +3202,7 @@ HIGHP_STAGE(gather_af16, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint16_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, r, g);
r = g = b = F0;
- a = from_half(gather(ptr, ix));
+ a = from_half(gather_unaligned(ptr, ix));
}
HIGHP_STAGE(store_af16, const SkRasterPipelineContexts::MemoryCtx* ctx) {
auto ptr = ptr_at_xy<uint16_t>(ctx, dx,dy);
@@ -3194,7 +3232,7 @@ HIGHP_STAGE(load_rgf16_dst, const SkRasterPipelineContexts::MemoryCtx* ctx) {
HIGHP_STAGE(gather_rgf16, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint32_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, r, g);
- auto px = gather(ptr, ix);
+ auto px = gather_unaligned(ptr, ix);
U16 R,G;
load2((const uint16_t*)&px, &R, &G);
@@ -3220,10 +3258,10 @@ HIGHP_STAGE(load_f32_dst, const SkRasterPipelineContexts::MemoryCtx* ctx) {
HIGHP_STAGE(gather_f32, const SkRasterPipelineContexts::GatherCtx* ctx) {
const float* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, r,g);
- r = gather(ptr, 4*ix + 0);
- g = gather(ptr, 4*ix + 1);
- b = gather(ptr, 4*ix + 2);
- a = gather(ptr, 4*ix + 3);
+ r = gather_unaligned(ptr, 4*ix + 0);
+ g = gather_unaligned(ptr, 4*ix + 1);
+ b = gather_unaligned(ptr, 4*ix + 2);
+ a = gather_unaligned(ptr, 4*ix + 3);
}
HIGHP_STAGE(store_f32, const SkRasterPipelineContexts::MemoryCtx* ctx) {
auto ptr = ptr_at_xy<float>(ctx, 4*dx,4*dy);
@@ -5009,7 +5047,7 @@ HIGHP_STAGE(bilerp_clamp_8888, const SkRasterPipelineContexts::GatherCtx* ctx) {
U32 ix = ix_and_ptr(&ptr, ctx, x,y);
F sr,sg,sb,sa;
- from_8888(gather(ptr, ix), &sr,&sg,&sb,&sa);
+ from_8888(gather_unaligned(ptr, ix), &sr,&sg,&sb,&sa);
// In bilinear interpolation, the 4 pixels at +/- 0.5 offsets from the sample pixel center
// are combined in direct proportion to their area overlapping that logical query pixel.
@@ -5061,7 +5099,7 @@ HIGHP_STAGE(bicubic_clamp_8888, const SkRasterPipelineContexts::GatherCtx* ctx)
U32 ix = ix_and_ptr(&ptr, ctx, sample_x, sample_y);
F sr,sg,sb,sa;
- from_8888(gather(ptr, ix), &sr,&sg,&sb,&sa);
+ from_8888(gather_unaligned(ptr, ix), &sr,&sg,&sb,&sa);
r = mad(scale, sr, r);
g = mad(scale, sg, g);
@@ -5959,7 +5997,6 @@ SI void store(T* ptr, V v) {
}
#endif
-
// ~~~~~~ 32-bit memory loads and stores ~~~~~~ //
SI void from_8888(U32 rgba, U16* r, U16* g, U16* b, U16* a) {

View File

@@ -1,179 +0,0 @@
From 68e53210b76cadb14e98aaea58e30388f94bc9a1 Mon Sep 17 00:00:00 2001
From: Kaylee Lubick <kjlubick@google.com>
Date: Mon, 21 Apr 2025 14:19:04 -0400
Subject: [PATCH] Avoid assumption of 32 bit aligned pixel data in RP's lowp
gather()
The attached bug has most of the context, but the problem boils down
to the compiler assuming that a uint32_t* was aligned to 32 bits
and generated instructions like:
vld1.32 {d16[0]}, [r4:32]
where the :32 means "aligned to 32 bits" [1]. Pixel data is usually
aligned to the so-called natural alignment (pointer size) because
we allocate it with `new` or `calloc`. However, if we were to call
drawRect and use a source starting at x = 1, this eventually leads
to SkBitmap::extractSubset creating a SkPixelRef that starts at
the original pixel* + 1 (which is now no longer evenly divisible
by 4).
Certain ARM devices were crashing on this generated assembly. Rather
than trying to write the assembly code by hand or use intrinsics,
we can tell GCC and Clang that the pointer might be unaligned and
then the generated instructions lack the :32 modifier (and make these
devices not crash anymore):
vld1.32 {d16[0]}, [r4]
This fix is in our low precision pipeline code but may also be needed
in our high precision code too (which uses similar code). I wanted
to be careful with this change because it's pretty critical to
performance, so I kept the aligned version for cases where we know
the data is aligned (e.g. reading factors and biases for our gradient
stages).
This solution was inspired by Open CV
https://github.com/opencv/opencv/issues/25265
[1] https://developer.arm.com/documentation/ddi0597/2025-03/SIMD-FP-Instructions/VLD1--multiple-single-elements---Load-multiple-single-1-element-structures-to-one--two--three--or-four-registers-
Change-Id: I2892740acbb9db7434aab897e11fa41c3548a196
Bug: b/409859319
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/981638
Commit-Queue: Kaylee Lubick <kjlubick@google.com>
Commit-Queue: Daniel Dilan <danieldilan@google.com>
Auto-Submit: Kaylee Lubick <kjlubick@google.com>
Reviewed-by: Daniel Dilan <danieldilan@google.com>
diff --git a/src/opts/SkRasterPipeline_opts.h b/src/opts/SkRasterPipeline_opts.h
index 9573b84baf..d14df3677c 100644
--- a/src/opts/SkRasterPipeline_opts.h
+++ b/src/opts/SkRasterPipeline_opts.h
@@ -5877,6 +5877,10 @@ SI void store(T* ptr, V v) {
return (U32)_mm512_i32gather_epi32((__m512i)ix, ptr, 4);
}
+ template <typename V, typename T>
+ SI V gather_unaligned(const T* ptr, U32 ix) {
+ return gather<V, T>(ptr, ix);
+ }
#elif defined(SKRP_CPU_HSW)
template <typename V, typename T>
SI V gather(const T* ptr, U32 ix) {
@@ -5903,6 +5907,11 @@ SI void store(T* ptr, V v) {
return join<U32>(_mm256_i32gather_epi32((const int*)ptr, lo, 4),
_mm256_i32gather_epi32((const int*)ptr, hi, 4));
}
+
+ template <typename V, typename T>
+ SI V gather_unaligned(const T* ptr, U32 ix) {
+ return gather<V, T>(ptr, ix);
+ }
#elif defined(SKRP_CPU_LASX)
template <typename V, typename T>
SI V gather(const T* ptr, U32 ix) {
@@ -5911,12 +5920,43 @@ SI void store(T* ptr, V v) {
ptr[ix[ 8]], ptr[ix[ 9]], ptr[ix[10]], ptr[ix[11]],
ptr[ix[12]], ptr[ix[13]], ptr[ix[14]], ptr[ix[15]], };
}
+
+ template <typename V, typename T>
+ SI V gather_unaligned(const T* ptr, U32 ix) {
+ return gather<V, T>(ptr, ix);
+ }
+#elif defined(SKRP_CPU_NEON)
+ template <typename V, typename T>
+ SI V gather(const T* ptr, U32 ix) {
+ // The compiler assumes ptr is aligned, which caused crashes on some
+ // arm32 chips because a register was marked as "aligned to 32 bits"
+ // incorrectly. https://crbug.com/skia/409859319
+ SkASSERTF(reinterpret_cast<uintptr_t>(ptr) % alignof(T) == 0,
+ "Should use gather_unaligned");
+ return V{ ptr[ix[ 0]], ptr[ix[ 1]], ptr[ix[ 2]], ptr[ix[ 3]],
+ ptr[ix[ 4]], ptr[ix[ 5]], ptr[ix[ 6]], ptr[ix[ 7]], };
+ }
+
+ template <typename V, typename T>
+ SI V gather_unaligned(const T* ptr, U32 ix) {
+ // This tells the compiler ptr might not be aligned appropriately, so
+ // it generates better assembly.
+ typedef T __attribute__ ((aligned (1))) unaligned_ptr;
+ const unaligned_ptr* uptr = static_cast<const unaligned_ptr*>(ptr);
+ return V{ uptr[ix[ 0]], uptr[ix[ 1]], uptr[ix[ 2]], uptr[ix[ 3]],
+ uptr[ix[ 4]], uptr[ix[ 5]], uptr[ix[ 6]], uptr[ix[ 7]], };
+ }
#else
template <typename V, typename T>
SI V gather(const T* ptr, U32 ix) {
return V{ ptr[ix[ 0]], ptr[ix[ 1]], ptr[ix[ 2]], ptr[ix[ 3]],
ptr[ix[ 4]], ptr[ix[ 5]], ptr[ix[ 6]], ptr[ix[ 7]], };
}
+
+ template <typename V, typename T>
+ SI V gather_unaligned(const T* ptr, U32 ix) {
+ return gather<V, T>(ptr, ix);
+ }
#endif
@@ -6049,7 +6089,7 @@ LOWP_STAGE_PP(store_8888, const SkRasterPipelineContexts::MemoryCtx* ctx) {
LOWP_STAGE_GP(gather_8888, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint32_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, x,y);
- from_8888(gather<U32>(ptr, ix), &r, &g, &b, &a);
+ from_8888(gather_unaligned<U32>(ptr, ix), &r, &g, &b, &a);
}
// ~~~~~~ 16-bit memory loads and stores ~~~~~~ //
@@ -6099,7 +6139,7 @@ LOWP_STAGE_PP(store_565, const SkRasterPipelineContexts::MemoryCtx* ctx) {
LOWP_STAGE_GP(gather_565, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint16_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, x,y);
- from_565(gather<U16>(ptr, ix), &r, &g, &b);
+ from_565(gather_unaligned<U16>(ptr, ix), &r, &g, &b);
a = U16_255;
}
@@ -6149,7 +6189,7 @@ LOWP_STAGE_PP(store_4444, const SkRasterPipelineContexts::MemoryCtx* ctx) {
LOWP_STAGE_GP(gather_4444, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint16_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, x,y);
- from_4444(gather<U16>(ptr, ix), &r,&g,&b,&a);
+ from_4444(gather_unaligned<U16>(ptr, ix), &r,&g,&b,&a);
}
SI void from_88(U16 rg, U16* r, U16* g) {
@@ -6198,7 +6238,7 @@ LOWP_STAGE_PP(store_rg88, const SkRasterPipelineContexts::MemoryCtx* ctx) {
LOWP_STAGE_GP(gather_rg88, const SkRasterPipelineContexts::GatherCtx* ctx) {
const uint16_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, x, y);
- from_88(gather<U16>(ptr, ix), &r, &g);
+ from_88(gather_unaligned<U16>(ptr, ix), &r, &g);
b = U16_0;
a = U16_255;
}
@@ -6625,11 +6665,11 @@ LOWP_STAGE_GP(bilerp_clamp_8888, const SkRasterPipelineContexts::GatherCtx* ctx)
const uint32_t* ptr;
U32 ix = ix_and_ptr(&ptr, ctx, sx, sy);
U16 leftR, leftG, leftB, leftA;
- from_8888(gather<U32>(ptr, ix), &leftR,&leftG,&leftB,&leftA);
+ from_8888(gather_unaligned<U32>(ptr, ix), &leftR,&leftG,&leftB,&leftA);
ix = ix_and_ptr(&ptr, ctx, sx+1, sy);
U16 rightR, rightG, rightB, rightA;
- from_8888(gather<U32>(ptr, ix), &rightR,&rightG,&rightB,&rightA);
+ from_8888(gather_unaligned<U32>(ptr, ix), &rightR,&rightG,&rightB,&rightA);
U16 topR = lerpX(leftR, rightR),
topG = lerpX(leftG, rightG),
@@ -6637,10 +6677,10 @@ LOWP_STAGE_GP(bilerp_clamp_8888, const SkRasterPipelineContexts::GatherCtx* ctx)
topA = lerpX(leftA, rightA);
ix = ix_and_ptr(&ptr, ctx, sx, sy+1);
- from_8888(gather<U32>(ptr, ix), &leftR,&leftG,&leftB,&leftA);
+ from_8888(gather_unaligned<U32>(ptr, ix), &leftR,&leftG,&leftB,&leftA);
ix = ix_and_ptr(&ptr, ctx, sx+1, sy+1);
- from_8888(gather<U32>(ptr, ix), &rightR,&rightG,&rightB,&rightA);
+ from_8888(gather_unaligned<U32>(ptr, ix), &rightR,&rightG,&rightB,&rightA);
U16 bottomR = lerpX(leftR, rightR),
bottomG = lerpX(leftG, rightG),