1648a1c137663ef7207684d0d7009dd5518942111Stephen Hines/*
2648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * Copyright (C) 2013 The Android Open Source Project
3648a1c137663ef7207684d0d7009dd5518942111Stephen Hines *
4648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * Licensed under the Apache License, Version 2.0 (the "License");
5648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * you may not use this file except in compliance with the License.
6648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * You may obtain a copy of the License at
7648a1c137663ef7207684d0d7009dd5518942111Stephen Hines *
8648a1c137663ef7207684d0d7009dd5518942111Stephen Hines *      http://www.apache.org/licenses/LICENSE-2.0
9648a1c137663ef7207684d0d7009dd5518942111Stephen Hines *
10648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * Unless required by applicable law or agreed to in writing, software
11648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * distributed under the License is distributed on an "AS IS" BASIS,
12648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * See the License for the specific language governing permissions and
14648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * limitations under the License.
15648a1c137663ef7207684d0d7009dd5518942111Stephen Hines */
16648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
17648a1c137663ef7207684d0d7009dd5518942111Stephen Hinespackage com.android.rs.test_compatlegacy;
18648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
19648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport android.content.Context;
20648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport android.content.res.Resources;
21648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport android.support.v8.renderscript.*;
22648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
23648a1c137663ef7207684d0d7009dd5518942111Stephen Hinespublic class UT_sampler extends UnitTest {
24648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Resources mRes;
25648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
26648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    Sampler minification;
27648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    Sampler magnification;
28648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    Sampler wrapS;
29648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    Sampler wrapT;
30648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    Sampler anisotropy;
31648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
32648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    protected UT_sampler(RSTestCore rstc, Resources res, Context ctx) {
33648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        super(rstc, "Sampler", ctx);
34648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        mRes = res;
35648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
36648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
37648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Sampler.Builder getDefaultBuilder(RenderScript RS) {
38648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Sampler.Builder b = new Sampler.Builder(RS);
39648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        b.setMinification(Sampler.Value.NEAREST);
40648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        b.setMagnification(Sampler.Value.NEAREST);
41648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        b.setWrapS(Sampler.Value.CLAMP);
42648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        b.setWrapT(Sampler.Value.CLAMP);
43648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        b.setAnisotropy(1.0f);
44648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return b;
45648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
46648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
47648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private void initializeGlobals(RenderScript RS, ScriptC_sampler s) {
48648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        Sampler.Builder b = getDefaultBuilder(RS);
49648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        b.setMinification(Sampler.Value.LINEAR_MIP_LINEAR);
50648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        minification = b.create();
51648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
52648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        b = getDefaultBuilder(RS);
53648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        b.setMagnification(Sampler.Value.LINEAR);
54648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        magnification = b.create();
55648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
56648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        b = getDefaultBuilder(RS);
57648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        b.setWrapS(Sampler.Value.WRAP);
58648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        wrapS = b.create();
59648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
60648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        b = getDefaultBuilder(RS);
61648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        b.setWrapT(Sampler.Value.WRAP);
62648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        wrapT = b.create();
63648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
64648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        b = getDefaultBuilder(RS);
65648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        b.setAnisotropy(8.0f);
66648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        anisotropy = b.create();
67648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
68648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_minification(minification);
69648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_magnification(magnification);
70648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_wrapS(wrapS);
71648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_wrapT(wrapT);
72648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_anisotropy(anisotropy);
73648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
74648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
75648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private void testScriptSide(RenderScript pRS) {
76648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        ScriptC_sampler s = new ScriptC_sampler(pRS);
77648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        pRS.setMessageHandler(mRsMessage);
78648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        initializeGlobals(pRS, s);
79648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.invoke_sampler_test();
80648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        pRS.finish();
81648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        waitForMessage();
82648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
83648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
84648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private void testJavaSide(RenderScript RS) {
85648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("minification.getMagnification() == Sampler.Value.NEAREST",
86648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    minification.getMagnification() == Sampler.Value.NEAREST);
87648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("minification.getMinification() == Sampler.Value.LINEAR_MIP_LINEAR",
88648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    minification.getMinification() == Sampler.Value.LINEAR_MIP_LINEAR);
89648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("minification.getWrapS() == Sampler.Value.CLAMP",
90648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    minification.getWrapS() == Sampler.Value.CLAMP);
91648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("minification.getWrapT() == Sampler.Value.CLAMP",
92648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    minification.getWrapT() == Sampler.Value.CLAMP);
93648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("minification.getAnisotropy() == 1.0f",
94648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    minification.getAnisotropy() == 1.0f);
95648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
96648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("magnification.getMagnification() == Sampler.Value.LINEAR",
97648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    magnification.getMagnification() == Sampler.Value.LINEAR);
98648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("magnification.getMinification() == Sampler.Value.NEAREST",
99648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    magnification.getMinification() == Sampler.Value.NEAREST);
100648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("magnification.getWrapS() == Sampler.Value.CLAMP",
101648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    magnification.getWrapS() == Sampler.Value.CLAMP);
102648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("magnification.getWrapT() == Sampler.Value.CLAMP",
103648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    magnification.getWrapT() == Sampler.Value.CLAMP);
104648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("magnification.getAnisotropy() == 1.0f",
105648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    magnification.getAnisotropy() == 1.0f);
106648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
107648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("wrapS.getMagnification() == Sampler.Value.NEAREST",
108648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    wrapS.getMagnification() == Sampler.Value.NEAREST);
109648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("wrapS.getMinification() == Sampler.Value.NEAREST",
110648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    wrapS.getMinification() == Sampler.Value.NEAREST);
111648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("wrapS.getWrapS() == Sampler.Value.WRAP",
112648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    wrapS.getWrapS() == Sampler.Value.WRAP);
113648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("wrapS.getWrapT() == Sampler.Value.CLAMP",
114648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    wrapS.getWrapT() == Sampler.Value.CLAMP);
115648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("wrapS.getAnisotropy() == 1.0f",
116648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    wrapS.getAnisotropy() == 1.0f);
117648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
118648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("wrapT.getMagnification() == Sampler.Value.NEAREST",
119648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    wrapT.getMagnification() == Sampler.Value.NEAREST);
120648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("wrapT.getMinification() == Sampler.Value.NEAREST",
121648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    wrapT.getMinification() == Sampler.Value.NEAREST);
122648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("wrapT.getWrapS() == Sampler.Value.CLAMP",
123648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    wrapT.getWrapS() == Sampler.Value.CLAMP);
124648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("wrapT.getWrapT() == Sampler.Value.WRAP",
125648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    wrapT.getWrapT() == Sampler.Value.WRAP);
126648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("wrapT.getAnisotropy() == 1.0f",
127648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    wrapT.getAnisotropy() == 1.0f);
128648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
129648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("anisotropy.getMagnification() == Sampler.Value.NEAREST",
130648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    anisotropy.getMagnification() == Sampler.Value.NEAREST);
131648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("anisotropy.getMinification() == Sampler.Value.NEAREST",
132648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    anisotropy.getMinification() == Sampler.Value.NEAREST);
133648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("anisotropy.getWrapS() == Sampler.Value.CLAMP",
134648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    anisotropy.getWrapS() == Sampler.Value.CLAMP);
135648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("anisotropy.getWrapT() == Sampler.Value.CLAMP",
136648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    anisotropy.getWrapT() == Sampler.Value.CLAMP);
137648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        _RS_ASSERT("anisotropy.getAnisotropy() == 1.0f",
138648a1c137663ef7207684d0d7009dd5518942111Stephen Hines                    anisotropy.getAnisotropy() == 8.0f);
139648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
140648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
141648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void run() {
142648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        RenderScript pRS = RenderScript.create(mCtx);
143648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testScriptSide(pRS);
144648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        testJavaSide(pRS);
145648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        passTest();
146648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        pRS.destroy();
147648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
148648a1c137663ef7207684d0d7009dd5518942111Stephen Hines}
149