1#include "RenderScript.h"
2
3using android::RSC::Allocation;
4using android::RSC::Element;
5using android::RSC::RS;
6using android::RSC::Type;
7using android::RSC::sp;
8
9static const uint32_t dimX = 7, dimY = 5, dimZ = 3;
10
11void testAllocationCreation(const sp<RS>& rs, const sp<const Element>& e, uint32_t nDims) {
12    Type::Builder tb(rs, e);
13    tb.setX(dimX);
14    if (nDims >= 2)
15        tb.setY(dimY);
16    if (nDims >= 3)
17        tb.setZ(dimZ);
18
19    sp<const Type> t = tb.create();
20    sp<Allocation> alloc = Allocation::createTyped(rs, t);
21}
22
23int main(int , char** )
24{
25    sp<RS> rs = new RS();
26
27    if (!rs->init("/system/bin")) {
28        printf("Could not initialize RenderScript\n");
29        return 1;
30    }
31
32    // Test ability to create 1D, 2D and 3D allocations of f16 scalars and
33    // vectors
34    sp<const Element> half = Element::F16(rs);
35    sp<const Element> half2 = Element::F16_2(rs);
36    sp<const Element> half3 = Element::F16_3(rs);
37    sp<const Element> half4 = Element::F16_4(rs);
38
39    for (uint32_t nDims = 1; nDims <= 3; nDims ++) {
40        testAllocationCreation(rs, half, nDims);
41        testAllocationCreation(rs, half2, nDims);
42        testAllocationCreation(rs, half3, nDims);
43        testAllocationCreation(rs, half4, nDims);
44    }
45
46    printf("Test successful!");
47}
48