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