diff options
| author | 2023-05-08 18:17:55 -0400 | |
|---|---|---|
| committer | 2023-05-08 18:17:55 -0400 | |
| commit | 1a15acb484ef18a309b21851fbdd27e6aee9ab68 (patch) | |
| tree | a030e7cf1d7c6ef2a3ac4b47dede4b0f0da46255 | |
| parent | ac175cc44ff40634aa9b8d8fb15cb5dd94ab8285 (diff) | |
Track input shaders java-side for heap tooling
Bug: 280338223
Test: runahat on test app
Change-Id: I5a853a8e6865d30e343a5f0cf57045e44798d9ec
| -rw-r--r-- | graphics/java/android/graphics/RuntimeShader.java | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/graphics/java/android/graphics/RuntimeShader.java b/graphics/java/android/graphics/RuntimeShader.java index 9c36fc36474c..3e6457919031 100644 --- a/graphics/java/android/graphics/RuntimeShader.java +++ b/graphics/java/android/graphics/RuntimeShader.java @@ -19,6 +19,7 @@ package android.graphics; import android.annotation.ColorInt; import android.annotation.ColorLong; import android.annotation.NonNull; +import android.util.ArrayMap; import android.view.Window; import libcore.util.NativeAllocationRegistry; @@ -256,6 +257,12 @@ public class RuntimeShader extends Shader { private long mNativeInstanceRuntimeShaderBuilder; /** + * For tracking GC usage. Keep a java-side reference for reachable objects to + * enable better heap tracking & tooling support + */ + private ArrayMap<String, Shader> mShaderUniforms = new ArrayMap<>(); + + /** * Creates a new RuntimeShader. * * @param shader The text of AGSL shader program to run. @@ -490,6 +497,7 @@ public class RuntimeShader extends Shader { if (shader == null) { throw new NullPointerException("The shader parameter must not be null"); } + mShaderUniforms.put(shaderName, shader); nativeUpdateShader( mNativeInstanceRuntimeShaderBuilder, shaderName, shader.getNativeInstance()); discardNativeInstance(); @@ -511,6 +519,7 @@ public class RuntimeShader extends Shader { throw new NullPointerException("The shader parameter must not be null"); } + mShaderUniforms.put(shaderName, shader); nativeUpdateShader(mNativeInstanceRuntimeShaderBuilder, shaderName, shader.getNativeInstanceWithDirectSampling()); discardNativeInstance(); |