1f827cadde659212b266b9635128c98515a7dcb01Stephen Hines/*
2f827cadde659212b266b9635128c98515a7dcb01Stephen Hines * Copyright (C) 2013 The Android Open Source Project
3f827cadde659212b266b9635128c98515a7dcb01Stephen Hines *
4f827cadde659212b266b9635128c98515a7dcb01Stephen Hines * Licensed under the Apache License, Version 2.0 (the "License");
5f827cadde659212b266b9635128c98515a7dcb01Stephen Hines * you may not use this file except in compliance with the License.
6f827cadde659212b266b9635128c98515a7dcb01Stephen Hines * You may obtain a copy of the License at
7f827cadde659212b266b9635128c98515a7dcb01Stephen Hines *
8f827cadde659212b266b9635128c98515a7dcb01Stephen Hines *      http://www.apache.org/licenses/LICENSE-2.0
9f827cadde659212b266b9635128c98515a7dcb01Stephen Hines *
10f827cadde659212b266b9635128c98515a7dcb01Stephen Hines * Unless required by applicable law or agreed to in writing, software
11f827cadde659212b266b9635128c98515a7dcb01Stephen Hines * distributed under the License is distributed on an "AS IS" BASIS,
12f827cadde659212b266b9635128c98515a7dcb01Stephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f827cadde659212b266b9635128c98515a7dcb01Stephen Hines * See the License for the specific language governing permissions and
14f827cadde659212b266b9635128c98515a7dcb01Stephen Hines * limitations under the License.
15f827cadde659212b266b9635128c98515a7dcb01Stephen Hines */
16f827cadde659212b266b9635128c98515a7dcb01Stephen Hines
17f827cadde659212b266b9635128c98515a7dcb01Stephen Hinespackage com.android.rs.test_compat;
18f827cadde659212b266b9635128c98515a7dcb01Stephen Hines
19f827cadde659212b266b9635128c98515a7dcb01Stephen Hinesimport android.content.Context;
20f827cadde659212b266b9635128c98515a7dcb01Stephen Hinesimport android.content.res.Resources;
21f827cadde659212b266b9635128c98515a7dcb01Stephen Hinesimport android.support.v8.renderscript.*;
22f827cadde659212b266b9635128c98515a7dcb01Stephen Hines
23f827cadde659212b266b9635128c98515a7dcb01Stephen Hinespublic class UT_apitest extends UnitTest {
24f827cadde659212b266b9635128c98515a7dcb01Stephen Hines    private Resources mRes;
25f827cadde659212b266b9635128c98515a7dcb01Stephen Hines
26f827cadde659212b266b9635128c98515a7dcb01Stephen Hines    protected UT_apitest(RSTestCore rstc, Resources res, Context ctx) {
27f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        super(rstc, "API Test", ctx);
28f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        mRes = res;
29f827cadde659212b266b9635128c98515a7dcb01Stephen Hines    }
30f827cadde659212b266b9635128c98515a7dcb01Stephen Hines
31f827cadde659212b266b9635128c98515a7dcb01Stephen Hines    public void run() {
32f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        RenderScript pRS = RenderScript.create(mCtx);
33f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        ScriptC_apitest s = new ScriptC_apitest(pRS);
34f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        pRS.setMessageHandler(mRsMessage);
35f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        Element elem = Element.I8(pRS);
36f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        Type.Builder typeBuilder = new Type.Builder(pRS, elem);
377a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines
387a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        int x = 5;
397a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        int y = 7;
407a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        int z = 0;  // Don't actually setZ()
417a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        s.set_x(x);
427a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        s.set_y(y);
437a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        s.set_z(z);
447a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        typeBuilder.setX(x).setY(y);
45f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        Type type = typeBuilder.create();
46f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        Allocation alloc = Allocation.createTyped(pRS, type);
477a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        Allocation allocDst = Allocation.createTyped(pRS, type);
48f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        Sampler sampler = Sampler.CLAMP_NEAREST(pRS);
49f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        s.set_elemNonNull(elem);
50f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        s.set_typeNonNull(type);
51f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        s.set_allocNonNull(alloc);
527a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        s.set_allocDst(allocDst);
53f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        s.set_samplerNonNull(sampler);
54f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        s.set_scriptNonNull(s);
557a01126d25c081f5b613eea80e5ff7e6c75c940fStephen Hines        s.bind_allocPtr(alloc);
56f827cadde659212b266b9635128c98515a7dcb01Stephen Hines
57f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        s.invoke_api_test();
58f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        pRS.finish();
59f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        waitForMessage();
60f827cadde659212b266b9635128c98515a7dcb01Stephen Hines        pRS.destroy();
61f827cadde659212b266b9635128c98515a7dcb01Stephen Hines    }
62f827cadde659212b266b9635128c98515a7dcb01Stephen Hines}
63