Add tests and missing functions for rs_allocation APIs. This change also adds some missing support library functions: rsAllocationCopy1DRange() rsAllocationCopy2DRange() rsAllocationIoSend() rsAllocationIoReceive() Change-Id: Ia50773d767f78f3cfa2cfdf0340d8c3d9cdb0991
diff --git a/driver/rsdRuntimeStubs.cpp b/driver/rsdRuntimeStubs.cpp index 4788a12..2a3ebc9 100644 --- a/driver/rsdRuntimeStubs.cpp +++ b/driver/rsdRuntimeStubs.cpp
@@ -84,6 +84,10 @@ OPAQUETYPE(rs_script_call) #undef OPAQUETYPE +typedef enum { + // Empty to avoid conflicting definitions with RsAllocationCubemapFace +} rs_allocation_cubemap_face; + typedef struct { int tm_sec; ///< seconds int tm_min; ///< minutes @@ -138,7 +142,6 @@ srcXoff, srcYoff, srcMip, srcFace); } -#ifndef RS_COMPATIBILITY_LIB static void SC_AllocationIoSend(Allocation *alloc) { Context *rsc = RsdCpuReference::getTlsContext(); rsrAllocationIoSend(rsc, alloc); @@ -150,7 +153,7 @@ rsrAllocationIoReceive(rsc, alloc); } - +#ifndef RS_COMPATIBILITY_LIB ////////////////////////////////////////////////////////////////////////////// // Context @@ -1244,6 +1247,38 @@ return SC_GetAllocation(ptr); } +void __attribute__((overloadable)) rsAllocationIoSend(rs_allocation a) { + SC_AllocationIoSend((Allocation *)a.p); +} + +void __attribute__((overloadable)) rsAllocationIoReceive(rs_allocation a) { + SC_AllocationIoReceive((Allocation *)a.p); +} + + +void __attribute__((overloadable)) rsAllocationCopy1DRange( + rs_allocation dstAlloc, + uint32_t dstOff, uint32_t dstMip, uint32_t count, + rs_allocation srcAlloc, + uint32_t srcOff, uint32_t srcMip) { + SC_AllocationCopy1DRange((Allocation *)dstAlloc.p, dstOff, dstMip, count, + (Allocation *)srcAlloc.p, srcOff, srcMip); +} + +void __attribute__((overloadable)) rsAllocationCopy2DRange( + rs_allocation dstAlloc, + uint32_t dstXoff, uint32_t dstYoff, + uint32_t dstMip, rs_allocation_cubemap_face dstFace, + uint32_t width, uint32_t height, + rs_allocation srcAlloc, + uint32_t srcXoff, uint32_t srcYoff, + uint32_t srcMip, rs_allocation_cubemap_face srcFace) { + SC_AllocationCopy2DRange((Allocation *)dstAlloc.p, dstXoff, dstYoff, + dstMip, dstFace, width, height, + (Allocation *)srcAlloc.p, srcXoff, srcYoff, + srcMip, srcFace); +} + void __attribute__((overloadable)) rsForEach(rs_script script, rs_allocation in, rs_allocation out,
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_apitest.java b/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_apitest.java index 6c5a1ce..1b2cd05 100644 --- a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_apitest.java +++ b/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_apitest.java
@@ -34,15 +34,25 @@ pRS.setMessageHandler(mRsMessage); Element elem = Element.I8(pRS); Type.Builder typeBuilder = new Type.Builder(pRS, elem); - typeBuilder.setX(1); + + int x = 5; + int y = 7; + int z = 0; // Don't actually setZ() + s.set_x(x); + s.set_y(y); + s.set_z(z); + typeBuilder.setX(x).setY(y); Type type = typeBuilder.create(); Allocation alloc = Allocation.createTyped(pRS, type); + Allocation allocDst = Allocation.createTyped(pRS, type); Sampler sampler = Sampler.CLAMP_NEAREST(pRS); s.set_elemNonNull(elem); s.set_typeNonNull(type); s.set_allocNonNull(alloc); + s.set_allocDst(allocDst); s.set_samplerNonNull(sampler); s.set_scriptNonNull(s); + s.bind_allocPtr(alloc); s.invoke_api_test(); pRS.finish();
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/apitest.rs b/java/tests/RSTest_CompatLib/src/com/android/rs/test/apitest.rs index 9499cbd..ae46f14 100644 --- a/java/tests/RSTest_CompatLib/src/com/android/rs/test/apitest.rs +++ b/java/tests/RSTest_CompatLib/src/com/android/rs/test/apitest.rs
@@ -1,5 +1,9 @@ #include "shared.rsh" +uint32_t x; +uint32_t y; +uint32_t z; + rs_element elemNull; rs_element elemNonNull; rs_type typeNull; @@ -11,6 +15,374 @@ rs_script scriptNull; rs_script scriptNonNull; +char *allocPtr; +rs_allocation allocDst; + +volatile char c; +volatile char2 c2; +volatile char3 c3; +volatile char4 c4; +volatile uchar uc; +volatile uchar2 uc2; +volatile uchar3 uc3; +volatile uchar4 uc4; +volatile short s; +volatile short2 s2; +volatile short3 s3; +volatile short4 s4; +volatile ushort us; +volatile ushort2 us2; +volatile ushort3 us3; +volatile ushort4 us4; +volatile int i; +volatile int2 i2; +volatile int3 i3; +volatile int4 i4; +volatile uint ui; +volatile uint2 ui2; +volatile uint3 ui3; +volatile uint4 ui4; +volatile long l; +volatile long2 l2; +volatile long3 l3; +volatile long4 l4; +volatile ulong ul; +volatile ulong2 ul2; +volatile ulong3 ul3; +volatile ulong4 ul4; +volatile float f; +volatile float2 f2; +volatile float3 f3; +volatile float4 f4; +volatile double d; +volatile double2 d2; +volatile double3 d3; +volatile double4 d4; + +rs_allocation aChar; +rs_allocation aChar2; +rs_allocation aChar3; +rs_allocation aChar4; +rs_allocation aUChar; +rs_allocation aUChar2; +rs_allocation aUChar3; +rs_allocation aUChar4; +rs_allocation aShort; +rs_allocation aShort2; +rs_allocation aShort3; +rs_allocation aShort4; +rs_allocation aUShort; +rs_allocation aUShort2; +rs_allocation aUShort3; +rs_allocation aUShort4; +rs_allocation aInt; +rs_allocation aInt2; +rs_allocation aInt3; +rs_allocation aInt4; +rs_allocation aUInt; +rs_allocation aUInt2; +rs_allocation aUInt3; +rs_allocation aUInt4; +rs_allocation aLong; +rs_allocation aLong2; +rs_allocation aLong3; +rs_allocation aLong4; +rs_allocation aULong; +rs_allocation aULong2; +rs_allocation aULong3; +rs_allocation aULong4; +rs_allocation aFloat; +rs_allocation aFloat2; +rs_allocation aFloat3; +rs_allocation aFloat4; +rs_allocation aDouble; +rs_allocation aDouble2; +rs_allocation aDouble3; +rs_allocation aDouble4; + +// This function just checks that all of the called functions are +// able to be linked. It is not intended to be executed! +void check_api_presence() { + /******************************** + * DO NOT EXECUTE THIS FUNCTION * + ********************************/ + rsSendToClientBlocking(RS_MSG_TEST_FAILED); + + c = rsGetElementAt_char(aChar, 0); + rsSetElementAt_char(aChar, c, 0); + c = rsGetElementAt_char(aChar, 0, 0); + rsSetElementAt_char(aChar, c, 0, 0); + c = rsGetElementAt_char(aChar, 0, 0, 0); + rsSetElementAt_char(aChar, c, 0, 0, 0); + c2 = rsGetElementAt_char2(aChar2, 0); + rsSetElementAt_char2(aChar2, c2, 0); + c2 = rsGetElementAt_char2(aChar2, 0, 0); + rsSetElementAt_char2(aChar2, c2, 0, 0); + c2 = rsGetElementAt_char2(aChar2, 0, 0, 0); + rsSetElementAt_char2(aChar2, c2, 0, 0, 0); + c3 = rsGetElementAt_char3(aChar3, 0); + rsSetElementAt_char3(aChar3, c3, 0); + c3 = rsGetElementAt_char3(aChar3, 0, 0); + rsSetElementAt_char3(aChar3, c3, 0, 0); + c3 = rsGetElementAt_char3(aChar3, 0, 0, 0); + rsSetElementAt_char3(aChar3, c3, 0, 0, 0); + c4 = rsGetElementAt_char4(aChar4, 0); + rsSetElementAt_char4(aChar4, c4, 0); + c4 = rsGetElementAt_char4(aChar4, 0, 0); + rsSetElementAt_char4(aChar4, c4, 0, 0); + c4 = rsGetElementAt_char4(aChar4, 0, 0, 0); + rsSetElementAt_char4(aChar4, c4, 0, 0, 0); + + uc = rsGetElementAt_uchar(aUChar, 0); + rsSetElementAt_uchar(aUChar, uc, 0); + uc = rsGetElementAt_uchar(aUChar, 0, 0); + rsSetElementAt_uchar(aUChar, uc, 0, 0); + uc = rsGetElementAt_uchar(aUChar, 0, 0, 0); + rsSetElementAt_uchar(aUChar, uc, 0, 0, 0); + uc2 = rsGetElementAt_uchar2(aUChar2, 0); + rsSetElementAt_uchar2(aUChar2, uc2, 0); + uc2 = rsGetElementAt_uchar2(aUChar2, 0, 0); + rsSetElementAt_uchar2(aUChar2, uc2, 0, 0); + uc2 = rsGetElementAt_uchar2(aUChar2, 0, 0, 0); + rsSetElementAt_uchar2(aUChar2, uc2, 0, 0, 0); + uc3 = rsGetElementAt_uchar3(aUChar3, 0); + rsSetElementAt_uchar3(aUChar3, uc3, 0); + uc3 = rsGetElementAt_uchar3(aUChar3, 0, 0); + rsSetElementAt_uchar3(aUChar3, uc3, 0, 0); + uc3 = rsGetElementAt_uchar3(aUChar3, 0, 0, 0); + rsSetElementAt_uchar3(aUChar3, uc3, 0, 0, 0); + uc4 = rsGetElementAt_uchar4(aUChar4, 0); + rsSetElementAt_uchar4(aUChar4, uc4, 0); + uc4 = rsGetElementAt_uchar4(aUChar4, 0, 0); + rsSetElementAt_uchar4(aUChar4, uc4, 0, 0); + uc4 = rsGetElementAt_uchar4(aUChar4, 0, 0, 0); + rsSetElementAt_uchar4(aUChar4, uc4, 0, 0, 0); + + s = rsGetElementAt_short(aShort, 0); + rsSetElementAt_short(aShort, s, 0); + s = rsGetElementAt_short(aShort, 0, 0); + rsSetElementAt_short(aShort, s, 0, 0); + s = rsGetElementAt_short(aShort, 0, 0, 0); + rsSetElementAt_short(aShort, s, 0, 0, 0); + s2 = rsGetElementAt_short2(aShort2, 0); + rsSetElementAt_short2(aShort2, s2, 0); + s2 = rsGetElementAt_short2(aShort2, 0, 0); + rsSetElementAt_short2(aShort2, s2, 0, 0); + s2 = rsGetElementAt_short2(aShort2, 0, 0, 0); + rsSetElementAt_short2(aShort2, s2, 0, 0, 0); + s3 = rsGetElementAt_short3(aShort3, 0); + rsSetElementAt_short3(aShort3, s3, 0); + s3 = rsGetElementAt_short3(aShort3, 0, 0); + rsSetElementAt_short3(aShort3, s3, 0, 0); + s3 = rsGetElementAt_short3(aShort3, 0, 0, 0); + rsSetElementAt_short3(aShort3, s3, 0, 0, 0); + s4 = rsGetElementAt_short4(aShort4, 0); + rsSetElementAt_short4(aShort4, s4, 0); + s4 = rsGetElementAt_short4(aShort4, 0, 0); + rsSetElementAt_short4(aShort4, s4, 0, 0); + s4 = rsGetElementAt_short4(aShort4, 0, 0, 0); + rsSetElementAt_short4(aShort4, s4, 0, 0, 0); + + us = rsGetElementAt_ushort(aUShort, 0); + rsSetElementAt_ushort(aUShort, us, 0); + us = rsGetElementAt_ushort(aUShort, 0, 0); + rsSetElementAt_ushort(aUShort, us, 0, 0); + us = rsGetElementAt_ushort(aUShort, 0, 0, 0); + rsSetElementAt_ushort(aUShort, us, 0, 0, 0); + us2 = rsGetElementAt_ushort2(aUShort2, 0); + rsSetElementAt_ushort2(aUShort2, us2, 0); + us2 = rsGetElementAt_ushort2(aUShort2, 0, 0); + rsSetElementAt_ushort2(aUShort2, us2, 0, 0); + us2 = rsGetElementAt_ushort2(aUShort2, 0, 0, 0); + rsSetElementAt_ushort2(aUShort2, us2, 0, 0, 0); + us3 = rsGetElementAt_ushort3(aUShort3, 0); + rsSetElementAt_ushort3(aUShort3, us3, 0); + us3 = rsGetElementAt_ushort3(aUShort3, 0, 0); + rsSetElementAt_ushort3(aUShort3, us3, 0, 0); + us3 = rsGetElementAt_ushort3(aUShort3, 0, 0, 0); + rsSetElementAt_ushort3(aUShort3, us3, 0, 0, 0); + us4 = rsGetElementAt_ushort4(aUShort4, 0); + rsSetElementAt_ushort4(aUShort4, us4, 0); + us4 = rsGetElementAt_ushort4(aUShort4, 0, 0); + rsSetElementAt_ushort4(aUShort4, us4, 0, 0); + us4 = rsGetElementAt_ushort4(aUShort4, 0, 0, 0); + rsSetElementAt_ushort4(aUShort4, us4, 0, 0, 0); + + i = rsGetElementAt_int(aInt, 0); + rsSetElementAt_int(aInt, i, 0); + i = rsGetElementAt_int(aInt, 0, 0); + rsSetElementAt_int(aInt, i, 0, 0); + i = rsGetElementAt_int(aInt, 0, 0, 0); + rsSetElementAt_int(aInt, i, 0, 0, 0); + i2 = rsGetElementAt_int2(aInt2, 0); + rsSetElementAt_int2(aInt2, i2, 0); + i2 = rsGetElementAt_int2(aInt2, 0, 0); + rsSetElementAt_int2(aInt2, i2, 0, 0); + i2 = rsGetElementAt_int2(aInt2, 0, 0, 0); + rsSetElementAt_int2(aInt2, i2, 0, 0, 0); + i3 = rsGetElementAt_int3(aInt3, 0); + rsSetElementAt_int3(aInt3, i3, 0); + i3 = rsGetElementAt_int3(aInt3, 0, 0); + rsSetElementAt_int3(aInt3, i3, 0, 0); + i3 = rsGetElementAt_int3(aInt3, 0, 0, 0); + rsSetElementAt_int3(aInt3, i3, 0, 0, 0); + i4 = rsGetElementAt_int4(aInt4, 0); + rsSetElementAt_int4(aInt4, i4, 0); + i4 = rsGetElementAt_int4(aInt4, 0, 0); + rsSetElementAt_int4(aInt4, i4, 0, 0); + i4 = rsGetElementAt_int4(aInt4, 0, 0, 0); + rsSetElementAt_int4(aInt4, i4, 0, 0, 0); + + ui = rsGetElementAt_uint(aUInt, 0); + rsSetElementAt_uint(aUInt, ui, 0); + ui = rsGetElementAt_uint(aUInt, 0, 0); + rsSetElementAt_uint(aUInt, ui, 0, 0); + ui = rsGetElementAt_uint(aUInt, 0, 0, 0); + rsSetElementAt_uint(aUInt, ui, 0, 0, 0); + ui2 = rsGetElementAt_uint2(aUInt2, 0); + rsSetElementAt_uint2(aUInt2, ui2, 0); + ui2 = rsGetElementAt_uint2(aUInt2, 0, 0); + rsSetElementAt_uint2(aUInt2, ui2, 0, 0); + ui2 = rsGetElementAt_uint2(aUInt2, 0, 0, 0); + rsSetElementAt_uint2(aUInt2, ui2, 0, 0, 0); + ui3 = rsGetElementAt_uint3(aUInt3, 0); + rsSetElementAt_uint3(aUInt3, ui3, 0); + ui3 = rsGetElementAt_uint3(aUInt3, 0, 0); + rsSetElementAt_uint3(aUInt3, ui3, 0, 0); + ui3 = rsGetElementAt_uint3(aUInt3, 0, 0, 0); + rsSetElementAt_uint3(aUInt3, ui3, 0, 0, 0); + ui4 = rsGetElementAt_uint4(aUInt4, 0); + rsSetElementAt_uint4(aUInt4, ui4, 0); + ui4 = rsGetElementAt_uint4(aUInt4, 0, 0); + rsSetElementAt_uint4(aUInt4, ui4, 0, 0); + ui4 = rsGetElementAt_uint4(aUInt4, 0, 0, 0); + rsSetElementAt_uint4(aUInt4, ui4, 0, 0, 0); + + l = rsGetElementAt_long(aLong, 0); + rsSetElementAt_long(aLong, l, 0); + l = rsGetElementAt_long(aLong, 0, 0); + rsSetElementAt_long(aLong, l, 0, 0); + l = rsGetElementAt_long(aLong, 0, 0, 0); + rsSetElementAt_long(aLong, l, 0, 0, 0); + l2 = rsGetElementAt_long2(aLong2, 0); + rsSetElementAt_long2(aLong2, l2, 0); + l2 = rsGetElementAt_long2(aLong2, 0, 0); + rsSetElementAt_long2(aLong2, l2, 0, 0); + l2 = rsGetElementAt_long2(aLong2, 0, 0, 0); + rsSetElementAt_long2(aLong2, l2, 0, 0, 0); + l3 = rsGetElementAt_long3(aLong3, 0); + rsSetElementAt_long3(aLong3, l3, 0); + l3 = rsGetElementAt_long3(aLong3, 0, 0); + rsSetElementAt_long3(aLong3, l3, 0, 0); + l3 = rsGetElementAt_long3(aLong3, 0, 0, 0); + rsSetElementAt_long3(aLong3, l3, 0, 0, 0); + l4 = rsGetElementAt_long4(aLong4, 0); + rsSetElementAt_long4(aLong4, l4, 0); + l4 = rsGetElementAt_long4(aLong4, 0, 0); + rsSetElementAt_long4(aLong4, l4, 0, 0); + l4 = rsGetElementAt_long4(aLong4, 0, 0, 0); + rsSetElementAt_long4(aLong4, l4, 0, 0, 0); + + ul = rsGetElementAt_ulong(aULong, 0); + rsSetElementAt_ulong(aULong, ul, 0); + ul = rsGetElementAt_ulong(aULong, 0, 0); + rsSetElementAt_ulong(aULong, ul, 0, 0); + ul = rsGetElementAt_ulong(aULong, 0, 0, 0); + rsSetElementAt_ulong(aULong, ul, 0, 0, 0); + ul2 = rsGetElementAt_ulong2(aULong2, 0); + rsSetElementAt_ulong2(aULong2, ul2, 0); + ul2 = rsGetElementAt_ulong2(aULong2, 0, 0); + rsSetElementAt_ulong2(aULong2, ul2, 0, 0); + ul2 = rsGetElementAt_ulong2(aULong2, 0, 0, 0); + rsSetElementAt_ulong2(aULong2, ul2, 0, 0, 0); + ul3 = rsGetElementAt_ulong3(aULong3, 0); + rsSetElementAt_ulong3(aULong3, ul3, 0); + ul3 = rsGetElementAt_ulong3(aULong3, 0, 0); + rsSetElementAt_ulong3(aULong3, ul3, 0, 0); + ul3 = rsGetElementAt_ulong3(aULong3, 0, 0, 0); + rsSetElementAt_ulong3(aULong3, ul3, 0, 0, 0); + ul4 = rsGetElementAt_ulong4(aULong4, 0); + rsSetElementAt_ulong4(aULong4, ul4, 0); + ul4 = rsGetElementAt_ulong4(aULong4, 0, 0); + rsSetElementAt_ulong4(aULong4, ul4, 0, 0); + ul4 = rsGetElementAt_ulong4(aULong4, 0, 0, 0); + rsSetElementAt_ulong4(aULong4, ul4, 0, 0, 0); + + f = rsGetElementAt_float(aFloat, 0); + rsSetElementAt_float(aFloat, f, 0); + f = rsGetElementAt_float(aFloat, 0, 0); + rsSetElementAt_float(aFloat, f, 0, 0); + f = rsGetElementAt_float(aFloat, 0, 0, 0); + rsSetElementAt_float(aFloat, f, 0, 0, 0); + f2 = rsGetElementAt_float2(aFloat2, 0); + rsSetElementAt_float2(aFloat2, f2, 0); + f2 = rsGetElementAt_float2(aFloat2, 0, 0); + rsSetElementAt_float2(aFloat2, f2, 0, 0); + f2 = rsGetElementAt_float2(aFloat2, 0, 0, 0); + rsSetElementAt_float2(aFloat2, f2, 0, 0, 0); + f3 = rsGetElementAt_float3(aFloat3, 0); + rsSetElementAt_float3(aFloat3, f3, 0); + f3 = rsGetElementAt_float3(aFloat3, 0, 0); + rsSetElementAt_float3(aFloat3, f3, 0, 0); + f3 = rsGetElementAt_float3(aFloat3, 0, 0, 0); + rsSetElementAt_float3(aFloat3, f3, 0, 0, 0); + f4 = rsGetElementAt_float4(aFloat4, 0); + rsSetElementAt_float4(aFloat4, f4, 0); + f4 = rsGetElementAt_float4(aFloat4, 0, 0); + rsSetElementAt_float4(aFloat4, f4, 0, 0); + f4 = rsGetElementAt_float4(aFloat4, 0, 0, 0); + rsSetElementAt_float4(aFloat4, f4, 0, 0, 0); + + d = rsGetElementAt_double(aDouble, 0); + rsSetElementAt_double(aDouble, d, 0); + d = rsGetElementAt_double(aDouble, 0, 0); + rsSetElementAt_double(aDouble, d, 0, 0); + d = rsGetElementAt_double(aDouble, 0, 0, 0); + rsSetElementAt_double(aDouble, d, 0, 0, 0); + d2 = rsGetElementAt_double2(aDouble2, 0); + rsSetElementAt_double2(aDouble2, d2, 0); + d2 = rsGetElementAt_double2(aDouble2, 0, 0); + rsSetElementAt_double2(aDouble2, d2, 0, 0); + d2 = rsGetElementAt_double2(aDouble2, 0, 0, 0); + rsSetElementAt_double2(aDouble2, d2, 0, 0, 0); + d3 = rsGetElementAt_double3(aDouble3, 0); + rsSetElementAt_double3(aDouble3, d3, 0); + d3 = rsGetElementAt_double3(aDouble3, 0, 0); + rsSetElementAt_double3(aDouble3, d3, 0, 0); + d3 = rsGetElementAt_double3(aDouble3, 0, 0, 0); + rsSetElementAt_double3(aDouble3, d3, 0, 0, 0); + d4 = rsGetElementAt_double4(aDouble4, 0); + rsSetElementAt_double4(aDouble4, d4, 0); + d4 = rsGetElementAt_double4(aDouble4, 0, 0); + rsSetElementAt_double4(aDouble4, d4, 0, 0); + d4 = rsGetElementAt_double4(aDouble4, 0, 0, 0); + rsSetElementAt_double4(aDouble4, d4, 0, 0, 0); + + uc3.x = rsGetElementAtYuv_uchar_Y(aUChar4, 0, 0); + uc3.y = rsGetElementAtYuv_uchar_U(aUChar4, 0, 0); + uc3.z = rsGetElementAtYuv_uchar_V(aUChar4, 0, 0); + + c3.x = *(char*)rsGetElementAt(aChar3, 0); + c3.y = *(char*)rsGetElementAt(aChar3, 0, 0); + c3.z = *(char*)rsGetElementAt(aChar3, 0, 0, 0); + + rsAllocationIoSend(aInt); + rsAllocationIoReceive(aInt); + + elemNonNull = rsAllocationGetElement(aInt); + + rsAllocationCopy1DRange(allocDst, 0, 0, 0, allocDst, 0, 0); + rsAllocationCopy2DRange(allocDst, 0, 0, 0, 0, 0, 0, allocDst, 0, 0, 0, 0); + + // rsSample routines + f4 += rsSample(allocDst, samplerNonNull, f); + f4 += rsSample(allocDst, samplerNonNull, f, f); + f4 += rsSample(allocDst, samplerNonNull, f2); + f4 += rsSample(allocDst, samplerNonNull, f2, f); + /******************************** + * DO NOT EXECUTE THIS FUNCTION * + ********************************/ +} static bool test_obj_api() { bool failed = false; @@ -60,9 +432,36 @@ return failed; } + +static bool test_rs_alloc_api() { + bool failed = false; + rs_allocation a = rsGetAllocation(allocPtr); + _RS_ASSERT(rsIsObject(a)); + _RS_ASSERT(rsAllocationGetDimX(a) == x); + _RS_ASSERT(rsAllocationGetDimY(a) == y); + _RS_ASSERT(rsAllocationGetDimZ(a) == z); + _RS_ASSERT(rsAllocationGetDimLOD(a) == 0); + _RS_ASSERT(rsAllocationGetDimFaces(a) == 0); + + rsSetElementAt_char(a, 5, 1, 0); + rsAllocationCopy1DRange(allocDst, 0, 0, x, a, 0, 0); + _RS_ASSERT(rsGetElementAt_char(allocDst, 1, 0) == 5); + + if (failed) { + rsDebug("test_obj_api FAILED", -1); + } + else { + rsDebug("test_obj_api PASSED", 0); + } + + return failed; +} + + void api_test() { bool failed = false; failed |= test_obj_api(); + failed |= test_rs_alloc_api(); if (failed) { rsSendToClientBlocking(RS_MSG_TEST_FAILED);
diff --git a/rsRuntime.h b/rsRuntime.h index 1d81ffb..be78245 100644 --- a/rsRuntime.h +++ b/rsRuntime.h
@@ -109,11 +109,11 @@ void rsrBindFont(Context *, Font *); void rsrFontColor(Context *, float r, float g, float b, float a); +#endif + void rsrAllocationIoSend(Context *, Allocation *); void rsrAllocationIoReceive(Context *, Allocation *); -#endif - ////////////////////////////////////////////////////////////////////////////// // Time routines //////////////////////////////////////////////////////////////////////////////