From 56c079839121da5d368d4aadeaceeff558ee106b Mon Sep 17 00:00:00 2001 From: Derek Sollenberger Date: Fri, 5 Nov 2021 19:25:05 +0000 Subject: Add RuntimeShader API to RenderEffect Bug: 201546136 Test: atest CtsUiRenderingTestCases:RuntimeShaderTests Change-Id: I96ad4fcfc0486f340653878519efcc4a793191a2 --- graphics/java/android/graphics/RenderEffect.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'graphics/java') diff --git a/graphics/java/android/graphics/RenderEffect.java b/graphics/java/android/graphics/RenderEffect.java index ad4c3fe86175..b8a46856601e 100644 --- a/graphics/java/android/graphics/RenderEffect.java +++ b/graphics/java/android/graphics/RenderEffect.java @@ -290,6 +290,22 @@ public final class RenderEffect { return new RenderEffect(nativeCreateShaderEffect(shader.getNativeInstance())); } + /** + * Create a {@link RenderEffect} that executes the provided {@link RuntimeShader} and passes + * the contents of the {@link android.graphics.RenderNode} that this RenderEffect is installed + * on as an input to the shader. + * @param shader the runtime shader that will bind the inputShaderName to the RenderEffect input + * @param uniformShaderName the uniform name defined in the RuntimeShader's program to which + * the contents of the RenderNode will be bound + */ + @NonNull + public static RenderEffect createRuntimeShaderEffect( + @NonNull RuntimeShader shader, @NonNull String uniformShaderName) { + return new RenderEffect( + nativeCreateRuntimeShaderEffect(shader.getNativeShaderBuilder(), + uniformShaderName)); + } + private final long mNativeRenderEffect; /* only constructed from static factory methods */ @@ -318,5 +334,7 @@ public final class RenderEffect { private static native long nativeCreateBlendModeEffect(long dst, long src, int blendmode); private static native long nativeCreateChainEffect(long outer, long inner); private static native long nativeCreateShaderEffect(long shader); + private static native long nativeCreateRuntimeShaderEffect( + long shaderBuilder, String inputShaderName); private static native long nativeGetFinalizer(); } -- cgit v1.2.3-59-g8ed1b