diff options
author | Jeff Vander Stoep <jeffv@google.com> | 2019-07-12 10:29:52 -0700 |
---|---|---|
committer | Jeffrey Vander Stoep <jeffv@google.com> | 2019-07-17 21:47:56 +0000 |
commit | f539a140c0b006d7483f00caca25d47715df8987 (patch) | |
tree | e4e0091061fdebe5a599fc4c18e325b982781bad /tests/java_api/RSUnitTests/src/com/android/rs/unittest/fp16.rscript | |
parent | b3857425e3523e855521ab28e7ad7316960bca3f (diff) | |
download | rs-f539a140c0b006d7483f00caca25d47715df8987.tar.gz |
Renderscript: rename .rs extension to .rscript
Reserve .rs extension for Rust.
Bug: 137365032
Test: make checkbuild
Test: cd frameworks/compile/slang/tests
./slang_tests.py
Test: atest CtsRenderscriptTestCases
Test: CtsRsCppTestCases
Exempt-From-Owner-Approval: Clean CP
Change-Id: I88b87b253ddb63ba4a4946d185ef76a553ba6fee
Merged-In: I88b87b253ddb63ba4a4946d185ef76a553ba6fee
(cherry picked from commit ab7b68cabd2a98b500edc2a0f8977a3f737f5cde)
Diffstat (limited to 'tests/java_api/RSUnitTests/src/com/android/rs/unittest/fp16.rscript')
-rw-r--r-- | tests/java_api/RSUnitTests/src/com/android/rs/unittest/fp16.rscript | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/tests/java_api/RSUnitTests/src/com/android/rs/unittest/fp16.rscript b/tests/java_api/RSUnitTests/src/com/android/rs/unittest/fp16.rscript new file mode 100644 index 00000000..0e01b9aa --- /dev/null +++ b/tests/java_api/RSUnitTests/src/com/android/rs/unittest/fp16.rscript @@ -0,0 +1,150 @@ +/* + * Copyright (C) 2017 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. + */ + +#include "shared.rsh" + +rs_allocation gAlloc; +static bool failed = false; + +static half gStart = 12.0f; +static half gIncr = 0.125; +int gDimX; +int gDimY; +int gDimZ; + +static half ElementAt_half(int x, int y, int z) { + return gStart + x + y * gDimX + z * gDimX * gDimY; +} + +static half2 ElementAt_half2(int x, int y, int z) { + half r = gStart + x + y * gDimX + z * gDimX * gDimY; + half2 ret = {r, r + gIncr}; + return ret; +} + +static half3 ElementAt_half3(int x, int y, int z) { + half r = gStart + x + y * gDimX + z * gDimX * gDimY; + half3 ret = {r, r + gIncr, r + gIncr * 2}; + return ret; +} + +static half4 ElementAt_half4(int x, int y, int z) { + half r = gStart + x + y * gDimX + z * gDimX * gDimY; + half4 ret = {r, r + gIncr, r + gIncr * 2, r + gIncr * 3}; + return ret; +} + +static void compare_half(half x, half y) { + _RS_ASSERT_EQU(x, y); + if (x != y) { + rsDebug("Different half values: ", x, y); + } +} + +static void compare_half2(half2 x, half2 y) { + _RS_ASSERT_EQU(x.r, y.r); + _RS_ASSERT_EQU(x.g, y.g); + if (x.r != y.r || x.g != y.g) { + rsDebug("Different half vectors v1: ", x.r, x.g); + rsDebug(" v2: ", y.r, y.g); + } +} + +static void compare_half3(half3 x, half3 y) { + _RS_ASSERT_EQU(x.r, y.r); + _RS_ASSERT_EQU(x.g, y.g); + _RS_ASSERT_EQU(x.b, y.b); + if (x.r != y.r || x.g != y.g || x.b != y.b) { + rsDebug("Different half vectors v1: ", x.r, x.g, x.b); + rsDebug(" v2: ", y.r, y.g, y.b); + } +} + +static void compare_half4(half4 x, half4 y) { + _RS_ASSERT_EQU(x.r, y.r); + _RS_ASSERT_EQU(x.g, y.g); + _RS_ASSERT_EQU(x.b, y.b); + _RS_ASSERT_EQU(x.a, y.a); + if (x.r != y.r || x.g != y.g || x.b != y.b || x.a != y.a) { + rsDebug("Different half vectors v1: ", x.r, x.g, x.b, x.a); + rsDebug(" v2: ", y.r, y.g, x.b, x.a); + } +} + +#define SET_KERNEL(T) \ + T RS_KERNEL set_kernel_##T(int x, int y, int z) { \ + return ElementAt_##T(x, y, z); \ + } + +SET_KERNEL(half) +SET_KERNEL(half2) +SET_KERNEL(half3) +SET_KERNEL(half4) + +#define INVOKE_SET(T) \ + void set_##T() { \ + int yEnd = (gDimY != 0) ? gDimY: 1; \ + int zEnd = (gDimZ != 0) ? gDimZ: 1; \ + for (int x=0; x < gDimX; x ++) \ + for (int y=0; y < yEnd; y++) \ + for (int z=0; z < zEnd; z++) \ + rsSetElementAt_##T(gAlloc, ElementAt_##T(x, y, z), \ + x, y, z); \ + } + +INVOKE_SET(half) +INVOKE_SET(half2) +INVOKE_SET(half3) +INVOKE_SET(half4) + +#define VERIFY_KERNEL(T) \ + void RS_KERNEL verify_kernel_##T(T val, int x, int y, int z) { \ + compare_##T(val, ElementAt_##T(x, y, z)); \ + } + +VERIFY_KERNEL(half); +VERIFY_KERNEL(half2); +VERIFY_KERNEL(half3); +VERIFY_KERNEL(half4); + +#define INVOKE_VERIFY(T) \ + void verify_##T() { \ + int yEnd = (gDimY != 0) ? gDimY: 1; \ + int zEnd = (gDimZ != 0) ? gDimZ: 1; \ + for (int x=0; x < gDimX; x ++) { \ + for (int y=0; y < yEnd; y++) { \ + for (int z=0; z < zEnd; z++) { \ + T val = rsGetElementAt_##T(gAlloc, x, y, z); \ + compare_##T(val, ElementAt_##T(x, y, z)); \ + } \ + } \ + } \ + } + +INVOKE_VERIFY(half) +INVOKE_VERIFY(half2) +INVOKE_VERIFY(half3) +INVOKE_VERIFY(half4) + +void fp16_test() { + if (failed) { + rsSendToClientBlocking(RS_MSG_TEST_FAILED); + } + else { + rsSendToClientBlocking(RS_MSG_TEST_PASSED); + } +} + |