Remove isOpaque from RuntimeShader

Skia can now detect this performance optimization
automatically so there is no need to increase the
exposure of the public API.

Test: atest CtsUiRenderingTestCases
Bug: 201546136
Change-Id: I5f80259530a08506f54cef59b4b1940e940bfe91
diff --git a/core/api/current.txt b/core/api/current.txt
index 19830c3..cd7abfc 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -15449,8 +15449,6 @@
 
   public class RuntimeShader extends android.graphics.Shader {
     ctor public RuntimeShader(@NonNull String);
-    ctor public RuntimeShader(@NonNull String, boolean);
-    method public boolean isForceOpaque();
     method public void setColorUniform(@NonNull String, @ColorInt int);
     method public void setColorUniform(@NonNull String, @ColorLong long);
     method public void setColorUniform(@NonNull String, @NonNull android.graphics.Color);
diff --git a/graphics/java/android/graphics/RuntimeShader.java b/graphics/java/android/graphics/RuntimeShader.java
index 57046f5..2ff888b 100644
--- a/graphics/java/android/graphics/RuntimeShader.java
+++ b/graphics/java/android/graphics/RuntimeShader.java
@@ -34,8 +34,6 @@
                 RuntimeShader.class.getClassLoader(), nativeGetFinalizer());
     }
 
-    private boolean mForceOpaque;
-
     /**
      * Current native shader builder instance.
      */
@@ -47,33 +45,17 @@
      * @param shader The text of AGSL shader program to run.
      */
     public RuntimeShader(@NonNull String shader) {
-        this(shader, false);
-    }
-
-    /**
-     * Creates a new RuntimeShader.
-     *
-     * @param shader The text of AGSL shader program to run.
-     * @param forceOpaque If true then all pixels produced by the AGSL shader program will have an
-     *                    alpha of 1.0f.
-     */
-    public RuntimeShader(@NonNull String shader, boolean forceOpaque) {
         // colorspace is required, but the RuntimeShader always produces colors in the destination
         // buffer's colorspace regardless of the value specified here.
         super(ColorSpace.get(ColorSpace.Named.SRGB));
         if (shader == null) {
             throw new NullPointerException("RuntimeShader requires a non-null AGSL string");
         }
-        mForceOpaque = forceOpaque;
         mNativeInstanceRuntimeShaderBuilder = nativeCreateBuilder(shader);
         NoImagePreloadHolder.sRegistry.registerNativeAllocation(
                 this, mNativeInstanceRuntimeShaderBuilder);
     }
 
-    public boolean isForceOpaque() {
-        return mForceOpaque;
-    }
-
     /**
      * Sets the uniform color value corresponding to this shader.  If the shader does not have a
      * uniform with that name or if the uniform is declared with a type other than vec3 or vec4 and
@@ -322,7 +304,7 @@
     /** @hide */
     @Override
     protected long createNativeInstance(long nativeMatrix, boolean filterFromPaint) {
-        return nativeCreateShader(mNativeInstanceRuntimeShaderBuilder, nativeMatrix, mForceOpaque);
+        return nativeCreateShader(mNativeInstanceRuntimeShaderBuilder, nativeMatrix);
     }
 
     /** @hide */
@@ -332,8 +314,7 @@
 
     private static native long nativeGetFinalizer();
     private static native long nativeCreateBuilder(String agsl);
