forked from mirrors/gecko-dev
Automatic update from web-platform-tests [OT-PW] Make it work with OOP-R This CL makes off-thread paint worklet work with OOP-R. OOP-R serialize an PaintOp and stores the serialized buffer in a shared memory. GPU then reads the memory and de-serialize it. For off-thread paint worklet, we are producing a DrawImageRectOp. Note that this DrawImageRectOp is different than a normal one. It is a DrawImageRectOp that contains a DrawRecord that contains multiple PaintOps in it. So this CL adds a special code path to serialize it, for paint worklet DrawImageRectOp only. The way to serialize it is to iterate over all the PaintOps inside the DrawRecord. In this way, we do not need to change anything on the GPU de-serialize code. We also changed the layout tests. We changed some tests, now using fillRect instead of strokeRect. The problem with strokeRect is that using GPU rasterization could easily result in subpixel difference on different platforms. Using fillRect will avoid that. Bug: 1020238 Change-Id: Ie0aadfe217e462547cc16a273d09ec8a64f055a0 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1957012 Reviewed-by: Yi Gu <yigu@chromium.org> Reviewed-by: Khushal <khushalsagar@chromium.org> Commit-Queue: Xida Chen <xidachen@chromium.org> Cr-Commit-Position: refs/heads/master@{#725554} -- wpt-commits: 15e4f2b5a97b2fcd14c592f2de16cc62a82c645d wpt-pr: 20705
49 lines
1.1 KiB
HTML
49 lines
1.1 KiB
HTML
<!DOCTYPE html>
|
|
<html class="reftest-wait">
|
|
<link rel="help" href="https://drafts.css-houdini.org/css-paint-api/">
|
|
<link rel="match" href="parse-input-arguments-ref.html">
|
|
<style>
|
|
.container {
|
|
width: 100px;
|
|
height: 100px;
|
|
}
|
|
|
|
#canvas-geometry {
|
|
background-image: paint(geometry);
|
|
}
|
|
</style>
|
|
<script src="/common/reftest-wait.js"></script>
|
|
<script src="/common/worklet-reftest.js"></script>
|
|
<body>
|
|
<div id="canvas-geometry" class="container"></div>
|
|
|
|
<script id="code" type="text/worklet">
|
|
var testsPassed = false;
|
|
try {
|
|
registerPaint('foo8', class {
|
|
get paint() {
|
|
return 42;
|
|
}
|
|
});
|
|
} catch(ex) {
|
|
// 'paint' property's value is 42, not a function.
|
|
if (ex.name == 'TypeError')
|
|
testsPassed = true;
|
|
}
|
|
|
|
registerPaint('geometry', class {
|
|
paint(ctx, geom) {
|
|
if (testsPassed)
|
|
ctx.fillStyle = 'green';
|
|
else
|
|
ctx.fillStyle = 'red';
|
|
ctx.fillRect(0, 0, geom.width, geom.height);
|
|
}
|
|
});
|
|
</script>
|
|
|
|
<script>
|
|
importWorkletAndTerminateTestAfterAsyncPaint(CSS.paintWorklet, document.getElementById('code').textContent);
|
|
</script>
|
|
</body>
|
|
</html>
|