From 6a3c8f33e4a334ad6a14e5b0a4d469286a6d3282 Mon Sep 17 00:00:00 2001 From: David Gross Date: Tue, 17 Mar 2015 11:09:20 -0700 Subject: Add remaining new kernel invocation context query APIs rsGet*(). Bug: 18964628 Change-Id: I067eb3a7672d79f308d4c0919a7aa6cddccd0bd6 --- .../RsTest/src/com/android/rs/test/RSTestCore.java | 1 + .../src/com/android/rs/test/UT_ctxt_default.java | 60 +++++++++++++++++++ .../RsTest/src/com/android/rs/test/ctxt_default.rs | 68 ++++++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 java/tests/RsTest/src/com/android/rs/test/UT_ctxt_default.java create mode 100644 java/tests/RsTest/src/com/android/rs/test/ctxt_default.rs (limited to 'java') diff --git a/java/tests/RsTest/src/com/android/rs/test/RSTestCore.java b/java/tests/RsTest/src/com/android/rs/test/RSTestCore.java index 63a722fd..e2de83ac 100644 --- a/java/tests/RsTest/src/com/android/rs/test/RSTestCore.java +++ b/java/tests/RsTest/src/com/android/rs/test/RSTestCore.java @@ -68,6 +68,7 @@ public class RSTestCore { unitTests.add(new UT_kernel2d(this, mRes, mCtx)); // unitTests.add(new UT_kernel3d(this, mRes, mCtx)); // does not pass reliably yet unitTests.add(new UT_kernel2d_oldstyle(this, mRes, mCtx)); + unitTests.add(new UT_ctxt_default(this, mRes, mCtx)); unitTests.add(new UT_bug_char(this, mRes, mCtx)); unitTests.add(new UT_clamp(this, mRes, mCtx)); unitTests.add(new UT_clamp_relaxed(this, mRes, mCtx)); diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_ctxt_default.java b/java/tests/RsTest/src/com/android/rs/test/UT_ctxt_default.java new file mode 100644 index 00000000..9993ca4f --- /dev/null +++ b/java/tests/RsTest/src/com/android/rs/test/UT_ctxt_default.java @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.rs.test; + +import android.content.Context; +import android.content.res.Resources; +import android.renderscript.*; +import android.util.Log; + +public class UT_ctxt_default extends UnitTest { + private Resources mRes; + private Allocation A; + private Allocation B; + + protected UT_ctxt_default(RSTestCore rstc, Resources res, Context ctx) { + super(rstc, "Kernel context default", ctx); + mRes = res; + } + + private void initializeGlobals(RenderScript RS, ScriptC_ctxt_default s) { + Type.Builder typeBuilder = new Type.Builder(RS, Element.I32(RS)); + int X = 2; + s.set_gDimX(X); + typeBuilder.setX(X); + + A = Allocation.createTyped(RS, typeBuilder.create()); + s.set_A(A); + B = Allocation.createTyped(RS, typeBuilder.create()); + s.set_B(B); + return; + } + + public void run() { + RenderScript pRS = RenderScript.create(mCtx); + ScriptC_ctxt_default s = new ScriptC_ctxt_default(pRS); + pRS.setMessageHandler(mRsMessage); + initializeGlobals(pRS, s); + s.forEach_init_vars(A); + s.forEach_root(A, B); + s.invoke_verify_root(); + s.invoke_kernel_test(); + pRS.finish(); + waitForMessage(); + pRS.destroy(); + } +} diff --git a/java/tests/RsTest/src/com/android/rs/test/ctxt_default.rs b/java/tests/RsTest/src/com/android/rs/test/ctxt_default.rs new file mode 100644 index 00000000..ba86ada8 --- /dev/null +++ b/java/tests/RsTest/src/com/android/rs/test/ctxt_default.rs @@ -0,0 +1,68 @@ +#include "shared.rsh" + +rs_allocation A; +rs_allocation B; +uint32_t gDimX; +static bool failed = false; + +void init_vars(int *out) { + *out = 7; +} + +int RS_KERNEL root(int ain, rs_kernel_context ctxt, uint32_t x) { + _RS_ASSERT_EQU(rsGetArray0(ctxt), 0); + _RS_ASSERT_EQU(rsGetArray1(ctxt), 0); + _RS_ASSERT_EQU(rsGetArray2(ctxt), 0); + _RS_ASSERT_EQU(rsGetArray3(ctxt), 0); + _RS_ASSERT_EQU(rsGetFace(ctxt), RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X); + _RS_ASSERT_EQU(rsGetLod(ctxt), 0); + + _RS_ASSERT_EQU(rsGetDimY(ctxt), 0); + _RS_ASSERT_EQU(rsGetDimZ(ctxt), 0); + _RS_ASSERT_EQU(rsGetDimArray0(ctxt), 0); + _RS_ASSERT_EQU(rsGetDimArray1(ctxt), 0); + _RS_ASSERT_EQU(rsGetDimArray2(ctxt), 0); + _RS_ASSERT_EQU(rsGetDimArray3(ctxt), 0); + _RS_ASSERT_EQU(rsGetDimHasFaces(ctxt), false); + _RS_ASSERT_EQU(rsGetDimLod(ctxt), 0); + + if (!_RS_ASSERT_EQU(ain, 7)) + rsDebug("root at x", x); + uint32_t dimX = rsGetDimX(ctxt); + _RS_ASSERT_EQU(dimX, gDimX); + return ain + x; +} + +static bool test_root_output() { + bool failed = false; + int i; + + for (i = 0; i < gDimX; i++) { + int bElt = rsGetElementAt_int(B, i); + int aElt = rsGetElementAt_int(A, i); + if (!_RS_ASSERT_EQU(bElt, (aElt + i))) + rsDebug("test_root_output at i", i); + } + + if (failed) { + rsDebug("ctxt_default test_root_output FAILED", 0); + } + else { + rsDebug("ctxt_default test_root_output PASSED", 0); + } + + return failed; +} + +void verify_root() { + failed |= test_root_output(); +} + +void kernel_test() { + if (failed) { + rsSendToClientBlocking(RS_MSG_TEST_FAILED); + } + else { + rsSendToClientBlocking(RS_MSG_TEST_PASSED); + } +} -- cgit v1.2.3