Title: [283829] branches/safari-612-branch
Revision
283829
Author
[email protected]
Date
2021-10-08 12:44:38 -0700 (Fri, 08 Oct 2021)

Log Message

Cherry-pick r282630. rdar://problem/83956741

    Support patterns with a wide gamut source painting into a display-p3 canvas
    https://bugs.webkit.org/show_bug.cgi?id=229023
    <rdar://problem/81828466>

    Reviewed by Sam Weinig.

    LayoutTests/imported/w3c:

    Add tests for wide gamut <img> and <canvas> sources for patterns.

    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html:
    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas-expected.txt: Added.
    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html: Added.
    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image-expected.txt: Added.
    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html: Added.
    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js:

    Source/WebKit:

    Patterns are sent to the GPU process using ShareableBitmaps created
    from ImageBuffers. Ensure we pass along the pattern source color space
    to ShareableBitmap::create.

    Tests: imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html
           imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html

    * GPUProcess/graphics/RemoteRenderingBackend.cpp:
    (WebKit::RemoteRenderingBackend::getShareableBitmapForImageBuffer):

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@282630 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Added Paths

Diff

Modified: branches/safari-612-branch/LayoutTests/TestExpectations (283828 => 283829)


--- branches/safari-612-branch/LayoutTests/TestExpectations	2021-10-08 19:44:31 UTC (rev 283828)
+++ branches/safari-612-branch/LayoutTests/TestExpectations	2021-10-08 19:44:38 UTC (rev 283829)
@@ -5117,6 +5117,8 @@
 
 # display-p3 canvas and ImageData are Cocoa only for now.
 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html [ Failure ]
+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html [ Failure ]
+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html [ Failure ]
 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html [ Failure ]
 imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.jpeg.p3.canvas.html [ Failure ]
 

Modified: branches/safari-612-branch/LayoutTests/imported/w3c/ChangeLog (283828 => 283829)


--- branches/safari-612-branch/LayoutTests/imported/w3c/ChangeLog	2021-10-08 19:44:31 UTC (rev 283828)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/ChangeLog	2021-10-08 19:44:38 UTC (rev 283829)
@@ -1,5 +1,58 @@
 2021-10-08  Russell Epstein  <[email protected]>
 
+        Cherry-pick r282630. rdar://problem/83956741
+
+    Support patterns with a wide gamut source painting into a display-p3 canvas
+    https://bugs.webkit.org/show_bug.cgi?id=229023
+    <rdar://problem/81828466>
+    
+    Reviewed by Sam Weinig.
+    
+    LayoutTests/imported/w3c:
+    
+    Add tests for wide gamut <img> and <canvas> sources for patterns.
+    
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html:
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas-expected.txt: Added.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html: Added.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image-expected.txt: Added.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html: Added.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js:
+    
+    Source/WebKit:
+    
+    Patterns are sent to the GPU process using ShareableBitmaps created
+    from ImageBuffers. Ensure we pass along the pattern source color space
+    to ShareableBitmap::create.
+    
+    Tests: imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html
+           imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html
+    
+    * GPUProcess/graphics/RemoteRenderingBackend.cpp:
+    (WebKit::RemoteRenderingBackend::getShareableBitmapForImageBuffer):
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@282630 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-09-16  Cameron McCormack  <[email protected]>
+
+            Support patterns with a wide gamut source painting into a display-p3 canvas
+            https://bugs.webkit.org/show_bug.cgi?id=229023
+            <rdar://problem/81828466>
+
+            Reviewed by Sam Weinig.
+
+            Add tests for wide gamut <img> and <canvas> sources for patterns.
+
+            * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html:
+            * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas-expected.txt: Added.
+            * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html: Added.
+            * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image-expected.txt: Added.
+            * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html: Added.
+            * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js:
+
+2021-10-08  Russell Epstein  <[email protected]>
+
         Cherry-pick r283099. rdar://problem/83957623
 
     Remove old test files from canvas WPTs that were moved

Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html (283828 => 283829)


--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html	2021-10-08 19:44:31 UTC (rev 283828)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html	2021-10-08 19:44:38 UTC (rev 283829)
@@ -6,7 +6,7 @@
 // Test that drawing images with different bit depths and color profiles into
 // sRGB and Display P3 canvases works, by reading pixels with getImageData()
 // as sRGB and Display P3 values.
