Fix fragment processors and unit tests which mix ints and floats.
These need to change because type coercion in SkSL is about to become
more strict in a followup CL; we are disallowing expressions that mix
ints and floats without a cast.
Change-Id: Iff5e2820806b9419afdfcbf25d4a7f96f2eeeccb
Bug: skia:11164
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/353416
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
diff --git a/src/gpu/effects/GrMatrixConvolutionEffect.cpp b/src/gpu/effects/GrMatrixConvolutionEffect.cpp
index 2a69b58..d4cc5a4 100644
--- a/src/gpu/effects/GrMatrixConvolutionEffect.cpp
+++ b/src/gpu/effects/GrMatrixConvolutionEffect.cpp
@@ -181,8 +181,8 @@
const char* kernelBias = uniformHandler->getUniformCStr(fKernelBiasUni);
SkString kernelSample = this->invokeChild(1, args, "float2(float(i) + 0.5, 0.5)");
fragBuilder->codeAppendf("k = %s.w + %s;", kernelSample.c_str(), kernelBias);
- fragBuilder->codeAppendf("sourceOffset.y = floor(i / %d);", kernelWidth);
- fragBuilder->codeAppendf("sourceOffset.x = i - sourceOffset.y * %d;", kernelWidth);
+ fragBuilder->codeAppendf("sourceOffset.y = floor(half(i) / %d);", kernelWidth);
+ fragBuilder->codeAppendf("sourceOffset.x = half(i) - sourceOffset.y * %d;", kernelWidth);
} else {
fragBuilder->codeAppendf("sourceOffset = half2(%d, %d);", loc.x(), loc.y());
int offset = loc.y() * kernelWidth + loc.x();