Commit 2c7ac296 authored by Florin Malita's avatar Florin Malita Committed by Commit Bot

Enable Ganesh dithering

We currently build Skia with SK_IGNORE_GPU_DITHER, effectively disabling GPU dithering.

Remove the build flag to align Ganesh with the sw rasterizer dithering behavior.

Note: Blink only sets the SkPaint dither flag for gradients at this time.

Aside from the flag change, this CL includes:

  * a handful of trivial layout tests rebaselines
  * some Canvas layout/unit test adjustments (relaxed exact pixel value checks to
    accommodate dithering)
  * a couple of trivial GPU pixel test rebaselines

BUG=731693

Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I2fc6f8d23272504838c55427c48c4ea7d641deae
Reviewed-on: https://chromium-review.googlesource.com/535714Reviewed-by: default avatarKenneth Russell <kbr@chromium.org>
Reviewed-by: default avatarMike Reed <reed@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Cr-Commit-Position: refs/heads/master@{#481033}
parent c2e0203b
...@@ -55,6 +55,10 @@ class PixelExpectations(GpuTestExpectations): ...@@ -55,6 +55,10 @@ class PixelExpectations(GpuTestExpectations):
# TODO(zakerinasab): check / generate reference images. # TODO(zakerinasab): check / generate reference images.
self.Fail('Pixel_Canvas2DUntagged', bug=713632) self.Fail('Pixel_Canvas2DUntagged', bug=713632)
# TODO(fmalita): remove when new baselines are available.
self.Fail('Pixel_CSSFilterEffects', bug=731693)
self.Fail('Pixel_CSSFilterEffects_NoOverlays', bug=731693)
# Failures on Haswell GPUs on macOS after upgrade to 10.12.4. # Failures on Haswell GPUs on macOS after upgrade to 10.12.4.
self.Fail('Pixel_OffscreenCanvas2DResizeOnWorker', self.Fail('Pixel_OffscreenCanvas2DResizeOnWorker',
['mac', ('intel', 0x0a2e)], bug=718183) ['mac', ('intel', 0x0a2e)], bug=718183)
......
...@@ -484,12 +484,12 @@ def MacSpecificPages(base_name): ...@@ -484,12 +484,12 @@ def MacSpecificPages(base_name):
'filter_effects.html', 'filter_effects.html',
base_name + '_CSSFilterEffects', base_name + '_CSSFilterEffects',
test_rect=[0, 0, 300, 300], test_rect=[0, 0, 300, 300],
revision=4), revision=5),
PixelTestPage( PixelTestPage(
'filter_effects.html', 'filter_effects.html',
base_name + '_CSSFilterEffects_NoOverlays', base_name + '_CSSFilterEffects_NoOverlays',
test_rect=[0, 0, 300, 300], test_rect=[0, 0, 300, 300],
revision=4, revision=5,
tolerance=10, tolerance=10,
browser_args=['--disable-mac-overlays']), browser_args=['--disable-mac-overlays']),
] ]
......
...@@ -198,10 +198,6 @@ SK_API void SkDebugf_FileLine(const char* file, int line, bool fatal, ...@@ -198,10 +198,6 @@ SK_API void SkDebugf_FileLine(const char* file, int line, bool fatal,
# define SK_SUPPORT_LEGACY_ANISOTROPIC_MIPMAP_SCALE # define SK_SUPPORT_LEGACY_ANISOTROPIC_MIPMAP_SCALE
#endif #endif
#ifndef SK_IGNORE_GPU_DITHER
# define SK_IGNORE_GPU_DITHER
#endif
// Remove this after we fixed all the issues related to the new SDF algorithm // Remove this after we fixed all the issues related to the new SDF algorithm
// (https://codereview.chromium.org/1643143002) // (https://codereview.chromium.org/1643143002)
#ifndef SK_USE_LEGACY_DISTANCE_FIELDS #ifndef SK_USE_LEGACY_DISTANCE_FIELDS
......
...@@ -45,42 +45,37 @@ fillShape(900, -150); ...@@ -45,42 +45,37 @@ fillShape(900, -150);
ctx.restore(); ctx.restore();
ctx.fillStyle = 'black'; ctx.fillStyle = 'black';
function testPixelShadow(pixel, reference, alphaApprox) { function testPixelShadow(pixel, reference, rgbApprox, alphaApprox) {
var testPassed = true;
for(i = 0; i < 3; i++) for(i = 0; i < 3; i++)
if(pixel[i] != reference[i]) { assert_approx_equals(pixel[i], reference[i], rgbApprox);
testPassed = false;
break;
}
assert_true(testPassed);
assert_approx_equals(pixel[3], reference[3], alphaApprox); assert_approx_equals(pixel[3], reference[3], alphaApprox);
} }
testScenarios = testScenarios =
[ [
['TestAlphaShadow 1', ctx.getImageData(400, 150, 1, 1).data, [ 0, 0, 0, 0, 0], 0], ['TestAlphaShadow 1', ctx.getImageData(400, 150, 1, 1).data, [ 0, 0, 0, 0, 0], 0, 0],
['TestAlphaShadow 2', ctx.getImageData(400, 75, 1, 1).data, [ 255, 0, 0, 64], 15], ['TestAlphaShadow 2', ctx.getImageData(400, 75, 1, 1).data, [ 255, 0, 0, 64], 4, 15],
['TestAlphaShadow 3', ctx.getImageData(400, 225, 1, 1).data, [ 255, 0, 0, 64], 15], ['TestAlphaShadow 3', ctx.getImageData(400, 225, 1, 1).data, [ 255, 0, 0, 64], 4, 15],
['TestAlphaShadow 4', ctx.getImageData(325, 150, 1, 1).data, [ 255, 0, 0, 64], 15], ['TestAlphaShadow 4', ctx.getImageData(325, 150, 1, 1).data, [ 255, 0, 0, 64], 4, 15],
['TestAlphaShadow 5', ctx.getImageData(475, 150, 1, 1).data, [ 255, 0, 0, 64], 15], ['TestAlphaShadow 5', ctx.getImageData(475, 150, 1, 1).data, [ 255, 0, 0, 64], 4, 15],
['TestBlurryShadow 1', ctx.getImageData(400, 400, 1, 1).data, [ 0, 0, 0, 0, 0], 0], ['TestBlurryShadow 1', ctx.getImageData(400, 400, 1, 1).data, [ 0, 0, 0, 0, 0], 0, 0],
['TestBlurryShadow 2', ctx.getImageData(400, 300, 1, 1).data, [ 255, 0, 0, 31], 15], ['TestBlurryShadow 2', ctx.getImageData(400, 300, 1, 1).data, [ 255, 0, 0, 31], 4, 15],
['TestBlurryShadow 3', ctx.getImageData(400, 500, 1, 1).data, [ 255, 0, 0, 31], 15], ['TestBlurryShadow 3', ctx.getImageData(400, 500, 1, 1).data, [ 255, 0, 0, 31], 4, 15],
['TestBlurryShadow 4', ctx.getImageData(300, 400, 1, 1).data, [ 255, 0, 0, 31], 15], ['TestBlurryShadow 4', ctx.getImageData(300, 400, 1, 1).data, [ 255, 0, 0, 31], 4, 15],
['TestBlurryShadow 5', ctx.getImageData(500, 400, 1, 1).data, [ 255, 0, 0, 31], 15], ['TestBlurryShadow 5', ctx.getImageData(500, 400, 1, 1).data, [ 255, 0, 0, 31], 4, 15],
['TestRotatedAlphaShadow 1', ctx.getImageData(400, 650, 1, 1).data, [ 0, 0, 0, 0, 0], 0], ['TestRotatedAlphaShadow 1', ctx.getImageData(400, 650, 1, 1).data, [ 0, 0, 0, 0, 0], 0, 0],
['TestRotatedAlphaShadow 2', ctx.getImageData(400, 575, 1, 1).data, [ 255, 0, 0, 64], 15], ['TestRotatedAlphaShadow 2', ctx.getImageData(400, 575, 1, 1).data, [ 255, 0, 0, 64], 4, 15],
['TestRotatedAlphaShadow 3', ctx.getImageData(400, 725, 1, 1).data, [ 255, 0, 0, 64], 15], ['TestRotatedAlphaShadow 3', ctx.getImageData(400, 725, 1, 1).data, [ 255, 0, 0, 64], 4, 15],
['TestRotatedAlphaShadow 4', ctx.getImageData(325, 650, 1, 1).data, [ 255, 0, 0, 64], 15], ['TestRotatedAlphaShadow 4', ctx.getImageData(325, 650, 1, 1).data, [ 255, 0, 0, 64], 4, 15],
['TestRotatedAlphaShadow 5', ctx.getImageData(475, 650, 1, 1).data, [ 255, 0, 0, 64], 15], ['TestRotatedAlphaShadow 5', ctx.getImageData(475, 650, 1, 1).data, [ 255, 0, 0, 64], 4, 15],
['TestRotatedBlurryShadow 1', ctx.getImageData(400, 900, 1, 1).data, [ 0, 0, 0, 0, 0], 0], ['TestRotatedBlurryShadow 1', ctx.getImageData(400, 900, 1, 1).data, [ 0, 0, 0, 0, 0], 0, 0],
['TestRotatedBlurryShadow 2', ctx.getImageData(400, 800, 1, 1).data, [ 255, 0, 0, 31], 15], ['TestRotatedBlurryShadow 2', ctx.getImageData(400, 800, 1, 1).data, [ 255, 0, 0, 31], 4, 15],
['TestRotatedBlurryShadow 3', ctx.getImageData(400, 1000, 1, 1).data, [ 255, 0, 0, 31], 15], ['TestRotatedBlurryShadow 3', ctx.getImageData(400, 1000, 1, 1).data, [ 255, 0, 0, 31], 4, 15],
['TestRotatedBlurryShadow 4', ctx.getImageData(300, 900, 1, 1).data, [ 255, 0, 0, 31], 15], ['TestRotatedBlurryShadow 4', ctx.getImageData(300, 900, 1, 1).data, [ 255, 0, 0, 31], 4, 15],
['TestRotatedBlurryShadow 5', ctx.getImageData(500, 900, 1, 1).data, [ 255, 0, 0, 31], 15], ['TestRotatedBlurryShadow 5', ctx.getImageData(500, 900, 1, 1).data, [ 255, 0, 0, 31], 4, 15],
]; ];
generate_tests(testPixelShadow, testScenarios); generate_tests(testPixelShadow, testScenarios);
......
This is a testharness.js-based test.
Harness Error. harness_status.status = 1 , harness_status.message = 4 duplicate test names: "testBlurryShadow 1", "testBlurryShadow 2", "testBlurryShadow 3", "testBlurryShadow 4"
PASS testSolidShadow 1
PASS testSolidShadow 2
PASS testSolidShadow 3
PASS testSolidShadow 4
PASS testSolidAlphaShadow 1
PASS testSolidAlphaShadow 2
PASS testSolidAlphaShadow 3
PASS testSolidAlphaShadow 4
PASS testBlurryShadow 1
PASS testBlurryShadow 2
PASS testBlurryShadow 3
PASS testBlurryShadow 4
PASS testBlurryShadow 1
PASS testBlurryShadow 2
PASS testBlurryShadow 3
PASS testBlurryShadow 4
Harness: the test ran to completion.
...@@ -3,15 +3,10 @@ ...@@ -3,15 +3,10 @@
<body> <body>
<script> <script>
var alphaApprox = 0, alphaMax = 0; var rgbApprox = 0, alphaApprox = 0, alphaMax = 0;
function testPixelShadow(pixel, reference) { function testPixelShadow(pixel, reference) {
var testPassed = true;
for(i = 0; i < 3; i++) for(i = 0; i < 3; i++)
if(pixel[i] != reference[i]) { assert_approx_equals(pixel[i], reference[i], rgbApprox);
testPassed = false;
break;
}
assert_true(testPassed);
if(alphaMax != 0) if(alphaMax != 0)
assert_true(pixel[3] < alphaMax); assert_true(pixel[3] < alphaMax);
else else
...@@ -44,6 +39,7 @@ ctx.fillRect(50, 350, 100, 100); ...@@ -44,6 +39,7 @@ ctx.fillRect(50, 350, 100, 100);
ctx.shadowColor = 'rgba(255, 0, 0, 0.3)'; ctx.shadowColor = 'rgba(255, 0, 0, 0.3)';
ctx.fillRect(50, 500, 100, 100); ctx.fillRect(50, 500, 100, 100);
// rgbApprox = 1
testSolidShadow = testSolidShadow =
[ [
['testSolidShadow 1', ctx.getImageData(250, 50, 1, 1).data, [255, 0, 0, 255]], ['testSolidShadow 1', ctx.getImageData(250, 50, 1, 1).data, [255, 0, 0, 255]],
...@@ -52,7 +48,7 @@ testSolidShadow = ...@@ -52,7 +48,7 @@ testSolidShadow =
['testSolidShadow 4', ctx.getImageData(349, 149, 1, 1).data, [255, 0, 0, 255]], ['testSolidShadow 4', ctx.getImageData(349, 149, 1, 1).data, [255, 0, 0, 255]],
]; ];
// alphaApprox = 5 // rgbApprox = 3, alphaApprox = 5
testSolidAlphaShadow = testSolidAlphaShadow =
[ [
['testSolidAlphaShadow 1', ctx.getImageData(250, 200, 1, 1).data, [255, 0, 0, 76]], ['testSolidAlphaShadow 1', ctx.getImageData(250, 200, 1, 1).data, [255, 0, 0, 76]],
...@@ -73,17 +69,23 @@ testBlurryShadow = ...@@ -73,17 +69,23 @@ testBlurryShadow =
// alpha < 10 // alpha < 10
testBlurryAlphaShadow = testBlurryAlphaShadow =
[ [
['testBlurryShadow 1', ctx.getImageData(248, 498, 1, 1).data, [255, 0, 0, 0]], ['testBlurryAlphaShadow 1', ctx.getImageData(248, 498, 1, 1).data, [255, 0, 0, 0]],
['testBlurryShadow 2', ctx.getImageData(248, 601, 1, 1).data, [255, 0, 0, 0]], ['testBlurryAlphaShadow 2', ctx.getImageData(248, 601, 1, 1).data, [255, 0, 0, 0]],
['testBlurryShadow 3', ctx.getImageData(351, 498, 1, 1).data, [255, 0, 0, 0]], ['testBlurryAlphaShadow 3', ctx.getImageData(351, 498, 1, 1).data, [255, 0, 0, 0]],
['testBlurryShadow 4', ctx.getImageData(351, 601, 1, 1).data, [255, 0, 0, 0]], ['testBlurryAlphaShadow 4', ctx.getImageData(351, 601, 1, 1).data, [255, 0, 0, 0]],
]; ];
rgbApprox = 1;
generate_tests(testPixelShadow, testSolidShadow); generate_tests(testPixelShadow, testSolidShadow);
rgbApprox = 3;
alphaApprox = 5; alphaApprox = 5;
generate_tests(testPixelShadow, testSolidAlphaShadow); generate_tests(testPixelShadow, testSolidAlphaShadow);
rgbApprox = 0;
alphaMax = 25; alphaMax = 25;
generate_tests(testPixelShadow, testBlurryShadow); generate_tests(testPixelShadow, testBlurryShadow);
alphaMax = 10; alphaMax = 10;
generate_tests(testPixelShadow, testBlurryAlphaShadow); generate_tests(testPixelShadow, testBlurryAlphaShadow);
......
...@@ -53,70 +53,69 @@ ctx.restore(); ...@@ -53,70 +53,69 @@ ctx.restore();
var imageData, data; var imageData, data;
ctx.fillStyle = 'black'; ctx.fillStyle = 'black';
function testPixelShadow(x, y, color) function testPixelShadow(x, y, color, rgbTolerance, alphaTolerance)
{ {
if (color.length == 4) { var data = ctx.getImageData(x, y, 1, 1).data;
assert_array_equals(ctx.getImageData(x, y, 1, 1).data, color); for (i = 0; i < 3; i++)
} else { // we expect to have [r, g, b, a, alphaApprox] assert_approx_equals(data[i], color[i], rgbTolerance);
var data = ctx.getImageData(x, y, 1, 1).data; assert_approx_equals(data[3], color[3], alphaTolerance);
assert_array_equals(data.slice(0,3), color.slice(0,3));
assert_approx_equals(data[3], color[3], color[4]);
}
// Plot test point. // Plot test point.
ctx.fillRect(x, y, 3, 3); ctx.fillRect(x, y, 3, 3);
} }
var rgbTolerance = 4;
var alphaTolerance = 15; var alphaTolerance = 15;
var testScenarios = [ var testScenarios = [
['Verify alpha shadow 1' ,400, 150, [0, 0, 0, 0]], ['Verify alpha shadow 1' ,400, 150, [0, 0, 0, 0], 0, 0],
['Verify alpha shadow 2' ,400, 75, [0, 0, 0, 0]], ['Verify alpha shadow 2' ,400, 75, [0, 0, 0, 0], 0, 0],
['Verify alpha shadow 3' ,400, 225, [0, 0, 0, 0]], ['Verify alpha shadow 3' ,400, 225, [0, 0, 0, 0], 0, 0],
['Verify alpha shadow 4' ,325, 150, [0, 0, 0, 0]], ['Verify alpha shadow 4' ,325, 150, [0, 0, 0, 0], 0, 0],
['Verify alpha shadow 5' ,475, 150, [0, 0, 0, 0]], ['Verify alpha shadow 5' ,475, 150, [0, 0, 0, 0], 0, 0],
['Verify alpha shadow 6' ,400, 50, [255, 0, 0, 64, alphaTolerance]], ['Verify alpha shadow 6' ,400, 50, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify alpha shadow 7' ,500, 150, [255, 0, 0, 64, alphaTolerance]], ['Verify alpha shadow 7' ,500, 150, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify alpha shadow 8' ,400, 250, [255, 0, 0, 64, alphaTolerance]], ['Verify alpha shadow 8' ,400, 250, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify alpha shadow 9' ,300, 150, [255, 0, 0, 64, alphaTolerance]], ['Verify alpha shadow 9' ,300, 150, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify alpha shadow 10' ,400, 25, [0, 0, 0, 0]], ['Verify alpha shadow 10' ,400, 25, [0, 0, 0, 0], 0, 0],
['Verify alpha shadow 11' ,525, 150, [0, 0, 0, 0]], ['Verify alpha shadow 11' ,525, 150, [0, 0, 0, 0], 0, 0],
['Verify alpha shadow 12' ,400, 275, [0, 0, 0, 0]], ['Verify alpha shadow 12' ,400, 275, [0, 0, 0, 0], 0, 0],
['Verify blurry shadow 1' ,275, 150, [0, 0, 0, 0]], ['Verify blurry shadow 1' ,275, 150, [0, 0, 0, 0], 0, 0],
['Verify blurry shadow 2' ,400, 400, [0, 0, 0, 0]], ['Verify blurry shadow 2' ,400, 400, [0, 0, 0, 0], 0, 0],
['Verify blurry shadow 3' ,400, 325, [0, 0, 0, 0]], ['Verify blurry shadow 3' ,400, 325, [0, 0, 0, 0], 0, 0],
['Verify blurry shadow 4' ,475, 400, [0, 0, 0, 0]], ['Verify blurry shadow 4' ,475, 400, [0, 0, 0, 0], 0, 0],
['Verify blurry shadow 5' ,400, 475, [0, 0, 0, 0]], ['Verify blurry shadow 5' ,400, 475, [0, 0, 0, 0], 0, 0],
['Verify blurry shadow 6' ,325, 400, [0, 0, 0, 0]], ['Verify blurry shadow 6' ,325, 400, [0, 0, 0, 0], 0, 0],
['Verify blurry shadow 7' ,400, 300, [255, 0, 0, 64, alphaTolerance]], ['Verify blurry shadow 7' ,400, 300, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify blurry shadow 8' ,400, 500, [255, 0, 0, 64, alphaTolerance]], ['Verify blurry shadow 8' ,400, 500, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify blurry shadow 9' ,300, 400, [255, 0, 0, 64, alphaTolerance]], ['Verify blurry shadow 9' ,300, 400, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify blurry shadow 10' ,500, 400, [255, 0, 0, 64, alphaTolerance]], ['Verify blurry shadow 10' ,500, 400, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify blurry shadow 11' ,525, 400, [0, 0, 0, 0]], ['Verify blurry shadow 11' ,525, 400, [0, 0, 0, 0], 0, 0],
['Verify blurry shadow 12' ,275, 400, [0, 0, 0, 0]], ['Verify blurry shadow 12' ,275, 400, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 1' ,400, 650, [0, 0, 0, 0]], ['Verify rotated alpha shadow 1' ,400, 650, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 2' ,400, 575, [0, 0, 0, 0]], ['Verify rotated alpha shadow 2' ,400, 575, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 3' ,400, 725, [0, 0, 0, 0]], ['Verify rotated alpha shadow 3' ,400, 725, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 4' ,325, 650, [0, 0, 0, 0]], ['Verify rotated alpha shadow 4' ,325, 650, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 5' ,475, 650, [0, 0, 0, 0]], ['Verify rotated alpha shadow 5' ,475, 650, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 6' ,400, 550, [255, 0, 0, 64, alphaTolerance]], ['Verify rotated alpha shadow 6' ,400, 550, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify rotated alpha shadow 7' ,500, 650, [255, 0, 0, 64, alphaTolerance]], ['Verify rotated alpha shadow 7' ,500, 650, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify rotated alpha shadow 8' ,400, 750, [255, 0, 0, 64, alphaTolerance]], ['Verify rotated alpha shadow 8' ,400, 750, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify rotated alpha shadow 9' ,300, 650, [255, 0, 0, 64, alphaTolerance]], ['Verify rotated alpha shadow 9' ,300, 650, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify rotated alpha shadow 10' ,400, 525, [0, 0, 0, 0]], ['Verify rotated alpha shadow 10' ,400, 525, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 11' ,525, 650, [0, 0, 0, 0]], ['Verify rotated alpha shadow 11' ,525, 650, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 12' ,400, 775, [0, 0, 0, 0]], ['Verify rotated alpha shadow 12' ,400, 775, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 13' ,275, 650, [0, 0, 0, 0]], ['Verify rotated alpha shadow 13' ,275, 650, [0, 0, 0, 0], 0, 0],
['Verify rotated blurry shadow 1' ,400, 900, [0, 0, 0, 0]], ['Verify rotated blurry shadow 1' ,400, 900, [0, 0, 0, 0], 0, 0],
['Verify rotated blurry shadow 2' ,400, 825, [0, 0, 0, 0]], ['Verify rotated blurry shadow 2' ,400, 825, [0, 0, 0, 0], 0, 0],
['Verify rotated blurry shadow 3' ,475, 900, [0, 0, 0, 0]], ['Verify rotated blurry shadow 3' ,475, 900, [0, 0, 0, 0], 0, 0],
['Verify rotated blurry shadow 4' ,400, 975, [0, 0, 0, 0]], ['Verify rotated blurry shadow 4' ,400, 975, [0, 0, 0, 0], 0, 0],
['Verify rotated blurry shadow 5' ,325, 900, [0, 0, 0, 0]], ['Verify rotated blurry shadow 5' ,325, 900, [0, 0, 0, 0], 0, 0],
['Verify rotated blurry shadow 6' ,400, 800, [255, 0, 0, 64, alphaTolerance]], ['Verify rotated blurry shadow 6' ,400, 800, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify rotated blurry shadow 7' ,400, 1000, [255, 0, 0, 64, alphaTolerance]], ['Verify rotated blurry shadow 7' ,400, 1000, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify rotated blurry shadow 8' ,300, 900, [255, 0, 0, 64, alphaTolerance]], ['Verify rotated blurry shadow 8' ,300, 900, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify rotated blurry shadow 9' ,500, 900, [255, 0, 0, 64, alphaTolerance]], ['Verify rotated blurry shadow 9' ,500, 900, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify rotated blurry shadow 10' ,525, 900, [0, 0, 0, 0]], ['Verify rotated blurry shadow 10' ,525, 900, [0, 0, 0, 0], 0, 0],
['Verify rotated blurry shadow 11' ,275, 900, [0, 0, 0, 0]], ['Verify rotated blurry shadow 11' ,275, 900, [0, 0, 0, 0], 0, 0],
['Verify rotated blurry shadow 12' ,400, 1025, [0, 0, 0, 0]], ['Verify rotated blurry shadow 12' ,400, 1025, [0, 0, 0, 0], 0, 0],
]; ];
generate_tests(testPixelShadow, testScenarios); generate_tests(testPixelShadow, testScenarios);
......
...@@ -45,73 +45,72 @@ ctx.restore(); ...@@ -45,73 +45,72 @@ ctx.restore();
var imageData, data; var imageData, data;
ctx.fillStyle = 'black'; ctx.fillStyle = 'black';
function testPixelAlphaShadow(x, y, color) function testPixelAlphaShadow(x, y, color, rgbTolerance, alphaTolerance)
{ {
if (color.length == 4) { var data = ctx.getImageData(x, y, 1, 1).data;
assert_array_equals(ctx.getImageData(x, y, 1, 1).data, color); for (i = 0; i < 3; i++)
} else { // we expect to have [r, g, b, a, alphaApprox] assert_approx_equals(data[i], color[i], rgbTolerance);
var data = ctx.getImageData(x, y, 1, 1).data; assert_approx_equals(data[3], color[3], alphaTolerance);
assert_array_equals(data.slice(0,3), color.slice(0,3));
assert_approx_equals(data[3], color[3], color[4]);
}
// Plot test point. // Plot test point.
ctx.fillRect(x, y, 3, 3); ctx.fillRect(x, y, 3, 3);
} }
var rgbTolerance = 4;
var alphaTolerance = 15; var alphaTolerance = 15;
var testScenarios = [ var testScenarios = [
['Verify alpha shadow 1' , 400, 150, [0, 0, 0, 0]], ['Verify alpha shadow 1' , 400, 150, [0, 0, 0, 0], 0, 0],
['Verify alpha shadow 2' , 400, 75, [0, 0, 0, 0]], ['Verify alpha shadow 2' , 400, 75, [0, 0, 0, 0], 0, 0],
['Verify alpha shadow 3' , 400, 225, [0, 0, 0, 0]], ['Verify alpha shadow 3' , 400, 225, [0, 0, 0, 0], 0, 0],
['Verify alpha shadow 4' , 325, 150, [0, 0, 0, 0]], ['Verify alpha shadow 4' , 325, 150, [0, 0, 0, 0], 0, 0],
['Verify alpha shadow 5' , 475, 150, [0, 0, 0, 0]], ['Verify alpha shadow 5' , 475, 150, [0, 0, 0, 0], 0, 0],
['Verify alpha shadow 6' , 400, 50, [255, 0, 0, 64, alphaTolerance]], ['Verify alpha shadow 6' , 400, 50, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify alpha shadow 7' , 500, 150, [255, 0, 0, 64, alphaTolerance]], ['Verify alpha shadow 7' , 500, 150, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify alpha shadow 8' , 400, 250, [255, 0, 0, 64, alphaTolerance]], ['Verify alpha shadow 8' , 400, 250, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify alpha shadow 9' , 300, 150, [255, 0, 0, 64, alphaTolerance]], ['Verify alpha shadow 9' , 300, 150, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify alpha shadow 10' , 400, 25, [0, 0, 0, 0]], ['Verify alpha shadow 10' , 400, 25, [0, 0, 0, 0], 0, 0],
['Verify alpha shadow 11' , 525, 150, [0, 0, 0, 0]], ['Verify alpha shadow 11' , 525, 150, [0, 0, 0, 0], 0, 0],
['Verify alpha shadow 12' , 400, 275, [0, 0, 0, 0]], ['Verify alpha shadow 12' , 400, 275, [0, 0, 0, 0], 0, 0],
['Verify alpha shadow 13' , 275, 150, [0, 0, 0, 0]], ['Verify alpha shadow 13' , 275, 150, [0, 0, 0, 0], 0, 0],
['Verify blurry shadow 1' , 400, 400, [0, 0, 0, 0]], ['Verify blurry shadow 1' , 400, 400, [0, 0, 0, 0], 0, 0],
['Verify blurry shadow 2' , 400, 325, [0, 0, 0, 0]], ['Verify blurry shadow 2' , 400, 325, [0, 0, 0, 0], 0, 0],
['Verify blurry shadow 3' , 475, 400, [0, 0, 0, 0]], ['Verify blurry shadow 3' , 475, 400, [0, 0, 0, 0], 0, 0],
['Verify blurry shadow 4' , 400, 475, [0, 0, 0, 0]], ['Verify blurry shadow 4' , 400, 475, [0, 0, 0, 0], 0, 0],
['Verify blurry shadow 5' , 325, 400, [0, 0, 0, 0]], ['Verify blurry shadow 5' , 325, 400, [0, 0, 0, 0], 0, 0],
['Verify blurry shadow 6' , 400, 300, [255, 0, 0, 64, alphaTolerance]], ['Verify blurry shadow 6' , 400, 300, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify blurry shadow 7' , 400, 500, [255, 0, 0, 64, alphaTolerance]], ['Verify blurry shadow 7' , 400, 500, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify blurry shadow 8' , 300, 400, [255, 0, 0, 64, alphaTolerance]], ['Verify blurry shadow 8' , 300, 400, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify blurry shadow 9' , 500, 400, [255, 0, 0, 64, alphaTolerance]], ['Verify blurry shadow 9' , 500, 400, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify blurry shadow 10' , 525, 400, [0, 0, 0, 0]], ['Verify blurry shadow 10' , 525, 400, [0, 0, 0, 0], 0, 0],
['Verify blurry shadow 11' , 275, 400, [0, 0, 0, 0]], ['Verify blurry shadow 11' , 275, 400, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 1' , 400, 650, [0, 0, 0, 0]], ['Verify rotated alpha shadow 1' , 400, 650, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 2' , 400, 575, [0, 0, 0, 0]], ['Verify rotated alpha shadow 2' , 400, 575, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 3' , 400, 725, [0, 0, 0, 0]], ['Verify rotated alpha shadow 3' , 400, 725, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 4' , 325, 650, [0, 0, 0, 0]], ['Verify rotated alpha shadow 4' , 325, 650, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 5' , 475, 650, [0, 0, 0, 0]], ['Verify rotated alpha shadow 5' , 475, 650, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 6' , 400, 550, [255, 0, 0, 64, alphaTolerance]], ['Verify rotated alpha shadow 6' , 400, 550, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify rotated alpha shadow 7' , 500, 650, [255, 0, 0, 64, alphaTolerance]], ['Verify rotated alpha shadow 7' , 500, 650, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify rotated alpha shadow 8' , 400, 750, [255, 0, 0, 64, alphaTolerance]], ['Verify rotated alpha shadow 8' , 400, 750, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify rotated alpha shadow 9' , 300, 650, [255, 0, 0, 64, alphaTolerance]], ['Verify rotated alpha shadow 9' , 300, 650, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify rotated alpha shadow 10' , 400, 525, [0, 0, 0, 0]], ['Verify rotated alpha shadow 10' , 400, 525, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 11' , 525, 650, [0, 0, 0, 0]], ['Verify rotated alpha shadow 11' , 525, 650, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 12' , 400, 775, [0, 0, 0, 0]], ['Verify rotated alpha shadow 12' , 400, 775, [0, 0, 0, 0], 0, 0],
['Verify rotated alpha shadow 13' , 275, 650, [0, 0, 0, 0]], ['Verify rotated alpha shadow 13' , 275, 650, [0, 0, 0, 0], 0, 0],
['Verify rotated blurry shadow 1' , 400, 900, [0, 0, 0, 0]], ['Verify rotated blurry shadow 1' , 400, 900, [0, 0, 0, 0], 0, 0],
['Verify rotated blurry shadow 2' , 400, 825, [0, 0, 0, 0]], ['Verify rotated blurry shadow 2' , 400, 825, [0, 0, 0, 0], 0, 0],
['Verify rotated blurry shadow 3' , 475, 900, [0, 0, 0, 0]], ['Verify rotated blurry shadow 3' , 475, 900, [0, 0, 0, 0], 0, 0],
['Verify rotated blurry shadow 4' , 400, 975, [0, 0, 0, 0]], ['Verify rotated blurry shadow 4' , 400, 975, [0, 0, 0, 0], 0, 0],
['Verify rotated blurry shadow 5' , 325, 900, [0, 0, 0, 0]], ['Verify rotated blurry shadow 5' , 325, 900, [0, 0, 0, 0], 0, 0],
['Verify rotated blurry shadow 6' , 400, 800, [255, 0, 0, 64, alphaTolerance]], ['Verify rotated blurry shadow 6' , 400, 800, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify rotated blurry shadow 7' , 400, 1000, [255, 0, 0, 64, alphaTolerance]], ['Verify rotated blurry shadow 7' , 400, 1000, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify rotated blurry shadow 8' , 300, 900, [255, 0, 0, 64, alphaTolerance]], ['Verify rotated blurry shadow 8' , 300, 900, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify rotated blurry shadow 9' , 500, 900, [255, 0, 0, 64, alphaTolerance]], ['Verify rotated blurry shadow 9' , 500, 900, [255, 0, 0, 64], rgbTolerance, alphaTolerance],
['Verify rotated blurry shadow 10' , 525, 900, [0, 0, 0, 0]], ['Verify rotated blurry shadow 10' , 525, 900, [0, 0, 0, 0], 0, 0],
['Verify rotated blurry shadow 11' , 275, 900, [0, 0, 0, 0]], ['Verify rotated blurry shadow 11' , 275, 900, [0, 0, 0, 0], 0, 0],
['Verify rotated blurry shadow 12' , 400, 1025, [0, 0, 0, 0]], ['Verify rotated blurry shadow 12' , 400, 1025, [0, 0, 0, 0], 0, 0],
]; ];
generate_tests(testPixelAlphaShadow, testScenarios); generate_tests(testPixelAlphaShadow, testScenarios);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment