diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /dom/canvas/test/webgl-conf/checkout/deqp/functional/gles3/es3fSamplerStateQueryTests.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/canvas/test/webgl-conf/checkout/deqp/functional/gles3/es3fSamplerStateQueryTests.js')
-rw-r--r-- | dom/canvas/test/webgl-conf/checkout/deqp/functional/gles3/es3fSamplerStateQueryTests.js | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/dom/canvas/test/webgl-conf/checkout/deqp/functional/gles3/es3fSamplerStateQueryTests.js b/dom/canvas/test/webgl-conf/checkout/deqp/functional/gles3/es3fSamplerStateQueryTests.js new file mode 100644 index 0000000000..22cfde12aa --- /dev/null +++ b/dom/canvas/test/webgl-conf/checkout/deqp/functional/gles3/es3fSamplerStateQueryTests.js @@ -0,0 +1,205 @@ +/*------------------------------------------------------------------------- + * drawElements Quality Program OpenGL ES Utilities + * ------------------------------------------------ + * + * Copyright 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the 'License'); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an 'AS IS' BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +'use strict'; +goog.provide('functional.gles3.es3fSamplerStateQueryTests'); +goog.require('framework.common.tcuTestCase'); +goog.require('framework.delibs.debase.deRandom'); +goog.require('functional.gles3.es3fApiCase'); +goog.require('modules.shared.glsStateQuery'); + +goog.scope(function() { +var es3fSamplerStateQueryTests = functional.gles3.es3fSamplerStateQueryTests; +var tcuTestCase = framework.common.tcuTestCase; +var glsStateQuery = modules.shared.glsStateQuery; +var es3fApiCase = functional.gles3.es3fApiCase; +var deRandom = framework.delibs.debase.deRandom; + +var setParentClass = function(child, parent) { + child.prototype = Object.create(parent.prototype); + child.prototype.constructor = child; +}; + +/** + * @constructor + * @extends {es3fApiCase.ApiCase} + * @param {string} name + * @param {string} description + */ +es3fSamplerStateQueryTests.SamplerCase = function(name, description) { + es3fApiCase.ApiCase.call(this, name, description, gl); + /** @type {WebGLSampler} */ this.m_sampler; +}; + +setParentClass(es3fSamplerStateQueryTests.SamplerCase, es3fApiCase.ApiCase); + +es3fSamplerStateQueryTests.SamplerCase.prototype.testSampler = function() { + throw new Error('Virtual function. Please override.'); +}; + +es3fSamplerStateQueryTests.SamplerCase.prototype.test = function() { + this.m_sampler = gl.createSampler(); + + this.testSampler(); + + gl.deleteSampler(this.m_sampler); +}; + +/** + * @constructor + * @extends {es3fSamplerStateQueryTests.SamplerCase} + * @param {string} name + * @param {string} description + * @param {number} valueName + * @param {number} initialValue + * @param {Array<number>} valueRange + */ +es3fSamplerStateQueryTests.SamplerModeCase = function(name, description, valueName, initialValue, valueRange) { + es3fSamplerStateQueryTests.SamplerCase.call(this, name, description); + this.m_valueName = valueName; + this.m_initialValue = initialValue; + this.m_valueRange = valueRange; +}; + +setParentClass(es3fSamplerStateQueryTests.SamplerModeCase, es3fSamplerStateQueryTests.SamplerCase); + +es3fSamplerStateQueryTests.SamplerModeCase.prototype.testSampler = function() { + this.check(glsStateQuery.verifySampler(this.m_sampler, this.m_valueName, this.m_initialValue)); + + for (var ndx = 0; ndx < this.m_valueRange.length; ++ndx) { + gl.samplerParameteri(this.m_sampler, this.m_valueName, this.m_valueRange[ndx]); + + this.check(glsStateQuery.verifySampler(this.m_sampler, this.m_valueName, this.m_valueRange[ndx])); + } + + //check unit conversions with float + + for (var ndx = 0; ndx < this.m_valueRange.length; ++ndx) { + gl.samplerParameterf(this.m_sampler, this.m_valueName, this.m_valueRange[ndx]); + + this.check(glsStateQuery.verifySampler(this.m_sampler, this.m_valueName, this.m_valueRange[ndx])); + } +}; + +/** + * @constructor + * @extends {es3fSamplerStateQueryTests.SamplerCase} + * @param {string} name + * @param {string} description + * @param {number} lodTarget + * @param {number} initialValue + */ +es3fSamplerStateQueryTests.SamplerLODCase = function(name, description, lodTarget, initialValue) { + es3fSamplerStateQueryTests.SamplerCase.call(this, name, description); + this.m_lodTarget = lodTarget; + this.m_initialValue = initialValue; +}; + +setParentClass(es3fSamplerStateQueryTests.SamplerLODCase, es3fSamplerStateQueryTests.SamplerCase); + +es3fSamplerStateQueryTests.SamplerLODCase.prototype.testSampler = function() { + var rnd = new deRandom.Random(0xabcdef); + + this.check(glsStateQuery.verifySampler(this.m_sampler, this.m_lodTarget, this.m_initialValue)); + var numIterations = 60; + for (var ndx = 0; ndx < numIterations; ++ndx) { + var ref = rnd.getFloat(-64000, 64000); + + gl.samplerParameterf(this.m_sampler, this.m_lodTarget, ref); + + this.check(glsStateQuery.verifySampler(this.m_sampler, this.m_lodTarget, ref)); + } + + // check unit conversions with int + + for (var ndx = 0; ndx < numIterations; ++ndx) { + var ref = rnd.getInt(-64000, 64000); + + gl.samplerParameteri(this.m_sampler, this.m_lodTarget, ref); + + this.check(glsStateQuery.verifySampler(this.m_sampler, this.m_lodTarget, ref)); + } +}; + +/** +* @constructor +* @extends {tcuTestCase.DeqpTest} +*/ +es3fSamplerStateQueryTests.SamplerStateQueryTests = function() { + tcuTestCase.DeqpTest.call(this, 'sampler', 'Sampler State Query tests'); +}; + +es3fSamplerStateQueryTests.SamplerStateQueryTests.prototype = Object.create(tcuTestCase.DeqpTest.prototype); +es3fSamplerStateQueryTests.SamplerStateQueryTests.prototype.constructor = es3fSamplerStateQueryTests.SamplerStateQueryTests; + +es3fSamplerStateQueryTests.SamplerStateQueryTests.prototype.init = function() { + var wrapValues = [gl.CLAMP_TO_EDGE, gl.REPEAT, gl.MIRRORED_REPEAT]; + this.addChild(new es3fSamplerStateQueryTests.SamplerModeCase('sampler_texture_wrap_s' , 'TEXTURE_WRAP_S', + gl.TEXTURE_WRAP_S, gl.REPEAT, wrapValues)); + this.addChild(new es3fSamplerStateQueryTests.SamplerModeCase('sampler_texture_wrap_t' , 'TEXTURE_WRAP_T', + gl.TEXTURE_WRAP_T, gl.REPEAT, wrapValues)); + this.addChild(new es3fSamplerStateQueryTests.SamplerModeCase('sampler_texture_wrap_r' , 'TEXTURE_WRAP_R', + gl.TEXTURE_WRAP_R, gl.REPEAT, wrapValues)); + + var magValues = [gl.NEAREST, gl.LINEAR]; + this.addChild(new es3fSamplerStateQueryTests.SamplerModeCase('sampler_texture_mag_filter' , 'TEXTURE_MAG_FILTER', + gl.TEXTURE_MAG_FILTER, gl.LINEAR, magValues)); + + var minValues = [gl.NEAREST, gl.LINEAR, gl.NEAREST_MIPMAP_NEAREST, gl.NEAREST_MIPMAP_LINEAR, gl.LINEAR_MIPMAP_NEAREST, gl.LINEAR_MIPMAP_LINEAR]; + this.addChild(new es3fSamplerStateQueryTests.SamplerModeCase('sampler_texture_min_filter' , 'TEXTURE_MIN_FILTER', + gl.TEXTURE_MIN_FILTER, gl.NEAREST_MIPMAP_LINEAR, minValues)); + + this.addChild(new es3fSamplerStateQueryTests.SamplerLODCase('sampler_texture_min_lod' , 'TEXTURE_MIN_LOD', gl.TEXTURE_MIN_LOD, -1000)); + this.addChild(new es3fSamplerStateQueryTests.SamplerLODCase('sampler_texture_max_lod' , 'TEXTURE_MAX_LOD', gl.TEXTURE_MAX_LOD, 1000)); + + var modes = [gl.COMPARE_REF_TO_TEXTURE, gl.NONE]; + this.addChild(new es3fSamplerStateQueryTests.SamplerModeCase('sampler_texture_compare_mode' , 'TEXTURE_COMPARE_MODE', + gl.TEXTURE_COMPARE_MODE, gl.NONE, modes)); + + var compareFuncs = [gl.LEQUAL, gl.GEQUAL, gl.LESS, gl.GREATER, gl.EQUAL, gl.NOTEQUAL, gl.ALWAYS, gl.NEVER]; + this.addChild(new es3fSamplerStateQueryTests.SamplerModeCase('sampler_texture_compare_func' , 'TEXTURE_COMPARE_FUNC', + gl.TEXTURE_COMPARE_FUNC, gl.LEQUAL, compareFuncs)); +}; + +/** +* Run test +* @param {WebGL2RenderingContext} context +*/ +es3fSamplerStateQueryTests.run = function(context) { + gl = context; + //Set up Test Root parameters + var state = tcuTestCase.runner; + state.setRoot(new es3fSamplerStateQueryTests.SamplerStateQueryTests()); + + //Set up name and description of this test series. + setCurrentTestName(state.testCases.fullName()); + description(state.testCases.getDescription()); + + try { + //Run test cases + tcuTestCase.runTestCases(); + } + catch (err) { + testFailedOptions('Failed to es3fSamplerStateQueryTests.run tests', false); + tcuTestCase.runner.terminate(); + } +}; + +}); |