Merge "Track input shaders java-side for heap tooling" into udc-dev

This commit is contained in:
Treehugger Robot
2023-05-09 21:36:38 +00:00
committed by Android (Google) Code Review

View File

@@ -19,6 +19,7 @@ package android.graphics;
import android.annotation.ColorInt; import android.annotation.ColorInt;
import android.annotation.ColorLong; import android.annotation.ColorLong;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.util.ArrayMap;
import android.view.Window; import android.view.Window;
import libcore.util.NativeAllocationRegistry; import libcore.util.NativeAllocationRegistry;
@@ -255,6 +256,12 @@ public class RuntimeShader extends Shader {
*/ */
private long mNativeInstanceRuntimeShaderBuilder; 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. * Creates a new RuntimeShader.
* *
@@ -490,6 +497,7 @@ public class RuntimeShader extends Shader {
if (shader == null) { if (shader == null) {
throw new NullPointerException("The shader parameter must not be null"); throw new NullPointerException("The shader parameter must not be null");
} }
mShaderUniforms.put(shaderName, shader);
nativeUpdateShader( nativeUpdateShader(
mNativeInstanceRuntimeShaderBuilder, shaderName, shader.getNativeInstance()); mNativeInstanceRuntimeShaderBuilder, shaderName, shader.getNativeInstance());
discardNativeInstance(); discardNativeInstance();
@@ -511,6 +519,7 @@ public class RuntimeShader extends Shader {
throw new NullPointerException("The shader parameter must not be null"); throw new NullPointerException("The shader parameter must not be null");
} }
mShaderUniforms.put(shaderName, shader);
nativeUpdateShader(mNativeInstanceRuntimeShaderBuilder, shaderName, nativeUpdateShader(mNativeInstanceRuntimeShaderBuilder, shaderName,
shader.getNativeInstanceWithDirectSampling()); shader.getNativeInstanceWithDirectSampling());
discardNativeInstance(); discardNativeInstance();