fix off-by-one error in texture coordinate calculations for rrect gpu

blur; output now matches CPU

BUG=
R=bsalomon@google.com

Author: humper@google.com

Review URL: https://codereview.chromium.org/292773003

git-svn-id: http://skia.googlecode.com/svn/trunk@14788 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
commit-bot@chromium.org 2014-05-19 18:51:05 +00:00
parent 8d093d5059
commit 7ba1702bbb
2 changed files with 6 additions and 2 deletions

View File

@ -48,3 +48,7 @@ dashing
dashing2 dashing2
dashing3 dashing3
dashcubics dashcubics
# humper: https://codereview.chromium.org/292773003/
# changed texture coordinate generation for GPU rrect blur; will rebaseline after land.
simpleblurroundrect

View File

@ -1040,13 +1040,13 @@ void GrGLRRectBlurEffect::emitCode(GrGLShaderBuilder* builder,
builder->fsCodeAppendf("\t\tif (translatedFragPos.x >= threshold && translatedFragPos.x < (middle.x+threshold)) {\n" ); builder->fsCodeAppendf("\t\tif (translatedFragPos.x >= threshold && translatedFragPos.x < (middle.x+threshold)) {\n" );
builder->fsCodeAppendf("\t\t\ttranslatedFragPos.x = threshold;\n"); builder->fsCodeAppendf("\t\t\ttranslatedFragPos.x = threshold;\n");
builder->fsCodeAppendf("\t\t} else if (translatedFragPos.x >= (middle.x + threshold)) {\n"); builder->fsCodeAppendf("\t\t} else if (translatedFragPos.x >= (middle.x + threshold)) {\n");
builder->fsCodeAppendf("\t\t\ttranslatedFragPos.x -= middle.x;\n"); builder->fsCodeAppendf("\t\t\ttranslatedFragPos.x -= middle.x - 1.0;\n");
builder->fsCodeAppendf("\t\t}\n"); builder->fsCodeAppendf("\t\t}\n");
builder->fsCodeAppendf("\t\tif (translatedFragPos.y > threshold && translatedFragPos.y < (middle.y+threshold)) {\n" ); builder->fsCodeAppendf("\t\tif (translatedFragPos.y > threshold && translatedFragPos.y < (middle.y+threshold)) {\n" );
builder->fsCodeAppendf("\t\t\ttranslatedFragPos.y = threshold;\n"); builder->fsCodeAppendf("\t\t\ttranslatedFragPos.y = threshold;\n");
builder->fsCodeAppendf("\t\t} else if (translatedFragPos.y >= (middle.y + threshold)) {\n"); builder->fsCodeAppendf("\t\t} else if (translatedFragPos.y >= (middle.y + threshold)) {\n");
builder->fsCodeAppendf("\t\t\ttranslatedFragPos.y -= middle.y;\n"); builder->fsCodeAppendf("\t\t\ttranslatedFragPos.y -= middle.y - 1.0;\n");
builder->fsCodeAppendf("\t\t}\n"); builder->fsCodeAppendf("\t\t}\n");
builder->fsCodeAppendf("\t\tvec2 proxyDims = vec2(2.0*threshold+1.0);\n"); builder->fsCodeAppendf("\t\tvec2 proxyDims = vec2(2.0*threshold+1.0);\n");