1/*
2 * Copyright (C) 2013 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.rs.test_compatlegacy;
18
19import android.content.Context;
20import android.content.res.Resources;
21import android.support.v8.renderscript.*;
22
23public class UT_sampler extends UnitTest {
24    private Resources mRes;
25
26    Sampler minification;
27    Sampler magnification;
28    Sampler wrapS;
29    Sampler wrapT;
30    Sampler anisotropy;
31
32    protected UT_sampler(RSTestCore rstc, Resources res, Context ctx) {
33        super(rstc, "Sampler", ctx);
34        mRes = res;
35    }
36
37    private Sampler.Builder getDefaultBuilder(RenderScript RS) {
38        Sampler.Builder b = new Sampler.Builder(RS);
39        b.setMinification(Sampler.Value.NEAREST);
40        b.setMagnification(Sampler.Value.NEAREST);
41        b.setWrapS(Sampler.Value.CLAMP);
42        b.setWrapT(Sampler.Value.CLAMP);
43        b.setAnisotropy(1.0f);
44        return b;
45    }
46
47    private void initializeGlobals(RenderScript RS, ScriptC_sampler s) {
48        Sampler.Builder b = getDefaultBuilder(RS);
49        b.setMinification(Sampler.Value.LINEAR_MIP_LINEAR);
50        minification = b.create();
51
52        b = getDefaultBuilder(RS);
53        b.setMagnification(Sampler.Value.LINEAR);
54        magnification = b.create();
55
56        b = getDefaultBuilder(RS);
57        b.setWrapS(Sampler.Value.WRAP);
58        wrapS = b.create();
59
60        b = getDefaultBuilder(RS);
61        b.setWrapT(Sampler.Value.WRAP);
62        wrapT = b.create();
63
64        b = getDefaultBuilder(RS);
65        b.setAnisotropy(8.0f);
66        anisotropy = b.create();
67
68        s.set_minification(minification);
69        s.set_magnification(magnification);
70        s.set_wrapS(wrapS);
71        s.set_wrapT(wrapT);
72        s.set_anisotropy(anisotropy);
73    }
74
75    private void testScriptSide(RenderScript pRS) {
76        ScriptC_sampler s = new ScriptC_sampler(pRS);
77        pRS.setMessageHandler(mRsMessage);
78        initializeGlobals(pRS, s);
79        s.invoke_sampler_test();
80        pRS.finish();
81        waitForMessage();
82    }
83
84    private void testJavaSide(RenderScript RS) {
85        _RS_ASSERT("minification.getMagnification() == Sampler.Value.NEAREST",
86                    minification.getMagnification() == Sampler.Value.NEAREST);
87        _RS_ASSERT("minification.getMinification() == Sampler.Value.LINEAR_MIP_LINEAR",
88                    minification.getMinification() == Sampler.Value.LINEAR_MIP_LINEAR);
89        _RS_ASSERT("minification.getWrapS() == Sampler.Value.CLAMP",
90                    minification.getWrapS() == Sampler.Value.CLAMP);
91        _RS_ASSERT("minification.getWrapT() == Sampler.Value.CLAMP",
92                    minification.getWrapT() == Sampler.Value.CLAMP);
93        _RS_ASSERT("minification.getAnisotropy() == 1.0f",
94                    minification.getAnisotropy() == 1.0f);
95
96        _RS_ASSERT("magnification.getMagnification() == Sampler.Value.LINEAR",
97                    magnification.getMagnification() == Sampler.Value.LINEAR);
98        _RS_ASSERT("magnification.getMinification() == Sampler.Value.NEAREST",
99                    magnification.getMinification() == Sampler.Value.NEAREST);
100        _RS_ASSERT("magnification.getWrapS() == Sampler.Value.CLAMP",
101                    magnification.getWrapS() == Sampler.Value.CLAMP);
102        _RS_ASSERT("magnification.getWrapT() == Sampler.Value.CLAMP",
103                    magnification.getWrapT() == Sampler.Value.CLAMP);
104        _RS_ASSERT("magnification.getAnisotropy() == 1.0f",
105                    magnification.getAnisotropy() == 1.0f);
106
107        _RS_ASSERT("wrapS.getMagnification() == Sampler.Value.NEAREST",
108                    wrapS.getMagnification() == Sampler.Value.NEAREST);
109        _RS_ASSERT("wrapS.getMinification() == Sampler.Value.NEAREST",
110                    wrapS.getMinification() == Sampler.Value.NEAREST);
111        _RS_ASSERT("wrapS.getWrapS() == Sampler.Value.WRAP",
112                    wrapS.getWrapS() == Sampler.Value.WRAP);
113        _RS_ASSERT("wrapS.getWrapT() == Sampler.Value.CLAMP",
114                    wrapS.getWrapT() == Sampler.Value.CLAMP);
115        _RS_ASSERT("wrapS.getAnisotropy() == 1.0f",
116                    wrapS.getAnisotropy() == 1.0f);
117
118        _RS_ASSERT("wrapT.getMagnification() == Sampler.Value.NEAREST",
119                    wrapT.getMagnification() == Sampler.Value.NEAREST);
120        _RS_ASSERT("wrapT.getMinification() == Sampler.Value.NEAREST",
121                    wrapT.getMinification() == Sampler.Value.NEAREST);
122        _RS_ASSERT("wrapT.getWrapS() == Sampler.Value.CLAMP",
123                    wrapT.getWrapS() == Sampler.Value.CLAMP);
124        _RS_ASSERT("wrapT.getWrapT() == Sampler.Value.WRAP",
125                    wrapT.getWrapT() == Sampler.Value.WRAP);
126        _RS_ASSERT("wrapT.getAnisotropy() == 1.0f",
127                    wrapT.getAnisotropy() == 1.0f);
128
129        _RS_ASSERT("anisotropy.getMagnification() == Sampler.Value.NEAREST",
130                    anisotropy.getMagnification() == Sampler.Value.NEAREST);
131        _RS_ASSERT("anisotropy.getMinification() == Sampler.Value.NEAREST",
132                    anisotropy.getMinification() == Sampler.Value.NEAREST);
133        _RS_ASSERT("anisotropy.getWrapS() == Sampler.Value.CLAMP",
134                    anisotropy.getWrapS() == Sampler.Value.CLAMP);
135        _RS_ASSERT("anisotropy.getWrapT() == Sampler.Value.CLAMP",
136                    anisotropy.getWrapT() == Sampler.Value.CLAMP);
137        _RS_ASSERT("anisotropy.getAnisotropy() == 1.0f",
138                    anisotropy.getAnisotropy() == 8.0f);
139    }
140
141    public void run() {
142        RenderScript pRS = RenderScript.create(mCtx);
143        testScriptSide(pRS);
144        testJavaSide(pRS);
145        passTest();
146        pRS.destroy();
147    }
148}
149