11a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks/*
21a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * Copyright (C) 2017 The Android Open Source Project
31a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks *
41a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * Licensed under the Apache License, Version 2.0 (the "License");
51a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * you may not use this file except in compliance with the License.
61a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * You may obtain a copy of the License at
71a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks *
81a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks *      http://www.apache.org/licenses/LICENSE-2.0
91a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks *
101a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * Unless required by applicable law or agreed to in writing, software
111a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * distributed under the License is distributed on an "AS IS" BASIS,
121a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * See the License for the specific language governing permissions and
141a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * limitations under the License.
151a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks */
161a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
171a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubankspackage com.android.rs.unittest;
181a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
191a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanksimport android.content.Context;
201a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanksimport android.renderscript.RenderScript;
211a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanksimport android.renderscript.Sampler;
221a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
231a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubankspublic class UT_sampler extends UnitTest {
241a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    Sampler minification;
251a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    Sampler magnification;
261a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    Sampler wrapS;
271a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    Sampler wrapT;
281a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    Sampler anisotropy;
291a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
301a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    public UT_sampler(Context ctx) {
311a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        super("Sampler", ctx);
321a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    }
331a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
341a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    private Sampler.Builder getDefaultBuilder(RenderScript RS) {
351a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        Sampler.Builder b = new Sampler.Builder(RS);
361a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        b.setMinification(Sampler.Value.NEAREST);
371a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        b.setMagnification(Sampler.Value.NEAREST);
381a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        b.setWrapS(Sampler.Value.CLAMP);
391a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        b.setWrapT(Sampler.Value.CLAMP);
401a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        b.setAnisotropy(1.0f);
411a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        return b;
421a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    }
431a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
441a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    private void initializeGlobals(RenderScript RS, ScriptC_sampler s) {
451a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        Sampler.Builder b = getDefaultBuilder(RS);
461a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        b.setMinification(Sampler.Value.LINEAR_MIP_LINEAR);
471a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        minification = b.create();
481a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
491a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        b = getDefaultBuilder(RS);
501a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        b.setMagnification(Sampler.Value.LINEAR);
511a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        magnification = b.create();
521a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
531a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        b = getDefaultBuilder(RS);
541a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        b.setWrapS(Sampler.Value.WRAP);
551a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        wrapS = b.create();
561a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
571a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        b = getDefaultBuilder(RS);
581a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        b.setWrapT(Sampler.Value.WRAP);
591a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        wrapT = b.create();
601a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
611a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        b = getDefaultBuilder(RS);
621a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        b.setAnisotropy(8.0f);
631a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        anisotropy = b.create();
641a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
651a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        s.set_minification(minification);
661a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        s.set_magnification(magnification);
671a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        s.set_wrapS(wrapS);
681a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        s.set_wrapT(wrapT);
691a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        s.set_anisotropy(anisotropy);
701a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    }
711a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
721a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    private void testScriptSide(RenderScript pRS) {
731a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        ScriptC_sampler s = new ScriptC_sampler(pRS);
741a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        initializeGlobals(pRS, s);
751a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        s.invoke_sampler_test();
761a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        pRS.finish();
771a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        s.destroy();
781a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    }
791a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
804cad330154b7df7c3adf126b9f4b2665191a23a4Arthur Eubanks    private void testJavaSide(RenderScript pRS) {
811a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("minification.getMagnification() == Sampler.Value.NEAREST",
821a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                minification.getMagnification() == Sampler.Value.NEAREST);
831a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("minification.getMinification() == Sampler.Value.LINEAR_MIP_LINEAR",
841a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                minification.getMinification() == Sampler.Value.LINEAR_MIP_LINEAR);
851a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("minification.getWrapS() == Sampler.Value.CLAMP",
861a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                minification.getWrapS() == Sampler.Value.CLAMP);
871a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("minification.getWrapT() == Sampler.Value.CLAMP",
881a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                minification.getWrapT() == Sampler.Value.CLAMP);
891a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("minification.getAnisotropy() == 1.0f",
901a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                minification.getAnisotropy() == 1.0f);
911a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
921a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("magnification.getMagnification() == Sampler.Value.LINEAR",
931a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                magnification.getMagnification() == Sampler.Value.LINEAR);
941a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("magnification.getMinification() == Sampler.Value.NEAREST",
951a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                magnification.getMinification() == Sampler.Value.NEAREST);
961a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("magnification.getWrapS() == Sampler.Value.CLAMP",
971a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                magnification.getWrapS() == Sampler.Value.CLAMP);
981a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("magnification.getWrapT() == Sampler.Value.CLAMP",
991a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                magnification.getWrapT() == Sampler.Value.CLAMP);
1001a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("magnification.getAnisotropy() == 1.0f",
1011a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                magnification.getAnisotropy() == 1.0f);
1021a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
1031a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("wrapS.getMagnification() == Sampler.Value.NEAREST",
1041a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                wrapS.getMagnification() == Sampler.Value.NEAREST);
1051a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("wrapS.getMinification() == Sampler.Value.NEAREST",
1061a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                wrapS.getMinification() == Sampler.Value.NEAREST);
1071a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("wrapS.getWrapS() == Sampler.Value.WRAP",
1081a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                wrapS.getWrapS() == Sampler.Value.WRAP);
1091a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("wrapS.getWrapT() == Sampler.Value.CLAMP",
1101a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                wrapS.getWrapT() == Sampler.Value.CLAMP);
1111a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("wrapS.getAnisotropy() == 1.0f",
1121a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                wrapS.getAnisotropy() == 1.0f);
1131a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
1141a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("wrapT.getMagnification() == Sampler.Value.NEAREST",
1151a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                wrapT.getMagnification() == Sampler.Value.NEAREST);
1161a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("wrapT.getMinification() == Sampler.Value.NEAREST",
1171a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                wrapT.getMinification() == Sampler.Value.NEAREST);
1181a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("wrapT.getWrapS() == Sampler.Value.CLAMP",
1191a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                wrapT.getWrapS() == Sampler.Value.CLAMP);
1201a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("wrapT.getWrapT() == Sampler.Value.WRAP",
1211a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                wrapT.getWrapT() == Sampler.Value.WRAP);
1221a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("wrapT.getAnisotropy() == 1.0f",
1231a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                wrapT.getAnisotropy() == 1.0f);
1241a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
1251a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("anisotropy.getMagnification() == Sampler.Value.NEAREST",
1261a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                anisotropy.getMagnification() == Sampler.Value.NEAREST);
1271a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("anisotropy.getMinification() == Sampler.Value.NEAREST",
1281a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                anisotropy.getMinification() == Sampler.Value.NEAREST);
1291a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("anisotropy.getWrapS() == Sampler.Value.CLAMP",
1301a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                anisotropy.getWrapS() == Sampler.Value.CLAMP);
1311a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("anisotropy.getWrapT() == Sampler.Value.CLAMP",
1321a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                anisotropy.getWrapT() == Sampler.Value.CLAMP);
1331a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        _RS_ASSERT("anisotropy.getAnisotropy() == 1.0f",
1341a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks                anisotropy.getAnisotropy() == 8.0f);
1351a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    }
1361a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
1371a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    public void run() {
1384cad330154b7df7c3adf126b9f4b2665191a23a4Arthur Eubanks        RenderScript pRS = createRenderScript(true);
1391a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        testScriptSide(pRS);
1401a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        testJavaSide(pRS);
1411a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        passTest();
1421a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        pRS.destroy();
1431a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    }
1441a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks}
145