-for (let [filename, expectedPixels] of Object.entries(tests)) {
+for (let [filename, expectedPixels] of Object.entries(imageTests)) {
     for (let contextColorSpace of ["srgb", "display-p3"]) {
         for (let imageDataColorSpace of ["srgb", "display-p3"]) {
             for (let scaleImage of [false, true]) {

Added: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas-expected.txt (0 => 283829)


--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas-expected.txt	                        (rev 0)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas-expected.txt	2021-10-08 19:44:38 UTC (rev 283829)
@@ -0,0 +1,10 @@
+
+PASS Source srgb, destination display-p3, color 255,0,0,255
+PASS Source srgb, destination display-p3, color 255,0,0,204
+PASS Source srgb, destination display-p3, color 187,0,0,255
+PASS Source srgb, destination display-p3, color 187,0,0,204
+PASS Source display-p3, destination srgb, color 255,0,0,255
+PASS Source display-p3, destination srgb, color 255,0,0,204
+PASS Source display-p3, destination srgb, color 187,0,0,255
+PASS Source display-p3, destination srgb, color 187,0,0,204
+

Added: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html (0 => 283829)


--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html	                        (rev 0)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html	2021-10-08 19:44:38 UTC (rev 283829)
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML>
+<script src=""
+<script src=""
+<script src=""
+<script>
+// Test that patterns created from canvas sources with different color spaces
+// can be drawn into sRGB and Display P3 canvases, by reading pixels with
+// getImageData() as sRGB and Display P3 values.
+function runTest(sourceColorSpace, destinationColorSpace, colors) {
+    for (let [sourceColorString, expectedColor] of Object.entries(colors)) {
+        test(function() {
+            let source = document.createElement("canvas");
+            source.width = 2;
+            source.height = 2;
+
+            let sourceContext = source.getContext("2d", { colorSpace: sourceColorSpace });
+
+            let sourceColor = sourceColorString.split(",").map(x => +x);
+
+            let sourceImageData = new ImageData(2, 2, { colorSpace: sourceColorSpace });
+            for (let i = 0; i < 2 * 2 * 4; i += 4) {
+                for (let c = 0; c < 4; ++c)
+                    sourceImageData.data[i + c] = sourceColor[c];
+            }
+            sourceContext.putImageData(sourceImageData, 0, 0);
+
+            let destination = document.createElement("canvas");
+            destination.width = 4;
+            destination.height = 4;
+
+            let destinationContext = destination.getContext("2d", { colorSpace: destinationColorSpace });
+            destinationContext.fillStyle = destinationContext.createPattern(source, "repeat");
+            destinationContext.fillRect(0, 0, 4, 4);
+
+            let destinationImageData = destinationContext.getImageData(2, 2, 1, 1);
+
+            assert_true(pixelsApproximatelyEqual(destinationImageData.data, expectedColor), `Actual pixel value ${[...destinationImageData.data]} is approximately equal to ${expectedColor}.`);
+        }, `Source ${sourceColorSpace}, destination ${destinationColorSpace}, color ${sourceColorString}`);
+    }
+}
+
+runTest("srgb", "display-p3", fromSRGBToDisplayP3);
+runTest("display-p3", "srgb", fromDisplayP3ToSRGB);
+</script>

Added: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image-expected.txt (0 => 283829)


--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image-expected.txt	                        (rev 0)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image-expected.txt	2021-10-08 19:44:38 UTC (rev 283829)
@@ -0,0 +1,106 @@
+
+PASS sRGB-FF0000FF.png, Context srgb, ImageData srgb
+PASS sRGB-FF0000FF.png, Context srgb, ImageData display-p3
+PASS sRGB-FF0000FF.png, Context display-p3, ImageData srgb
+PASS sRGB-FF0000FF.png, Context display-p3, ImageData display-p3
+PASS sRGB-FF0000CC.png, Context srgb, ImageData srgb
+PASS sRGB-FF0000CC.png, Context srgb, ImageData display-p3
+PASS sRGB-FF0000CC.png, Context display-p3, ImageData srgb
+PASS sRGB-FF0000CC.png, Context display-p3, ImageData display-p3
+PASS sRGB-BB0000FF.png, Context srgb, ImageData srgb
+PASS sRGB-BB0000FF.png, Context srgb, ImageData display-p3
+PASS sRGB-BB0000FF.png, Context display-p3, ImageData srgb
+PASS sRGB-BB0000FF.png, Context display-p3, ImageData display-p3
+PASS sRGB-BB0000CC.png, Context srgb, ImageData srgb
+PASS sRGB-BB0000CC.png, Context srgb, ImageData display-p3
+PASS sRGB-BB0000CC.png, Context display-p3, ImageData srgb
+PASS sRGB-BB0000CC.png, Context display-p3, ImageData display-p3
+PASS Display-P3-FF0000FF.png, Context srgb, ImageData srgb
+PASS Display-P3-FF0000FF.png, Context srgb, ImageData display-p3
+PASS Display-P3-FF0000FF.png, Context display-p3, ImageData srgb
+PASS Display-P3-FF0000FF.png, Context display-p3, ImageData display-p3
+PASS Display-P3-FF0000CC.png, Context srgb, ImageData srgb
+PASS Display-P3-FF0000CC.png, Context srgb, ImageData display-p3
+PASS Display-P3-FF0000CC.png, Context display-p3, ImageData srgb
+PASS Display-P3-FF0000CC.png, Context display-p3, ImageData display-p3
+PASS Display-P3-BB0000FF.png, Context srgb, ImageData srgb
+PASS Display-P3-BB0000FF.png, Context srgb, ImageData display-p3
+PASS Display-P3-BB0000FF.png, Context display-p3, ImageData srgb
+PASS Display-P3-BB0000FF.png, Context display-p3, ImageData display-p3
+PASS Display-P3-BB0000CC.png, Context srgb, ImageData srgb
+PASS Display-P3-BB0000CC.png, Context srgb, ImageData display-p3
+PASS Display-P3-BB0000CC.png, Context display-p3, ImageData srgb
+PASS Display-P3-BB0000CC.png, Context display-p3, ImageData display-p3
+PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData srgb
+PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData display-p3
+PASS Adobe-RGB-FF0000FF.png, Context display-p3, ImageData srgb
+PASS Adobe-RGB-FF0000FF.png, Context display-p3, ImageData display-p3
+PASS Adobe-RGB-FF0000CC.png, Context srgb, ImageData srgb
+PASS Adobe-RGB-FF0000CC.png, Context srgb, ImageData display-p3
+PASS Adobe-RGB-FF0000CC.png, Context display-p3, ImageData srgb
+PASS Adobe-RGB-FF0000CC.png, Context display-p3, ImageData display-p3
+PASS Adobe-RGB-BB0000FF.png, Context srgb, ImageData srgb
+PASS Adobe-RGB-BB0000FF.png, Context srgb, ImageData display-p3
+PASS Adobe-RGB-BB0000FF.png, Context display-p3, ImageData srgb
+PASS Adobe-RGB-BB0000FF.png, Context display-p3, ImageData display-p3
+PASS Adobe-RGB-BB0000CC.png, Context srgb, ImageData srgb
+PASS Adobe-RGB-BB0000CC.png, Context srgb, ImageData display-p3
+PASS Adobe-RGB-BB0000CC.png, Context display-p3, ImageData srgb
+PASS Adobe-RGB-BB0000CC.png, Context display-p3, ImageData display-p3
+PASS Generic-CMYK-FF000000.jpg, Context srgb, ImageData srgb
+PASS Generic-CMYK-FF000000.jpg, Context srgb, ImageData display-p3
+PASS Generic-CMYK-FF000000.jpg, Context display-p3, ImageData srgb
+PASS Generic-CMYK-FF000000.jpg, Context display-p3, ImageData display-p3
+PASS Generic-CMYK-BE000000.jpg, Context srgb, ImageData srgb
+PASS Generic-CMYK-BE000000.jpg, Context srgb, ImageData display-p3
+PASS Generic-CMYK-BE000000.jpg, Context display-p3, ImageData srgb
+PASS Generic-CMYK-BE000000.jpg, Context display-p3, ImageData display-p3
+PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb
+PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3
+PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb
+PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3
+PASS sRGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb
+PASS sRGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3
+PASS sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb
+PASS sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3
+PASS sRGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb
+PASS sRGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3
+PASS sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb
+PASS sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3
+PASS sRGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb
+PASS sRGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3
+PASS sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb
+PASS sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3
+PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData srgb
+PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData display-p3
+PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData srgb
+PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3
+PASS Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData srgb
+PASS Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData display-p3
+PASS Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData srgb
+PASS Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3
+PASS Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData srgb
+PASS Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData display-p3
+PASS Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData srgb
+PASS Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3
+PASS Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData srgb
+PASS Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData display-p3
+PASS Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData srgb
+PASS Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3
+PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb
+PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3
+PASS Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb
+PASS Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3
+PASS Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb
+PASS Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3
+PASS Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb
+PASS Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3
+PASS Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb
+PASS Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3
+PASS Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb
+PASS Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3
+PASS Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb
+PASS Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3
+PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb
+PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3
+

Added: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html (0 => 283829)


--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html	                        (rev 0)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html	2021-10-08 19:44:38 UTC (rev 283829)
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML>
+<script src=""
+<script src=""
+<script src=""
+<script>
+// Test that patterns created from images with different bit depths and color
+// profiles into can be drawn into sRGB and Display P3 canvases, by reading
+// pixels with getImageData() as sRGB and Display P3 values.
+for (let [filename, expectedPixels] of Object.entries(imageTests)) {
+    for (let contextColorSpace of ["srgb", "display-p3"]) {
+        for (let imageDataColorSpace of ["srgb", "display-p3"]) {
+            async_test(function(t) {
+                let image = new Image();
+                image._onload_ = t.step_func_done(function() {
+
+                    let canvas = document.createElement("canvas");
+                    canvas.width = 4;
+                    canvas.height = 4;
+
+                    let ctx = canvas.getContext("2d", { colorSpace: contextColorSpace });
+                    ctx.fillStyle = ctx.createPattern(image, "repeat");
+                    ctx.fillRect(0, 0, 4, 4);
+
+                    let imageData = ctx.getImageData(2, 2, 1, 1, { colorSpace: imageDataColorSpace });
+
+                    let expected = expectedPixels[`${contextColorSpace} ${imageDataColorSpace}`];
+                    assert_true(pixelsApproximatelyEqual(imageData.data, expected), `Actual pixel value ${[...imageData.data]} is approximately equal to ${expected}.`);
+
+                    t.done();
+
+                });
+                image.src = ""
+            }, `${filename}, Context ${contextColorSpace}, ImageData ${imageDataColorSpace}`);
+        }
+    }
+}
+</script>

Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js (283828 => 283829)


--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js	2021-10-08 19:44:31 UTC (rev 283828)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js	2021-10-08 19:44:38 UTC (rev 283829)
@@ -8,7 +8,7 @@
 
 // Top level key is the image filename. Second level key is the pair of
 // CanvasRenderingContext2DSettings.colorSpace and ImageDataSettings.colorSpace.
-const tests = {
+const imageTests = {
     // 8 bit source images
 
     "sRGB-FF0000FF.png": {
@@ -177,6 +177,20 @@
     },
 };
 
+const fromSRGBToDisplayP3 = {
+    "255,0,0,255": [234, 51, 35, 255],
+    "255,0,0,204": [234, 51, 35, 204],
+    "187,0,0,255": [171, 35, 23, 255],
+    "187,0,0,204": [171, 35, 23, 204],
+};
+
+const fromDisplayP3ToSRGB = {
+    "255,0,0,255": [255, 0, 0, 255],
+    "255,0,0,204": [255, 0, 0, 204],
+    "187,0,0,255": [205, 0, 0, 255],
+    "187,0,0,204": [205, 0, 0, 204],
+};
+
 function pixelsApproximatelyEqual(p1, p2) {
     for (let i = 0; i < 4; ++i) {
         if (Math.abs(p1[i] - p2[i]) > 2)

Modified: branches/safari-612-branch/LayoutTests/platform/ios/TestExpectations (283828 => 283829)


--- branches/safari-612-branch/LayoutTests/platform/ios/TestExpectations	2021-10-08 19:44:31 UTC (rev 283828)
+++ branches/safari-612-branch/LayoutTests/platform/ios/TestExpectations	2021-10-08 19:44:38 UTC (rev 283829)
@@ -3474,5 +3474,7 @@
 
 # display-p3 canvas and ImageData are Cocoa only for now.
 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html [ Pass ]
+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html [ Pass ]
+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html [ Pass ]
 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html [ Pass ]
 imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.jpeg.p3.canvas.html [ Pass ]

Modified: branches/safari-612-branch/LayoutTests/platform/ios-14/TestExpectations (283828 => 283829)


--- branches/safari-612-branch/LayoutTests/platform/ios-14/TestExpectations	2021-10-08 19:44:31 UTC (rev 283828)
+++ branches/safari-612-branch/LayoutTests/platform/ios-14/TestExpectations	2021-10-08 19:44:38 UTC (rev 283829)
@@ -92,6 +92,8 @@
 
 # display-p3 canvas and ImageData are iOS 15+.
 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html [ Failure ]
+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html [ Failure ]
+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html [ Failure ]
 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html [ Failure ]
 imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.jpeg.p3.canvas.html [ Failure ]
 

Modified: branches/safari-612-branch/LayoutTests/platform/mac/TestExpectations (283828 => 283829)


--- branches/safari-612-branch/LayoutTests/platform/mac/TestExpectations	2021-10-08 19:44:31 UTC (rev 283828)
+++ branches/safari-612-branch/LayoutTests/platform/mac/TestExpectations	2021-10-08 19:44:38 UTC (rev 283829)
@@ -2323,5 +2323,7 @@
 
 # display-p3 canvas and ImageData are Cocoa only for now.
 [ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html [ Pass ]
+[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html [ Pass ]
+[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html [ Pass ]
 [ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html [ Pass ]
 [ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.jpeg.p3.canvas.html [ Pass ]

Modified: branches/safari-612-branch/Source/WebKit/ChangeLog (283828 => 283829)


--- branches/safari-612-branch/Source/WebKit/ChangeLog	2021-10-08 19:44:31 UTC (rev 283828)
+++ branches/safari-612-branch/Source/WebKit/ChangeLog	2021-10-08 19:44:38 UTC (rev 283829)
@@ -1,5 +1,59 @@
 2021-10-08  Russell Epstein  <[email protected]>
 
+        Cherry-pick r282630. rdar://problem/83956741
+
+    Support patterns with a wide gamut source painting into a display-p3 canvas
+    https://bugs.webkit.org/show_bug.cgi?id=229023
+    <rdar://problem/81828466>
+    
+    Reviewed by Sam Weinig.
+    
+    LayoutTests/imported/w3c:
+    
+    Add tests for wide gamut <img> and <canvas> sources for patterns.
+    
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html:
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas-expected.txt: Added.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html: Added.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image-expected.txt: Added.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html: Added.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js:
+    
+    Source/WebKit:
+    
+    Patterns are sent to the GPU process using ShareableBitmaps created
+    from ImageBuffers. Ensure we pass along the pattern source color space
+    to ShareableBitmap::create.
+    
+    Tests: imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html
+           imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html
+    
+    * GPUProcess/graphics/RemoteRenderingBackend.cpp:
+    (WebKit::RemoteRenderingBackend::getShareableBitmapForImageBuffer):
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@282630 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-09-16  Cameron McCormack  <[email protected]>
+
+            Support patterns with a wide gamut source painting into a display-p3 canvas
+            https://bugs.webkit.org/show_bug.cgi?id=229023
+            <rdar://problem/81828466>
+
+            Reviewed by Sam Weinig.
+
+            Patterns are sent to the GPU process using ShareableBitmaps created
+            from ImageBuffers. Ensure we pass along the pattern source color space
+            to ShareableBitmap::create.
+
+            Tests: imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html
+                   imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html
+
+            * GPUProcess/graphics/RemoteRenderingBackend.cpp:
+            (WebKit::RemoteRenderingBackend::getShareableBitmapForImageBuffer):
+
+2021-10-08  Russell Epstein  <[email protected]>
+
         Cherry-pick r282626. rdar://problem/83956767
 
     Support drawImage with a wide gamut image painting into a display-p3 canvas

Modified: branches/safari-612-branch/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp (283828 => 283829)


--- branches/safari-612-branch/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp	2021-10-08 19:44:31 UTC (rev 283828)
+++ branches/safari-612-branch/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp	2021-10-08 19:44:38 UTC (rev 283829)
@@ -466,7 +466,7 @@
             return;
         auto backendSize = imageBuffer->backendSize();
         auto resultSize = preserveResolution == WebCore::PreserveResolution::Yes ? backendSize : imageBuffer->logicalSize();
-        auto bitmap = ShareableBitmap::createShareable(resultSize, { });
+        auto bitmap = ShareableBitmap::createShareable(resultSize, { imageBuffer->colorSpace() });
         if (!bitmap)
             return;
         auto context = bitmap->createGraphicsContext();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to