[webkit-changes] [WebKit/WebKit] 6f2ac9: ImageData using storageFormat
Gerald Squelart
noreply at github.com
Tue Dec 10 04:33:51 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 6f2ac99d8410ead797a23036ba1b442669f61fa7
https://github.com/WebKit/WebKit/commit/6f2ac99d8410ead797a23036ba1b442669f61fa7
Author: Gerald Squelart <g_squelart at apple.com>
Date: 2024-12-10 (Tue, 10 Dec 2024)
Changed paths:
M LayoutTests/fast/canvas/imagedata-storageformat-enabled-expected.txt
M LayoutTests/fast/canvas/imagedata-storageformat-enabled.html
M Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations
M Source/WebCore/bindings/js/JSImageDataCustom.cpp
M Source/WebCore/bindings/js/SerializedScriptValue.cpp
M Source/WebCore/html/ImageData.cpp
M Source/WebCore/html/ImageData.h
M Source/WebCore/html/ImageData.idl
M Source/WebCore/html/ImageDataArray.cpp
M Source/WebCore/html/ImageDataArray.h
M Source/WebCore/html/ImageDataStorageFormat.h
M Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp
M Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp
M Source/WebCore/inspector/InspectorCanvas.cpp
Log Message:
-----------
ImageData using storageFormat
https://bugs.webkit.org/show_bug.cgi?id=284004
rdar://problem/140877760
Reviewed by Said Abou-Hallawa.
ImageData now supports:
- The IDL property `storageFormat` of type `ImageDataStorageFormat`, which
reflects the ImageDataSettings.storageFormat value given during construction.
- The IDL property `data` can now be `Uint8ClampedArray` or `Float16Array`,
depending on the storageFormat.
The main difference for now, is that
`context.createImageData(w, h, { storageFormat: "float16" })`
should correctly output an ImageData with data of type Float16Array.
Otherwise most uses of ImageData, like in CanvasRenderingContext2DBase, enforce
the use of Uint8ClampedArray, so there shouldn't be any visible changes in most
cases, including when requesting
`context.getImageData(w, h, { storageFormat: "float16" })`
(to be implemented in future PRs).
* LayoutTests/fast/canvas/imagedata-storageformat-enabled-expected.txt:
* LayoutTests/fast/canvas/imagedata-storageformat-enabled.html:
* Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:
* Source/WebCore/bindings/js/JSImageDataCustom.cpp:
(WebCore::toJSNewlyCreated):
* Source/WebCore/bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::CloneDeserializer::readTerminal):
* Source/WebCore/html/ImageData.cpp:
(WebCore::computeDataSize):
(WebCore::computeStorageFormat):
(WebCore::ImageData::create):
(WebCore::ImageData::pixelBuffer const):
(WebCore::ImageData::createUninitialized): Deleted.
(WebCore::ImageData::clone const): Deleted.
* Source/WebCore/html/ImageData.h:
(WebCore::ImageData::create):
(WebCore::ImageData::data const):
(WebCore::ImageData::storageFormat const):
* Source/WebCore/html/ImageData.idl:
* Source/WebCore/html/ImageDataArray.cpp:
(isType):
(WebCore::visitArrayBufferView):
(WebCore::ImageDataArray::ImageDataArray):
(WebCore::fillTypedArray):
(WebCore::ImageDataArray::tryCreate):
(WebCore::ImageDataArray::isSupported):
(WebCore::ImageDataArray::storageFormat const):
(WebCore::convertToTypedArray):
(WebCore::ImageDataArray::asUint8ClampedArray const):
(WebCore::ImageDataArray::asFloat16Array const):
(WebCore::ImageDataArray::length const):
(WebCore::ImageDataArray::copyToJSONArray const):
(WebCore::ImageDataArray::operator Variant const):
* Source/WebCore/html/ImageDataArray.h:
(WebCore::ImageDataArray::isSupported):
(WebCore::ImageDataArray::tryCreate):
(WebCore::ImageDataArray::arrayBufferView const):
(WebCore::ImageDataArray::protectedArrayBufferView const):
(WebCore::ImageDataArray::byteLength const):
(WebCore::ImageDataArray::isDetached const):
(WebCore::ImageDataArray::span const):
(WebCore::ImageDataArray::ImageDataArray): Deleted.
(WebCore::ImageDataArray::length const): Deleted.
(WebCore::ImageDataArray::get const): Deleted.
(WebCore::ImageDataArray::data const): Deleted.
* Source/WebCore/html/ImageDataStorageFormat.h:
(WebCore::toPixelFormat):
(WebCore::toImageDataStorageFormat):
* Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::createImageData const):
(WebCore::CanvasRenderingContext2DBase::cacheImageDataIfPossible):
(WebCore::CanvasRenderingContext2DBase::makeImageDataIfContentsCached const):
(WebCore::CanvasRenderingContext2DBase::getImageData const):
(WebCore::initializeEmptyImageData): Deleted.
* Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::texImageSource):
* Source/WebCore/inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::buildArrayForImageData):
Canonical link: https://commits.webkit.org/287598@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list