aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2018-04-03 13:38:01 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-04-03 18:25:51 +0000
commit3aecc305e161a8e335a0a8d9113d5b4bf3b0807b (patch)
tree7f2297eeec1de2a457693bcd71ed511bdebe1e4a /src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp
parentd09b06a349eff5de7c983882d3c03ff6c306f5b3 (diff)
Check for divide by zero in fill_in_1D_gaussian_kernel
Bug: skia:7769 Change-Id: I56a67f8a6f19437359ad6e7bf2d57f6e9a7992c9 Reviewed-on: https://skia-review.googlesource.com/118240 Commit-Queue: Greg Daniel <egdaniel@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp')
-rw-r--r--src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp b/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp
index 5fae103498..121e225796 100644
--- a/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp
+++ b/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp
@@ -177,7 +177,15 @@ void GrGLConvolutionEffect::GenKey(const GrProcessor& processor, const GrShaderC
///////////////////////////////////////////////////////////////////////////////
static void fill_in_1D_gaussian_kernel(float* kernel, int width, float gaussianSigma, int radius) {
- const float denom = 1.0f / (2.0f * gaussianSigma * gaussianSigma);
+ float twoSigmaSqrd = 2.0f * gaussianSigma * gaussianSigma;
+ if (SkScalarNearlyZero(twoSigmaSqrd, SK_ScalarNearlyZero)) {
+ for (int i = 0; i < width; ++i) {
+ kernel[i] = 0.0f;
+ }
+ return;
+ }
+
+ const float denom = 1.0f / twoSigmaSqrd;
float sum = 0.0f;
for (int i = 0; i < width; ++i) {