1/*
2 * Copyright (C) 2017 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.unittest;
18
19import android.content.Context;
20import android.renderscript.RenderScript;
21import android.renderscript.Sampler;
22
23public class UT_sampler extends UnitTest {
24    Sampler minification;
25    Sampler magnification;
26    Sampler wrapS;
27    Sampler wrapT;
28    Sampler anisotropy;
29
30    public UT_sampler(Context ctx) {
31        super("Sampler", ctx);
32    }
33
34    private Sampler.Builder getDefaultBuilder(RenderScript RS) {
35        Sampler.Builder b = new Sampler.Builder(RS);
36        b.setMinification(Sampler.Value.NEAREST);
37        b.setMagnification(Sampler.Value.NEAREST);
38        b.setWrapS(Sampler.Value.CLAMP);
39        b.setWrapT(Sampler.Value.CLAMP);
40        b.setAnisotropy(1.0f);
41        return b;
42    }
43
44    private void initializeGlobals(RenderScript RS, ScriptC_sampler s) {
45        Sampler.Builder b = getDefaultBuilder(RS);
46        b.setMinification(Sampler.Value.LINEAR_MIP_LINEAR);
47        minification = b.create();
48
49        b = getDefaultBuilder(RS);
50        b.setMagnification(Sampler.Value.LINEAR);
51        magnification = b.create();
52
53        b = getDefaultBuilder(RS);
54        b.setWrapS(Sampler.Value.WRAP);
55        wrapS = b.create();
56
57        b = getDefaultBuilder(RS);
58        b.setWrapT(Sampler.Value.WRAP);
59        wrapT = b.create();
60
61        b = getDefaultBuilder(RS);
62        b.setAnisotropy(8.0f);
63        anisotropy = b.create();
64
65        s.set_minification(minification);
66        s.set_magnification(magnification);
67        s.set_wrapS(wrapS);
68        s.set_wrapT(wrapT);
69        s.set_anisotropy(anisotropy);
70    }
71
72    private void testScriptSide(RenderScript pRS) {
73        ScriptC_sampler s = new ScriptC_sampler(pRS);
74        initializeGlobals(pRS, s);
75        s.invoke_sampler_test();
76        pRS.finish();
77        s.destroy();
78    }
79
80    private void testJavaSide(RenderScript pRS) {
81        _RS_ASSERT("minification.getMagnification() == Sampler.Value.NEAREST",
82                minification.getMagnification() == Sampler.Value.NEAREST);
83        _RS_ASSERT("minification.getMinification() == Sampler.Value.LINEAR_MIP_LINEAR",
84                minification.getMinification() == Sampler.Value.LINEAR_MIP_LINEAR);
85        _RS_ASSERT("minification.getWrapS() == Sampler.Value.CLAMP",
86                minification.getWrapS() == Sampler.Value.CLAMP);
87        _RS_ASSERT("minification.getWrapT() == Sampler.Value.CLAMP",
88                minification.getWrapT() == Sampler.Value.CLAMP);
89        _RS_ASSERT("minification.getAnisotropy() == 1.0f",
90                minification.getAnisotropy() == 1.0f);
91
92        _RS_ASSERT("magnification.getMagnification() == Sampler.Value.LINEAR",
93                magnification.getMagnification() == Sampler.Value.LINEAR);
94        _RS_ASSERT("magnification.getMinification() == Sampler.Value.NEAREST",
95                magnification.getMinification() == Sampler.Value.NEAREST);
96        _RS_ASSERT("magnification.getWrapS() == Sampler.Value.CLAMP",
97                magnification.getWrapS() == Sampler.Value.CLAMP);
98        _RS_ASSERT("magnification.getWrapT() == Sampler.Value.CLAMP",
99                magnification.getWrapT() == Sampler.Value.CLAMP);
100        _RS_ASSERT("magnification.getAnisotropy() == 1.0f",
101                magnification.getAnisotropy() == 1.0f);
102
103        _RS_ASSERT("wrapS.getMagnification() == Sampler.Value.NEAREST",
104                wrapS.getMagnification() == Sampler.Value.NEAREST);
105        _RS_ASSERT("wrapS.getMinification() == Sampler.Value.NEAREST",
106                wrapS.getMinification() == Sampler.Value.NEAREST);
107        _RS_ASSERT("wrapS.getWrapS() == Sampler.Value.WRAP",
108                wrapS.getWrapS() == Sampler.Value.WRAP);
109        _RS_ASSERT("wrapS.getWrapT() == Sampler.Value.CLAMP",
110                wrapS.getWrapT() == Sampler.Value.CLAMP);
111        _RS_ASSERT("wrapS.getAnisotropy() == 1.0f",
112                wrapS.getAnisotropy() == 1.0f);
113
114        _RS_ASSERT("wrapT.getMagnification() == Sampler.Value.NEAREST",
115                wrapT.getMagnification() == Sampler.Value.NEAREST);
116        _RS_ASSERT("wrapT.getMinification() == Sampler.Value.NEAREST",
117                wrapT.getMinification() == Sampler.Value.NEAREST);
118        _RS_ASSERT("wrapT.getWrapS() == Sampler.Value.CLAMP",
119                wrapT.getWrapS() == Sampler.Value.CLAMP);
120        _RS_ASSERT("wrapT.getWrapT() == Sampler.Value.WRAP",
121                wrapT.getWrapT() == Sampler.Value.WRAP);
122        _RS_ASSERT("wrapT.getAnisotropy() == 1.0f",
123                wrapT.getAnisotropy() == 1.0f);
124
125        _RS_ASSERT("anisotropy.getMagnification() == Sampler.Value.NEAREST",
126                anisotropy.getMagnification() == Sampler.Value.NEAREST);
127        _RS_ASSERT("anisotropy.getMinification() == Sampler.Value.NEAREST",
128                anisotropy.getMinification() == Sampler.Value.NEAREST);
129        _RS_ASSERT("anisotropy.getWrapS() == Sampler.Value.CLAMP",
130                anisotropy.getWrapS() == Sampler.Value.CLAMP);
131        _RS_ASSERT("anisotropy.getWrapT() == Sampler.Value.CLAMP",
132                anisotropy.getWrapT() == Sampler.Value.CLAMP);
133        _RS_ASSERT("anisotropy.getAnisotropy() == 1.0f",
134                anisotropy.getAnisotropy() == 8.0f);
135    }
136
137    public void run() {
138        RenderScript pRS = createRenderScript(true);
139        testScriptSide(pRS);
140        testJavaSide(pRS);
141        passTest();
142        pRS.destroy();
143    }
144}
145