[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