tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

es3fSamplerStateQueryTests.js (8064B)


      1 /*-------------------------------------------------------------------------
      2 * drawElements Quality Program OpenGL ES Utilities
      3 * ------------------------------------------------
      4 *
      5 * Copyright 2014 The Android Open Source Project
      6 *
      7 * Licensed under the Apache License, Version 2.0 (the 'License');
      8 * you may not use this file except in compliance with the License.
      9 * You may obtain a copy of the License at
     10 *
     11 *      http://www.apache.org/licenses/LICENSE-2.0
     12 *
     13 * Unless required by applicable law or agreed to in writing, software
     14 * distributed under the License is distributed on an 'AS IS' BASIS,
     15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     16 * See the License for the specific language governing permissions and
     17 * limitations under the License.
     18 *
     19 */
     20 
     21 'use strict';
     22 goog.provide('functional.gles3.es3fSamplerStateQueryTests');
     23 goog.require('framework.common.tcuTestCase');
     24 goog.require('framework.delibs.debase.deRandom');
     25 goog.require('functional.gles3.es3fApiCase');
     26 goog.require('modules.shared.glsStateQuery');
     27 
     28 goog.scope(function() {
     29 var es3fSamplerStateQueryTests = functional.gles3.es3fSamplerStateQueryTests;
     30 var tcuTestCase = framework.common.tcuTestCase;
     31 var glsStateQuery = modules.shared.glsStateQuery;
     32 var es3fApiCase = functional.gles3.es3fApiCase;
     33 var deRandom = framework.delibs.debase.deRandom;
     34 
     35 var setParentClass = function(child, parent) {
     36    child.prototype = Object.create(parent.prototype);
     37    child.prototype.constructor = child;
     38 };
     39 
     40 /**
     41 * @constructor
     42 * @extends {es3fApiCase.ApiCase}
     43 * @param {string} name
     44 * @param {string} description
     45 */
     46 es3fSamplerStateQueryTests.SamplerCase = function(name, description) {
     47    es3fApiCase.ApiCase.call(this, name, description, gl);
     48    /** @type {WebGLSampler} */ this.m_sampler;
     49 };
     50 
     51 setParentClass(es3fSamplerStateQueryTests.SamplerCase, es3fApiCase.ApiCase);
     52 
     53 es3fSamplerStateQueryTests.SamplerCase.prototype.testSampler = function() {
     54    throw new Error('Virtual function. Please override.');
     55 };
     56 
     57 es3fSamplerStateQueryTests.SamplerCase.prototype.test = function() {
     58    this.m_sampler = gl.createSampler();
     59 
     60    this.testSampler();
     61 
     62    gl.deleteSampler(this.m_sampler);
     63 };
     64 
     65 /**
     66 * @constructor
     67 * @extends {es3fSamplerStateQueryTests.SamplerCase}
     68 * @param {string} name
     69 * @param {string} description
     70 * @param {number} valueName
     71 * @param {number} initialValue
     72 * @param {Array<number>} valueRange
     73 */
     74 es3fSamplerStateQueryTests.SamplerModeCase = function(name, description, valueName, initialValue, valueRange) {
     75    es3fSamplerStateQueryTests.SamplerCase.call(this, name, description);
     76    this.m_valueName = valueName;
     77    this.m_initialValue = initialValue;
     78    this.m_valueRange = valueRange;
     79 };
     80 
     81 setParentClass(es3fSamplerStateQueryTests.SamplerModeCase, es3fSamplerStateQueryTests.SamplerCase);
     82 
     83 es3fSamplerStateQueryTests.SamplerModeCase.prototype.testSampler = function() {
     84    this.check(glsStateQuery.verifySampler(this.m_sampler, this.m_valueName, this.m_initialValue));
     85 
     86    for (var ndx = 0; ndx < this.m_valueRange.length; ++ndx) {
     87        gl.samplerParameteri(this.m_sampler, this.m_valueName, this.m_valueRange[ndx]);
     88 
     89        this.check(glsStateQuery.verifySampler(this.m_sampler, this.m_valueName, this.m_valueRange[ndx]));
     90    }
     91 
     92    //check unit conversions with float
     93 
     94    for (var ndx = 0; ndx < this.m_valueRange.length; ++ndx) {
     95        gl.samplerParameterf(this.m_sampler, this.m_valueName, this.m_valueRange[ndx]);
     96 
     97        this.check(glsStateQuery.verifySampler(this.m_sampler, this.m_valueName, this.m_valueRange[ndx]));
     98    }
     99 };
    100 
    101 /**
    102 * @constructor
    103 * @extends {es3fSamplerStateQueryTests.SamplerCase}
    104 * @param {string} name
    105 * @param {string} description
    106 * @param {number} lodTarget
    107 * @param {number} initialValue
    108 */
    109 es3fSamplerStateQueryTests.SamplerLODCase = function(name, description, lodTarget, initialValue) {
    110    es3fSamplerStateQueryTests.SamplerCase.call(this, name, description);
    111    this.m_lodTarget = lodTarget;
    112    this.m_initialValue = initialValue;
    113 };
    114 
    115 setParentClass(es3fSamplerStateQueryTests.SamplerLODCase, es3fSamplerStateQueryTests.SamplerCase);
    116 
    117 es3fSamplerStateQueryTests.SamplerLODCase.prototype.testSampler = function() {
    118    var rnd = new deRandom.Random(0xabcdef);
    119 
    120    this.check(glsStateQuery.verifySampler(this.m_sampler, this.m_lodTarget, this.m_initialValue));
    121    var numIterations = 60;
    122    for (var ndx = 0; ndx < numIterations; ++ndx) {
    123        var ref = rnd.getFloat(-64000, 64000);
    124 
    125        gl.samplerParameterf(this.m_sampler, this.m_lodTarget, ref);
    126 
    127        this.check(glsStateQuery.verifySampler(this.m_sampler, this.m_lodTarget, ref));
    128    }
    129 
    130    // check unit conversions with int
    131 
    132    for (var ndx = 0; ndx < numIterations; ++ndx) {
    133        var ref = rnd.getInt(-64000, 64000);
    134 
    135        gl.samplerParameteri(this.m_sampler, this.m_lodTarget, ref);
    136 
    137        this.check(glsStateQuery.verifySampler(this.m_sampler, this.m_lodTarget, ref));
    138    }
    139 };
    140 
    141 /**
    142 * @constructor
    143 * @extends {tcuTestCase.DeqpTest}
    144 */
    145 es3fSamplerStateQueryTests.SamplerStateQueryTests = function() {
    146    tcuTestCase.DeqpTest.call(this, 'sampler', 'Sampler State Query tests');
    147 };
    148 
    149 es3fSamplerStateQueryTests.SamplerStateQueryTests.prototype = Object.create(tcuTestCase.DeqpTest.prototype);
    150 es3fSamplerStateQueryTests.SamplerStateQueryTests.prototype.constructor = es3fSamplerStateQueryTests.SamplerStateQueryTests;
    151 
    152 es3fSamplerStateQueryTests.SamplerStateQueryTests.prototype.init = function() {
    153    var wrapValues = [gl.CLAMP_TO_EDGE, gl.REPEAT, gl.MIRRORED_REPEAT];
    154    this.addChild(new es3fSamplerStateQueryTests.SamplerModeCase('sampler_texture_wrap_s' , 'TEXTURE_WRAP_S',
    155        gl.TEXTURE_WRAP_S, gl.REPEAT, wrapValues));
    156    this.addChild(new es3fSamplerStateQueryTests.SamplerModeCase('sampler_texture_wrap_t' , 'TEXTURE_WRAP_T',
    157        gl.TEXTURE_WRAP_T, gl.REPEAT, wrapValues));
    158    this.addChild(new es3fSamplerStateQueryTests.SamplerModeCase('sampler_texture_wrap_r' , 'TEXTURE_WRAP_R',
    159        gl.TEXTURE_WRAP_R, gl.REPEAT, wrapValues));
    160 
    161    var magValues = [gl.NEAREST, gl.LINEAR];
    162    this.addChild(new es3fSamplerStateQueryTests.SamplerModeCase('sampler_texture_mag_filter' , 'TEXTURE_MAG_FILTER',
    163        gl.TEXTURE_MAG_FILTER, gl.LINEAR, magValues));
    164 
    165    var minValues = [gl.NEAREST, gl.LINEAR, gl.NEAREST_MIPMAP_NEAREST, gl.NEAREST_MIPMAP_LINEAR, gl.LINEAR_MIPMAP_NEAREST, gl.LINEAR_MIPMAP_LINEAR];
    166    this.addChild(new es3fSamplerStateQueryTests.SamplerModeCase('sampler_texture_min_filter' , 'TEXTURE_MIN_FILTER',
    167        gl.TEXTURE_MIN_FILTER, gl.NEAREST_MIPMAP_LINEAR, minValues));
    168 
    169    this.addChild(new es3fSamplerStateQueryTests.SamplerLODCase('sampler_texture_min_lod' , 'TEXTURE_MIN_LOD', gl.TEXTURE_MIN_LOD, -1000));
    170    this.addChild(new es3fSamplerStateQueryTests.SamplerLODCase('sampler_texture_max_lod' , 'TEXTURE_MAX_LOD', gl.TEXTURE_MAX_LOD, 1000));
    171 
    172    var modes = [gl.COMPARE_REF_TO_TEXTURE, gl.NONE];
    173    this.addChild(new es3fSamplerStateQueryTests.SamplerModeCase('sampler_texture_compare_mode' , 'TEXTURE_COMPARE_MODE',
    174        gl.TEXTURE_COMPARE_MODE, gl.NONE, modes));
    175 
    176    var compareFuncs = [gl.LEQUAL, gl.GEQUAL, gl.LESS, gl.GREATER, gl.EQUAL, gl.NOTEQUAL, gl.ALWAYS, gl.NEVER];
    177    this.addChild(new es3fSamplerStateQueryTests.SamplerModeCase('sampler_texture_compare_func' , 'TEXTURE_COMPARE_FUNC',
    178        gl.TEXTURE_COMPARE_FUNC, gl.LEQUAL, compareFuncs));
    179 };
    180 
    181 /**
    182 * Run test
    183 * @param {WebGL2RenderingContext} context
    184 */
    185 es3fSamplerStateQueryTests.run = function(context) {
    186    gl = context;
    187    //Set up Test Root parameters
    188    var state = tcuTestCase.runner;
    189    state.setRoot(new es3fSamplerStateQueryTests.SamplerStateQueryTests());
    190 
    191    //Set up name and description of this test series.
    192    setCurrentTestName(state.testCases.fullName());
    193    description(state.testCases.getDescription());
    194 
    195    try {
    196        //Run test cases
    197        tcuTestCase.runTestCases();
    198    }
    199    catch (err) {
    200        testFailedOptions('Failed to es3fSamplerStateQueryTests.run tests', false);
    201        tcuTestCase.runner.terminate();
    202    }
    203 };
    204 
    205 });