Timeline
Mar 12, 2022:
- 7:34 AM Changeset in webkit [291217] by
-
- 4 edits in trunk/Source/JavaScriptCore
[JSC] Use addressTempRegister in loadValue(void *) on 32 bits
https://bugs.webkit.org/show_bug.cgi?id=237773
Reviewed by Žan Doberšek.
Instead of using one of the destination registers as an address
temporary, use addressTempRegister instead. This allows reusing
the value in addressTempRegister (with an appropriate offset) if
possible, which results in a >25% size reduction for DFGOSRExit
(JS2) on ARMv7 (though not a significant size reduction overall).
Technically, this change could be killing some address reuse that
was previously possible because loadValue was not clobbering
addressTempRegister but, if so, this seems to be balanced out for
JS2.
- assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::BoundsNonDoubleWordOffset::within):
(JSC::MacroAssemblerARMv7::BoundsDoubleWordOffset::within):
(JSC::MacroAssemblerARMv7::loadPair32):
(JSC::MacroAssemblerARMv7::setupArmAddress):
(JSC::MacroAssemblerARMv7::absoluteAddressWithinShortOffset):
- assembler/MacroAssemblerMIPS.h:
(JSC::MacroAssemblerMIPS::loadPair32):
- jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::loadValue):
Mar 12, 2022:
- 11:23 PM Changeset in webkit [291216] by
-
- 8 edits7 adds in trunk
Safari produces scrambled output for some webm videos with vp8 codec.
https://bugs.webkit.org/show_bug.cgi?id=236754
Source/ThirdParty/libwebrtc:
rdar://80869041
Reviewed by Eric Carlson.
- Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:
(webrtc::WebKitDecoderReceiver::decoderFailed): Tell CoreMedia if a frame
was silently dropped by the decoder.
Source/WebCore:
rdar://80869041
Reviewed by Eric Carlson.
The MediaFormatReader plugin and the MSE SourceBufferPrivate are using
a SampleMap to store all the media samples timing information: one sorted
by DTS order and the other in PTS order.
Those SampleMap use the sample's presentation time as unique key.
The VP8 codec can define hidden samples that are to be fed to the decoder
but will not decode into an actual image. Those samples are typically
packed together in the webm container in two or more consecutive blocks
with the same presentation time (similar behaviour can also be found in
webm where multiple frames may be stored with the same presentation
time).
When stored in the SampleMap, only the latest sample added would be kept
after overwriting the previous one with the same time.
To get around this issue, we pack all samples with the same presentation
time in a single MediaSamplesBlock so that they can be stored together in
the map without any losses.
Upon decoding, all those sub-samples will be retrieved and fed to the
decoder.
The CoreMedia MediaFormatReader backend however has a bug where it will
enter in an infinite if we return successive frames with the same
timestamp which will cause memory exhaustion and a crash.
To get around this, we make the grouped samples appear as discrete,
making each hidden sample have a duration of 1us followed by the
visible frames (which will see its duration shorten by 1us).
Tests: media/media-source/media-source-vp8-hiddenframes.html
media/media-vp8-hiddenframes.html
New tests had to be disabled due to bug 236755. We currently have no
way to guarantee which frame is currently displayed after either a seek
operation or reaching the end of playback.
- platform/MediaSample.h:
(WebCore::MediaSamplesBlock::append):
(WebCore::MediaSamplesBlock::clear):
- platform/graphics/cocoa/SourceBufferParserWebM.cpp:
(WebCore::WebMParser::parse):
(WebCore::WebMParser::OnFrame):
(WebCore::WebMParser::flushPendingVideoSamples):
(WebCore::WebMParser::VideoTrackData::resetCompletedFramesState):
(WebCore::WebMParser::VideoTrackData::consumeFrameData):
(WebCore::WebMParser::VideoTrackData::processPendingMediaSamples):
(WebCore::WebMParser::VideoTrackData::flushPendingSamples):
(WebCore::WebMParser::AudioTrackData::consumeFrameData):
- platform/graphics/cocoa/SourceBufferParserWebM.h:
(WebCore::WebMParser::TrackData::consumeFrameData):
(WebCore::WebMParser::TrackData::resetCompletedFramesState):
(WebCore::WebMParser::TrackData::drainPendingSamples):
LayoutTests:
Reviewed by Eric Carlson.
VP8 files were generated such that alternative reference frames were used:
$ fmpeg -i dragon.webm -c:v libvpx -vf scale=320:-1 -auto-alt-ref 1 -arnr-maxframes 5 -arnr-strength 3 -pass 1 test-vp8-hiddenframes.webm
$ fmpeg -i dragon.webm -c:v libvpx -vf scale=320:-1 -auto-alt-ref 1 -arnr-maxframes 5 -arnr-strength 3 -pass 2 test-vp8-hiddenframes.webm
The command used to extract the last frame in png format was:
$ ffmpeg -sseof -3 -i test-vp8-hiddenframes.webm -pred mixed -pix_fmt rgb24 -sws_flags +accurate_rnd+full_chroma_int -update 1 -q:v 1 test-vp8-hiddenframes.png
- TestExpectations:
- media/content/test-vp8-hiddenframes.png: Added.
- media/content/test-vp8-hiddenframes.webm: Added.
- media/media-source/media-source-vp8-hiddenframes-expected.html: Added.
- media/media-source/media-source-vp8-hiddenframes.html: Added.
- media/media-vp8-hiddenframes-expected.html: Added.
- media/media-vp8-hiddenframes.html: Added.
- media/utilities.js: Added.
(once):
(fetchWithXHR):
(loadSegment):
- 8:55 PM Changeset in webkit [291215] by
-
- 5 edits in trunk/Source/WebCore
[IFC][Integration] Add InlineIterator::Line::selectionPhysicalRect
https://bugs.webkit.org/show_bug.cgi?id=237796
Reviewed by Antti Koivisto.
Introduce selectionPhysicalRect() so that the clients don't need to convert/flip the logical coords and
also rename selectionRect() to selectionLogicalRect() to clear up any ambiguity.
- editing/VisiblePosition.cpp:
(WebCore::VisiblePosition::absoluteSelectionBoundsForLine const):
- layout/integration/InlineIteratorLine.h:
(WebCore::InlineIterator::Line::selectionLogicalRect const):
(WebCore::InlineIterator::Line::selectionPhysicalRect const):
(WebCore::InlineIterator::Line::selectionRect const): Deleted.
- rendering/CaretRectComputation.cpp:
(WebCore::computeCaretRectForLinePosition):
- 8:54 PM Changeset in webkit [291214] by
-
- 3 edits in trunk/Source/WebKit
In RemoteLayerBackingStore, group makeFrontBufferNonVolatile() and swapToValidFrontBuffer() into a single function
https://bugs.webkit.org/show_bug.cgi?id=237806
Reviewed by Tim Horton.
As a step towards reducing the number of sync IPC calls when displaying layers, refactor
code in RemoteLayerBackingStore so that we can do the makeFrontBufferNonVolatile()
and swapToValidFrontBuffer() in a single function. Its return value indicates whether
we need to do any display, or a full display.
- Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
- Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::operator<<):
(WebKit::RemoteLayerBackingStore::prepareToDisplay):
(WebKit::RemoteLayerBackingStore::prepareBuffers):
(WebKit::RemoteLayerBackingStore::paintContents): Fix an assertion that fired for WebGL.
(WebKit::RemoteLayerBackingStore::swapBuffers): Deleted.
- 7:01 PM Changeset in webkit [291213] by
-
- 3 edits in trunk/Source/WTF
Fail the build if Internal or Experimental web preferences are missing human readable names
https://bugs.webkit.org/show_bug.cgi?id=237813
Reviewed by Alex Christensen.
- Scripts/GeneratePreferences.rb:
Ensure that all preferences that expose human readable strings to the
API client actually have such a name.
- Scripts/Preferences/WebPreferencesInternal.yaml:
Add one missing human readable preference name.
- 3:29 PM Changeset in webkit [291212] by
-
- 2 edits in trunk/Source/WebKit
Unreviewed, reverting r291209.
https://bugs.webkit.org/show_bug.cgi?id=237811
Re-land 290754 due to mis-blaming
Reverted changeset:
"Unreviewed, reverting r290754."
https://bugs.webkit.org/show_bug.cgi?id=237808
https://commits.webkit.org/r291209
- 3:15 PM Changeset in webkit [291211] by
-
- 7 edits in trunk/Source/WebCore
[IFC][Integration] Replace generic InlineIterator::Line::legacyRootInlineBox() with 2 dedicated functions
https://bugs.webkit.org/show_bug.cgi?id=237807
Reviewed by Antti Koivisto.
- layout/integration/InlineIteratorLine.h:
(WebCore::InlineIterator::Line::containingFragment const):
(WebCore::InlineIterator::Line::isFirstAfterPageBreak const):
(WebCore::InlineIterator::Line::legacyRootInlineBox const): Deleted.
- layout/integration/InlineIteratorLineLegacyPath.h:
(WebCore::InlineIterator::LineIteratorLegacyPath::containingFragment const):
(WebCore::InlineIterator::LineIteratorLegacyPath::isFirstAfterPageBreak const):
(WebCore::InlineIterator::LineIteratorLegacyPath::legacyRootInlineBox const): Deleted.
- layout/integration/InlineIteratorLineModernPath.h:
(WebCore::InlineIterator::LineIteratorModernPath::containingFragment const):
(WebCore::InlineIterator::LineIteratorModernPath::isFirstAfterPageBreak const):
(WebCore::InlineIterator::LineIteratorModernPath::legacyRootInlineBox const): Deleted.
- rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):
- rendering/RenderLineBreak.cpp:
(WebCore::RenderLineBreak::collectSelectionGeometries):
- 3:12 PM Changeset in webkit [291210] by
-
- 44 edits in trunk
Adopt FALLBACK_PLATFORM_NAME in place of FALLBACK_PLATFORM
https://bugs.webkit.org/show_bug.cgi?id=237809
Reviewed by Per Arne Vollan.
PerformanceTests:
- MediaTime/Configurations/SDKVariant.xcconfig:
Source/bmalloc:
- Configurations/SDKVariant.xcconfig:
Source/JavaScriptCore:
- Configurations/SDKVariant.xcconfig:
Source/ThirdParty:
- gtest/xcode/Config/SDKVariant.xcconfig:
Source/ThirdParty/ANGLE:
- Configurations/SDKVariant.xcconfig:
Source/ThirdParty/libwebrtc:
- Configurations/SDKVariant.xcconfig:
Source/WebCore:
- Configurations/SDKVariant.xcconfig:
Source/WebCore/PAL:
- Configurations/SDKVariant.xcconfig:
Source/WebGPU:
- Configurations/SDKVariant.xcconfig:
Source/WebInspectorUI:
- Configurations/SDKVariant.xcconfig:
Source/WebKit:
- Configurations/SDKVariant.xcconfig:
Source/WebKitLegacy/mac:
- Configurations/SDKVariant.xcconfig:
Source/WTF:
- Configurations/SDKVariant.xcconfig:
Tools:
- ContentExtensionTester/Configurations/SDKVariant.xcconfig:
- DumpRenderTree/mac/Configurations/SDKVariant.xcconfig:
- ImageDiff/cg/Configurations/SDKVariant.xcconfig:
- MiniBrowser/Configurations/SDKVariant.xcconfig:
- MobileMiniBrowser/Configurations/SDKVariant.xcconfig:
- TestWebKitAPI/Configurations/SDKVariant.xcconfig:
- WebEditingTester/Configurations/SDKVariant.xcconfig:
- WebKitTestRunner/Configurations/SDKVariant.xcconfig:
- lldb/lldbWebKitTester/Configurations/SDKVariant.xcconfig:
- 12:53 PM Changeset in webkit [291209] by
-
- 2 edits in trunk/Source/WebKit
Unreviewed, reverting r290754.
https://bugs.webkit.org/show_bug.cgi?id=237808
Introduced launch regression
Reverted changeset:
"[iOS] Seatbelt sandbox profile entitlement is deprecated"
https://bugs.webkit.org/show_bug.cgi?id=237374
https://commits.webkit.org/r290754
- 11:10 AM Changeset in webkit [291208] by
-
- 5 edits in trunk/Source/WebCore
[IFC][Integration] previousLinePosition/nextLinePosition should use Line::lineBoxHeight
https://bugs.webkit.org/show_bug.cgi?id=237788
Reviewed by Antti Koivisto.
Line::lineBoxHeight() should be sufficient for checking if the line is empty for VisualPosition.
- editing/VisibleUnits.cpp:
(WebCore::previousLinePosition):
(WebCore::nextLinePosition):
- layout/integration/InlineIteratorLine.h:
(WebCore::InlineIterator::Line::lineBoxHeight const):
(WebCore::InlineIterator::Line::logicalHeight const): Deleted.
- layout/integration/InlineIteratorLineLegacyPath.h:
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalRight const):
(WebCore::InlineIterator::LineIteratorLegacyPath::logicalHeight const): Deleted.
- layout/integration/InlineIteratorLineModernPath.h:
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalRight const):
(WebCore::InlineIterator::LineIteratorModernPath::logicalHeight const): Deleted.
- 6:30 AM Changeset in webkit [291207] by
-
- 5 edits in trunk/Source/WebCore
[IFC][Integration] RenderBlockFlow::findClosestTextAtAbsolutePoint should use root inline box iterator
https://bugs.webkit.org/show_bug.cgi?id=237786
Reviewed by Antti Koivisto.
Let's remove root inline box APIs from the line iterator interface.
- rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::findClosestTextAtAbsolutePoint): Replace line iterator with root inline box iterator
and check whether the local point is in between these root inline boxes.