diff options
Diffstat (limited to 'dom/canvas/test/webgl-conf/checkout/deqp/functional/gles3/es3fBufferObjectQueryTests.js')
-rw-r--r-- | dom/canvas/test/webgl-conf/checkout/deqp/functional/gles3/es3fBufferObjectQueryTests.js | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/dom/canvas/test/webgl-conf/checkout/deqp/functional/gles3/es3fBufferObjectQueryTests.js b/dom/canvas/test/webgl-conf/checkout/deqp/functional/gles3/es3fBufferObjectQueryTests.js new file mode 100644 index 0000000000..a4384d3ae7 --- /dev/null +++ b/dom/canvas/test/webgl-conf/checkout/deqp/functional/gles3/es3fBufferObjectQueryTests.js @@ -0,0 +1,177 @@ +/*------------------------------------------------------------------------- + * 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.es3fBufferObjectQueryTests'); +goog.require('framework.common.tcuTestCase'); +goog.require('framework.delibs.debase.deRandom'); +goog.require('functional.gles3.es3fApiCase'); + +goog.scope(function() { +var es3fBufferObjectQueryTests = functional.gles3.es3fBufferObjectQueryTests; +var tcuTestCase = framework.common.tcuTestCase; +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 + */ +es3fBufferObjectQueryTests.BufferCase = function(name, description) { + es3fApiCase.ApiCase.call(this, name, description, gl); +}; + +setParentClass(es3fBufferObjectQueryTests.BufferCase, es3fApiCase.ApiCase); + +es3fBufferObjectQueryTests.BufferCase.prototype.test = function() { + var bufferTargets = [ + gl.ARRAY_BUFFER, gl.COPY_READ_BUFFER, + gl.TRANSFORM_FEEDBACK_BUFFER, gl.UNIFORM_BUFFER, + + gl.COPY_WRITE_BUFFER, gl.ELEMENT_ARRAY_BUFFER, + gl.PIXEL_PACK_BUFFER, gl.PIXEL_UNPACK_BUFFER + ]; + + // most test need only to be run with a subset of targets + var targets = this.m_testAllTargets ? bufferTargets.length : 4; + + for (var ndx = 0; ndx < targets; ++ndx) { + this.m_bufferTarget = bufferTargets[ndx]; + + var bufferId = gl.createBuffer(); + gl.bindBuffer(this.m_bufferTarget, bufferId); + + this.testBuffer(); + + gl.bindBuffer(this.m_bufferTarget, null); + gl.deleteBuffer(bufferId); + } +}; + +/** + * @constructor + * @extends {es3fBufferObjectQueryTests.BufferCase} + * @param {string} name + * @param {string} description + */ +es3fBufferObjectQueryTests.BufferSizeCase = function(name, description) { + es3fBufferObjectQueryTests.BufferCase.call(this, name, description); + this.m_testAllTargets = true; +}; + +setParentClass(es3fBufferObjectQueryTests.BufferSizeCase, es3fBufferObjectQueryTests.BufferCase); + +es3fBufferObjectQueryTests.BufferSizeCase.prototype.testBuffer = function() { + var rnd = new deRandom.Random(0xabcdef); + + var size = /** type {number} */ (gl.getBufferParameter(this.m_bufferTarget, gl.BUFFER_SIZE)); + this.check(size == 0, 'Initial size should be 0; got ' + size); + + var numIterations = 16; + for (var i = 0; i < numIterations; ++i) { + var len = rnd.getInt(0, 1024); + gl.bufferData(this.m_bufferTarget, len, gl.STREAM_DRAW); + + size = /** type {number} */ (gl.getBufferParameter(this.m_bufferTarget, gl.BUFFER_SIZE)); + this.check(size == len, 'Buffer size should be ' + len + ' ; got ' + size); + } +}; + +/** + * @constructor + * @extends {es3fBufferObjectQueryTests.BufferCase} + * @param {string} name + * @param {string} description + */ +es3fBufferObjectQueryTests.BufferUsageCase = function(name, description) { + es3fBufferObjectQueryTests.BufferCase.call(this, name, description); + this.m_testAllTargets = false; +}; + +setParentClass(es3fBufferObjectQueryTests.BufferUsageCase, es3fBufferObjectQueryTests.BufferCase); + +es3fBufferObjectQueryTests.BufferUsageCase.prototype.testBuffer = function() { + var usage = /** type {number} */ (gl.getBufferParameter(this.m_bufferTarget, gl.BUFFER_USAGE)); + this.check(usage == gl.STATIC_DRAW, 'Initial usage should be STATIC_DRAW; got ' + wtu.glEnumToString(gl, usage)); + + var usages = [ + gl.STREAM_DRAW, gl.STREAM_READ, + gl.STREAM_COPY, gl.STATIC_DRAW, + gl.STATIC_READ, gl.STATIC_COPY, + gl.DYNAMIC_DRAW, gl.DYNAMIC_READ, + gl.DYNAMIC_COPY + ]; + + for (var ndx = 0; ndx < usages.length; ++ndx) { + gl.bufferData(this.m_bufferTarget, 16, usages[ndx]); + + usage = /** type {number} */ (gl.getBufferParameter(this.m_bufferTarget, gl.BUFFER_USAGE)); + this.check(usage == usages[ndx], 'Buffer usage should be ' + wtu.glEnumToString(gl, usages[ndx]) + ' ; got ' + wtu.glEnumToString(gl, usage)); + } +}; + +/** +* @constructor +* @extends {tcuTestCase.DeqpTest} +*/ +es3fBufferObjectQueryTests.BufferObjectQueryTests = function() { + tcuTestCase.DeqpTest.call(this, 'buffer_object', 'Buffer Object Query tests'); +}; + +es3fBufferObjectQueryTests.BufferObjectQueryTests.prototype = Object.create(tcuTestCase.DeqpTest.prototype); +es3fBufferObjectQueryTests.BufferObjectQueryTests.prototype.constructor = es3fBufferObjectQueryTests.BufferObjectQueryTests; + +es3fBufferObjectQueryTests.BufferObjectQueryTests.prototype.init = function() { + this.addChild(new es3fBufferObjectQueryTests.BufferSizeCase('buffer_size' , 'BUFFER_SIZE')); + this.addChild(new es3fBufferObjectQueryTests.BufferUsageCase('buffer_usage' , 'BUFFER_USAGE')); +}; + +/** +* Run test +* @param {WebGL2RenderingContext} context +*/ +es3fBufferObjectQueryTests.run = function(context) { + gl = context; + //Set up Test Root parameters + var state = tcuTestCase.runner; + state.setRoot(new es3fBufferObjectQueryTests.BufferObjectQueryTests()); + + //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 es3fBufferObjectQueryTests.run tests', false); + tcuTestCase.runner.terminate(); + } +}; + +}); |