forked from chromium/chromium-dev
Compare commits
50 Commits
Author | SHA256 | Date | |
---|---|---|---|
2e368bba05 | |||
fc36f05e41 | |||
c8be6bd8a1 | |||
0d531519fc | |||
cbdee2a757 | |||
d78c2b6c43 | |||
|
439f881815 | ||
8cd9fd263b | |||
1dff1cf6f4 | |||
|
e78ce84f72 | ||
|
eb63f13d34 | ||
|
61fd2719f4 | ||
|
e8074cc29d | ||
|
285a306de6 | ||
|
a178fd54ef | ||
|
d19d1a5437 | ||
|
2928f3d41f | ||
|
ccc57b3b14 | ||
|
5d6dbecf26 | ||
|
a8b26b506e | ||
|
06eba2dd9f | ||
|
980b1c06b9 | ||
|
2046524a14 | ||
|
c670c3c520 | ||
|
3685cecc90 | ||
|
322f22ef71 | ||
|
dff44b3193 | ||
|
f157fd81a6 | ||
|
25afd093c5 | ||
|
d3f54d469d | ||
|
350bad913a | ||
92ec70de8e | |||
7b4d623013 | |||
|
08eebc09be | ||
|
6f94dc21c9 | ||
|
62e4c5a1b9 | ||
|
8846bc8cbd | ||
|
5037b34613 | ||
|
86ddcede7e | ||
|
03c2a2ff48 | ||
|
b77cebef00 | ||
|
8d3c4d748c | ||
|
b3f8ceba7b | ||
|
b4a29328f4 | ||
|
51c9423f65 | ||
|
9a121476a6 | ||
|
01a50f7393 | ||
|
53dac2e157 | ||
|
0834a2db9a | ||
|
221d2f56e9 |
2
.gitattributes
vendored
2
.gitattributes
vendored
@@ -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
|
||||||
|
@@ -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
|
|
@@ -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}/"
|
||||||
|
@@ -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",
|
||||||
|
@@ -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_));
|
|
||||||
|
|
@@ -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" ]
|
|
||||||
|
|
@@ -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.
|
||||||
|
@@ -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_;
|
|
@@ -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.
|
||||||
|
@@ -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());
|
|
@@ -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:
|
|
11
chromium-139-deterministic.patch
Normal file
11
chromium-139-deterministic.patch
Normal 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.
|
11
chromium-139-pdfium-openjpeg-CVE-2025-54874.patch
Normal file
11
chromium-139-pdfium-openjpeg-CVE-2025-54874.patch
Normal 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)
BIN
chromium-139.0.7219.3.tar.xz
(Stored with Git LFS)
Binary file not shown.
17
chromium-140-keep-__rust_no_alloc_shim_is_unstable.patch
Normal file
17
chromium-140-keep-__rust_no_alloc_shim_is_unstable.patch
Normal 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]
|
11
chromium-140-old-flac.patch
Normal file
11
chromium-140-old-flac.patch
Normal 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
BIN
chromium-141.0.7390.7-linux.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
@@ -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
|
|
@@ -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));
|
|
@@ -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));
|
|
@@ -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)
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 |
@@ -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
|
|
245
chromium.changes
245
chromium.changes
@@ -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
|
||||||
|
|
||||||
|
@@ -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}
|
||||||
|
@@ -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.";
|
|
@@ -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",
|
||||||
|
@@ -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) {
|
||||||
|
10638
ppc-debian-0003-third_party-ffmpeg-Add-ppc64-generated-config.patch
Normal file
10638
ppc-debian-0003-third_party-ffmpeg-Add-ppc64-generated-config.patch
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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",
|
||||||
|
@@ -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);
|
||||||
|
@@ -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 @@
|
||||||
|
@@ -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
@@ -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."}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
|
@@ -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" ||
|
||||||
|
@@ -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 = ""
|
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
@@ -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>
|
||||||
|
|
||||||
|
@@ -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);
|
|
||||||
}
|
|
@@ -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) {
|
|
@@ -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),
|
|
Reference in New Issue
Block a user