Pass the radius as a float deeper into HWUI allowing RS to generate more accurate blurs.

Also, when converting radius to an integer value snap to the appropriate integer boundaries.

bug: 10650594
Change-Id: Icca4bc17d88162bbcbc6035d4f81bd1d98a4de2d
diff --git a/libs/hwui/utils/Blur.h b/libs/hwui/utils/Blur.h
index 79aff65..b145333 100644
--- a/libs/hwui/utils/Blur.h
+++ b/libs/hwui/utils/Blur.h
@@ -27,8 +27,12 @@
 public:
     // If radius > 0, return the corresponding sigma, else return 0
     ANDROID_API static float convertRadiusToSigma(float radius);
-    // If sigma > 0.6, return the corresponding radius, else return 0
+    // If sigma > 0.5, return the corresponding radius, else return 0
     ANDROID_API static float convertSigmaToRadius(float sigma);
+    // If the original radius was on an integer boundary then after the sigma to
+    // radius conversion a small rounding error may be introduced. This function
+    // accounts for that error and snaps to the appropriate integer boundary.
+    static uint32_t convertRadiusToInt(float radius);
 
     static void generateGaussianWeights(float* weights, int32_t radius);
     static void horizontal(float* weights, int32_t radius, const uint8_t* source,