-    private static native long nativeCreateShader(
-            long shaderBuilder, long matrix, boolean isOpaque);
+    private static native long nativeCreateShader(long shaderBuilder, long matrix);
     private static native void nativeUpdateUniforms(
             long shaderBuilder, String uniformName, float[] uniforms, boolean isColor);
     private static native void nativeUpdateUniforms(
diff --git a/graphics/java/android/graphics/drawable/RippleShader.java b/graphics/java/android/graphics/drawable/RippleShader.java
index 53a6731..4461f39 100644
--- a/graphics/java/android/graphics/drawable/RippleShader.java
+++ b/graphics/java/android/graphics/drawable/RippleShader.java
@@ -126,7 +126,7 @@
     private static final double PI_ROTATE_LEFT = Math.PI * -0.0078125;
 
     RippleShader() {
-        super(SHADER, false);
+        super(SHADER);
     }
 
     public void setShader(Shader shader) {
diff --git a/libs/hwui/jni/Shader.cpp b/libs/hwui/jni/Shader.cpp
index c505b53..899c7d4 100644
--- a/libs/hwui/jni/Shader.cpp
+++ b/libs/hwui/jni/Shader.cpp
@@ -261,11 +261,10 @@
     return static_cast<jlong>(reinterpret_cast<uintptr_t>(&SkRuntimeShaderBuilder_delete));
 }
 
-static jlong RuntimeShader_create(JNIEnv* env, jobject, jlong shaderBuilder, jlong matrixPtr,
-                                  jboolean isOpaque) {
+static jlong RuntimeShader_create(JNIEnv* env, jobject, jlong shaderBuilder, jlong matrixPtr) {
     SkRuntimeShaderBuilder* builder = reinterpret_cast<SkRuntimeShaderBuilder*>(shaderBuilder);
     const SkMatrix* matrix = reinterpret_cast<const SkMatrix*>(matrixPtr);
-    sk_sp<SkShader> shader = builder->makeShader(matrix, isOpaque == JNI_TRUE);
+    sk_sp<SkShader> shader = builder->makeShader(matrix, false);
     ThrowIAE_IfNull(env, shader);
     return reinterpret_cast<jlong>(shader.release());
 }
@@ -419,7 +418,7 @@
 
 static const JNINativeMethod gRuntimeShaderMethods[] = {
         {"nativeGetFinalizer", "()J", (void*)RuntimeShader_getNativeFinalizer},
-        {"nativeCreateShader", "(JJZ)J", (void*)RuntimeShader_create},
+        {"nativeCreateShader", "(JJ)J", (void*)RuntimeShader_create},
         {"nativeCreateBuilder", "(Ljava/lang/String;)J", (void*)RuntimeShader_createShaderBuilder},
         {"nativeUpdateUniforms", "(JLjava/lang/String;[FZ)V",
          (void*)RuntimeShader_updateFloatArrayUniforms},
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/charging/DwellRippleShader.kt b/packages/SystemUI/src/com/android/systemui/statusbar/charging/DwellRippleShader.kt
index 8dc01f0..236129f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/charging/DwellRippleShader.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/charging/DwellRippleShader.kt
@@ -33,7 +33,7 @@
  *
  * Modeled after frameworks/base/graphics/java/android/graphics/drawable/RippleShader.java.
  */
-class DwellRippleShader internal constructor() : RuntimeShader(SHADER, false) {
+class DwellRippleShader internal constructor() : RuntimeShader(SHADER) {
     companion object {
         private const val SHADER_UNIFORMS = """uniform vec2 in_origin;
                 uniform float in_time;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/charging/RippleShader.kt b/packages/SystemUI/src/com/android/systemui/statusbar/charging/RippleShader.kt
index 22fbf91..bdad36c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/charging/RippleShader.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/charging/RippleShader.kt
@@ -28,7 +28,7 @@
  *
  * Modeled after frameworks/base/graphics/java/android/graphics/drawable/RippleShader.java.
  */
-class RippleShader internal constructor() : RuntimeShader(SHADER, false) {
+class RippleShader internal constructor() : RuntimeShader(SHADER) {
     companion object {
         private const val SHADER_UNIFORMS = """uniform vec2 in_origin;
                 uniform float in_progress;
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapTransitionView.kt b/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapTransitionView.kt
index d3ad9e8..3af5450 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapTransitionView.kt
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapTransitionView.kt
@@ -41,7 +41,7 @@
             ImageDecoder.createSource(context.resources, R.drawable.very_large_photo))
     private val mShaderA = BitmapShader(mImageA, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)
     private val mShaderB = BitmapShader(mImageB, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)
-    private val mShader = RuntimeShader(AGSL, false)
+    private val mShader = RuntimeShader(AGSL)
     private var mCurrentProgress = -1f
     private var mForwardProgress = true
     private var mCurrentAnimator = ValueAnimator.ofFloat(-1f, 1f)
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersMutateActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersMutateActivity.java
index 65d168b..fafe60b 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersMutateActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersMutateActivity.java
@@ -83,7 +83,7 @@
             mBlendPaint = new Paint();
             mBlendPaint.setColorFilter(new PorterDuffColorFilter(0, PorterDuff.Mode.SRC_OVER));
 
-            mRuntimeShader = new RuntimeShader(sSkSL, false);
+            mRuntimeShader = new RuntimeShader(sSkSL);
             mRuntimeShader.setFloatUniform("param1", mShaderParam1);
             mRuntimeShader.setInputShader("bitmapShader", new BitmapShader(mBitmap1,
                                                                            Shader.TileMode.CLAMP,
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/RenderEffectViewActivity.kt b/tests/HwAccelerationTest/src/com/android/test/hwui/RenderEffectViewActivity.kt
index 06280d2..3c71b96 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/RenderEffectViewActivity.kt
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/RenderEffectViewActivity.kt
@@ -30,7 +30,7 @@
 
 class RenderEffectViewActivity : Activity() {
 
-    private val mDropsShader = RuntimeShader(dropsAGSL, false)
+    private val mDropsShader = RuntimeShader(dropsAGSL)
     private var mDropsAnimator = ValueAnimator.ofFloat(0f, 1f)
     private var mStartTime = System.currentTimeMillis()
     private lateinit var mScratchesImage: Bitmap
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java
index 73c4b8a..b78907c 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java
@@ -109,7 +109,7 @@
             p.setColor(mColor);
             mPaint = CanvasProperty.createPaint(p);
 
-            mRuntimeShader = new RuntimeShader(sSkSL, false);
+            mRuntimeShader = new RuntimeShader(sSkSL);
             mRuntimeShader.setFloatUniform("in_maxRadius", MAX_RADIUS);
         }
 
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/StretchShaderActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/StretchShaderActivity.java
index 12e338c..2990c9e 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/StretchShaderActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/StretchShaderActivity.java
@@ -69,7 +69,7 @@
         linearLayout.setOrientation(LinearLayout.VERTICAL);
 
         mBitmap = ((BitmapDrawable) getDrawable(R.drawable.sunset1)).getBitmap();
-        mRuntimeShader = new RuntimeShader(SKSL, false);
+        mRuntimeShader = new RuntimeShader(SKSL);
 
         BitmapShader bitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP,
                 Shader.TileMode.CLAMP);