Title: [282630] trunk
Revision
282630
Author
[email protected]
Date
2021-09-16 19:54:29 -0700 (Thu, 16 Sep 2021)

Log Message

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):

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/TestExpectations (282629 => 282630)


--- trunk/LayoutTests/TestExpectations	2021-09-17 02:33:27 UTC (rev 282629)
+++ trunk/LayoutTests/TestExpectations	2021-09-17 02:54:29 UTC (rev 282630)
@@ -5255,6 +5255,8 @@
 fast/canvas/canvas-color-space-display-p3-ImageData.html [ Failure ]
 fast/canvas/canvas-color-space-display-p3.html [ Failure ]
 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/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html [ Failure ]
 imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.fillText.html [ Failure ]

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (282629 => 282630)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2021-09-17 02:33:27 UTC (rev 282629)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2021-09-17 02:54:29 UTC (rev 282630)
@@ -1,5 +1,22 @@
 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-09-16  Cameron McCormack  <[email protected]>
+
         Support drawImage with a wide gamut image painting into a display-p3 canvas
         https://bugs.webkit.org/show_bug.cgi?id=229021
         <rdar://problem/81828450>

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html (282629 => 282630)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html	2021-09-17 02:33:27 UTC (rev 282629)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html	2021-09-17 02:54:29 UTC (rev 282630)
@@ -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: trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas-expected.txt (0 => 282630)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas-expected.txt	2021-09-17 02:54:29 UTC (rev 282630)
@@ -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: trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html (0 => 282630)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html	2021-09-17 02:54:29 UTC (rev 282630)
@@ -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: trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image-expected.txt (0 => 282630)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image-expected.txt	2021-09-17 02:54:29 UTC (rev 282630)
@@ -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: trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html (0 => 282630)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html	2021-09-17 02:54:29 UTC (rev 282630)
@@ -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: trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js (282629 => 282630)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js	2021-09-17 02:33:27 UTC (rev 282629)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js	2021-09-17 02:54:29 UTC (rev 282630)
@@ -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: trunk/LayoutTests/platform/ios/TestExpectations (282629 => 282630)


--- trunk/LayoutTests/platform/ios/TestExpectations	2021-09-17 02:33:27 UTC (rev 282629)
+++ trunk/LayoutTests/platform/ios/TestExpectations	2021-09-17 02:54:29 UTC (rev 282630)
@@ -3488,6 +3488,8 @@
 fast/canvas/canvas-color-space-display-p3-ImageData.html [ Pass ]
 fast/canvas/canvas-color-space-display-p3.html [ Pass ]
 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/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html [ Pass ]
 imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.fillText.html [ Pass ]

Modified: trunk/LayoutTests/platform/ios-14/TestExpectations (282629 => 282630)


--- trunk/LayoutTests/platform/ios-14/TestExpectations	2021-09-17 02:33:27 UTC (rev 282629)
+++ trunk/LayoutTests/platform/ios-14/TestExpectations	2021-09-17 02:54:29 UTC (rev 282630)
@@ -72,6 +72,8 @@
 fast/canvas/canvas-color-space-display-p3-ImageData.html [ Failure ]
 fast/canvas/canvas-color-space-display-p3.html [ Failure ]
 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/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html [ Failure ]
 imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.fillText.html [ Failure ]

Modified: trunk/LayoutTests/platform/mac/TestExpectations (282629 => 282630)


--- trunk/LayoutTests/platform/mac/TestExpectations	2021-09-17 02:33:27 UTC (rev 282629)
+++ trunk/LayoutTests/platform/mac/TestExpectations	2021-09-17 02:54:29 UTC (rev 282630)
@@ -2347,6 +2347,8 @@
 [ Monterey+ ] fast/canvas/canvas-color-space-display-p3-ImageData.html [ Pass ]
 [ Monterey+ ] fast/canvas/canvas-color-space-display-p3.html [ Pass ]
 [ 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/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html [ Pass ]
 [ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.fillText.html [ Pass ]

Modified: trunk/Source/WebKit/ChangeLog (282629 => 282630)


--- trunk/Source/WebKit/ChangeLog	2021-09-17 02:33:27 UTC (rev 282629)
+++ trunk/Source/WebKit/ChangeLog	2021-09-17 02:54:29 UTC (rev 282630)
@@ -1,5 +1,23 @@
 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-09-16  Cameron McCormack  <[email protected]>
+
         Support drawImage with a wide gamut image painting into a display-p3 canvas
         https://bugs.webkit.org/show_bug.cgi?id=229021
         <rdar://problem/81828450>

Modified: trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp (282629 => 282630)


--- trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp	2021-09-17 02:33:27 UTC (rev 282629)
+++ trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp	2021-09-17 02:54:29 UTC (rev 282630)
@@ -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