summaryrefslogtreecommitdiffstats
path: root/dom/canvas/test/webgl-conf/checkout/deqp/framework/referencerenderer/rrRenderState.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/canvas/test/webgl-conf/checkout/deqp/framework/referencerenderer/rrRenderState.js')
-rw-r--r--dom/canvas/test/webgl-conf/checkout/deqp/framework/referencerenderer/rrRenderState.js323
1 files changed, 323 insertions, 0 deletions
diff --git a/dom/canvas/test/webgl-conf/checkout/deqp/framework/referencerenderer/rrRenderState.js b/dom/canvas/test/webgl-conf/checkout/deqp/framework/referencerenderer/rrRenderState.js
new file mode 100644
index 0000000000..cac4dc56a3
--- /dev/null
+++ b/dom/canvas/test/webgl-conf/checkout/deqp/framework/referencerenderer/rrRenderState.js
@@ -0,0 +1,323 @@
+/*-------------------------------------------------------------------------
+ * drawElements Quality Program Reference Renderer
+ * -----------------------------------------------
+ *
+ * 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.
+ *
+ *//*!
+ * \file
+ * \brief Reference renderer render state.
+ *//*--------------------------------------------------------------------*/
+'use strict';
+goog.provide('framework.referencerenderer.rrRenderState');
+goog.require('framework.common.tcuTexture');
+goog.require('framework.delibs.debase.deMath');
+goog.require('framework.referencerenderer.rrDefs');
+goog.require('framework.referencerenderer.rrMultisamplePixelBufferAccess');
+
+goog.scope(function() {
+
+var rrRenderState = framework.referencerenderer.rrRenderState;
+var tcuTexture = framework.common.tcuTexture;
+var deMath = framework.delibs.debase.deMath;
+var rrMultisamplePixelBufferAccess = framework.referencerenderer.rrMultisamplePixelBufferAccess;
+var rrDefs = framework.referencerenderer.rrDefs;
+
+/**
+ * Enum for rrRenderState.HorizontalFill values.
+ * @enum {number}
+ */
+rrRenderState.HorizontalFill = {
+ LEFT: 0,
+ RIGHT: 1
+};
+
+/**
+ * Enum for rrRenderState.VerticalFill values.
+ * @enum {number}
+ */
+rrRenderState.VerticalFill = {
+ TOP: 0,
+ BOTTOM: 1
+};
+
+/**
+ * Enum for rrRenderState.Winding values.
+ * @enum {number}
+ */
+rrRenderState.Winding = {
+ CCW: 0,
+ CC: 1
+};
+
+/**
+ * Enum for rrRenderState.CullMode values.
+ * @enum {number}
+ */
+rrRenderState.CullMode = {
+ NONE: 0,
+ BACK: 1,
+ FRONT: 2
+};
+
+/**rrRenderState.Winding : rrRenderState.Winding,
+
+ * @constructor
+ */
+rrRenderState.RasterizationState = function() {
+ /** @type {number} */ this.winding = rrRenderState.Winding.CCW;
+ /** @type {number} */ this.horizontalFill = rrRenderState.HorizontalFill.LEFT;
+ /** @type {number} */ this.verticalFill = rrRenderState.VerticalFill.BOTTOM;
+};
+
+/**
+ * Enum for rrRenderState.TestFunc values.
+ * @enum {number}
+ */
+rrRenderState.TestFunc = {
+ NEVER: 0,
+ ALWAYS: 1,
+ LESS: 2,
+ LEQUAL: 3,
+ GREATER: 4,
+ GEQUAL: 5,
+ EQUAL: 6,
+ NOTEQUAL: 7
+};
+
+/**
+ * Enum for rrRenderState.StencilOp values.
+ * @enum {number}
+ */
+rrRenderState.StencilOp = {
+ KEEP: 0,
+ ZERO: 1,
+ REPLACE: 2,
+ INCR: 3, //!< Increment with saturation.
+ DECR: 4, //!< Decrement with saturation.
+ INCR_WRAP: 5,
+ DECR_WRAP: 6,
+ INVERT: 7
+};
+
+/**
+ * Enum for rrRenderState.BlendMode values.
+ * @enum {number}
+ */
+rrRenderState.BlendMode = {
+ NONE: 0, //!< No blending.
+ STANDARD: 1 //!< Standard blending.
+// Advanced blending is not supported
+// ADVANCED : 2 //!< Advanced blending mode, as defined in gl.KHR_blend_equation_advanced.
+};
+
+/**
+ * Enum for rrRenderState.BlendEquation values.
+ * @enum {number}
+ */
+rrRenderState.BlendEquation = {
+ ADD: 0,
+ SUBTRACT: 1,
+ REVERSE_SUBTRACT: 2,
+ MIN: 3,
+ MAX: 4
+};
+
+// /**
+// * Enum for rrRenderState.BlendEquationAdvanced values.
+// * @enum {number}
+// */
+// rrRenderState.BlendEquationAdvanced = {
+// MULTIPLY : 0,
+// SCREEN : 1,
+// OVERLAY : 2,
+// DARKEN : 3,
+// LIGHTEN : 4,
+// COLORDODGE : 5,
+// COLORBURN : 6,
+// HARDLIGHT : 7,
+// SOFTLIGHT : 8,
+// DIFFERENCE : 9,
+// EXCLUSION : 10,
+// HSL_HUE : 11,
+// HSL_SATURATION : 12,
+// HSL_COLOR : 13,
+// HSL_LUMINOSITY : 14
+// };
+
+/**
+ * Enum for rrRenderState.BlendFunc values.
+ * @enum {number}
+ */
+rrRenderState.BlendFunc = {
+ ZERO: 0,
+ ONE: 1,
+ SRC_COLOR: 2,
+ ONE_MINUS_SRC_COLOR: 3,
+ DST_COLOR: 4,
+ ONE_MINUS_DST_COLOR: 5,
+ SRC_ALPHA: 6,
+ ONE_MINUS_SRC_ALPHA: 7,
+ DST_ALPHA: 8,
+ ONE_MINUS_DST_ALPHA: 9,
+ CONSTANT_COLOR: 10,
+ ONE_MINUS_CONSTANT_COLOR: 11,
+ CONSTANT_ALPHA: 12,
+ ONE_MINUS_CONSTANT_ALPHA: 13,
+ SRC_ALPHA_SATURATE: 14,
+ SRC1_COLOR: 15,
+ ONE_MINUS_SRC1_COLOR: 16,
+ SRC1_ALPHA: 17,
+ ONE_MINUS_SRC1_ALPHA: 18
+};
+
+/**
+ * @constructor
+ */
+rrRenderState.StencilState = function() {
+ /** @type {number} */ this.func = rrRenderState.TestFunc.ALWAYS;
+ /** @type {number} */ this.ref = 0;
+ /** @type {number} */ this.compMask = ~0;
+ /** @type {number} */ this.sFail = rrRenderState.StencilOp.KEEP;
+ /** @type {number} */ this.dpFail = rrRenderState.StencilOp.KEEP;
+ /** @type {number} */ this.dpPass = rrRenderState.StencilOp.KEEP;
+ /** @type {number} */ this.writeMask = ~0;
+};
+
+/**
+ * @constructor
+ */
+rrRenderState.BlendState = function() {
+ /** @type {number} */ this.equation = rrRenderState.BlendEquation.ADD;
+ /** @type {number} */ this.srcFunc = rrRenderState.BlendFunc.ONE;
+ /** @type {number} */ this.dstFunc = rrRenderState.BlendFunc.ZERO;
+};
+
+/**
+ * @param {(Array<number>|number)} left_
+ * @param {number=} bottom_
+ * @param {number=} width_
+ * @param {number=} height_
+ * @constructor
+ */
+rrRenderState.WindowRectangle = function(left_, bottom_, width_, height_) {
+ // Is first parameter an array? Use it
+ if (left_.length && left_.length == 4) {
+ this.left = left_[0];
+ this.bottom = left_[1];
+ this.width = left_[2];
+ this.height = left_[3];
+ } else {
+ this.left = left_;
+ this.bottom = bottom_;
+ this.width = width_;
+ this.height = height_;
+ }
+};
+
+/**
+ * @constructor
+ */
+rrRenderState.FragmentOperationState = function() {
+ /** @type {boolean} */ this.scissorTestEnabled = false;
+ /** @type {rrRenderState.WindowRectangle} */ this.scissorRectangle = new rrRenderState.WindowRectangle(0, 0, 1, 1);
+
+ /** @type {boolean} */ this.stencilTestEnabled = false;
+
+ /** @type {Array<rrRenderState.StencilState>} */ this.stencilStates = [];
+ for (var type in rrDefs.FaceType)
+ this.stencilStates[rrDefs.FaceType[type]] = new rrRenderState.StencilState();
+
+ /** @type {boolean} */ this.depthTestEnabled = false;
+ /** @type {rrRenderState.TestFunc} */ this.depthFunc = rrRenderState.TestFunc.LESS;
+ /** @type {boolean} */ this.depthMask = true;
+
+ /** @type {rrRenderState.BlendMode} */ this.blendMode = rrRenderState.BlendMode.NONE;
+ /** @type {rrRenderState.BlendState} */ this.blendRGBState = new rrRenderState.BlendState();
+ /** @type {rrRenderState.BlendState} */ this.blendAState = new rrRenderState.BlendState();
+ /** @type {Array<number>} */ this.blendColor = [0.0, 0.0, 0.0, 0.0];
+// /** @type {rrRenderState.BlendEquationAdvanced} */ this.blendEquationAdvanced = null;
+
+ /** @type {boolean} */ this.sRGBEnabled = true;
+
+ /** @type {boolean} */ this.depthClampEnabled = false;
+
+ /** @type {boolean} */ this.polygonOffsetEnabled = false;
+ /** @type {number} */ this.polygonOffsetFactor = 0.0;
+ /** @type {number} */ this.polygonOffsetUnits = 0.0;
+
+ /** @type {Array<boolean>} */ this.colorMask = [true, true, true, true];
+
+ /** @type {number} */ this.numStencilBits = 8;
+};
+
+/**
+ * @constructor
+ */
+rrRenderState.PointState = function() {
+ /** @type {number} */ this.pointSize = 1.0;
+};
+
+/**
+ * @constructor
+ */
+rrRenderState.LineState = function() {
+ /** @type {number} */ this.lineWidth = 1.0;
+};
+
+/**
+ * Constructor checks if the parameter has a "raw" member to detect if the instance is
+ * of type rrRenderState.WindowRectangle or MultisamplePixelBufferAccess.
+ * @param {rrRenderState.WindowRectangle|rrMultisamplePixelBufferAccess.MultisamplePixelBufferAccess} rect_
+ * @constructor
+ */
+rrRenderState.ViewportState = function(rect_) {
+ /** @type {number} */ this.zn = 0.0;
+ /** @type {number} */ this.zf = 1.0;
+ /** @type {rrRenderState.WindowRectangle} */ this.rect;
+
+ if (rect_.raw) {
+ this.rect = new rrRenderState.WindowRectangle(0, 0, rect_.raw().getHeight(),
+ rect_.raw().getDepth());
+ } else {
+ this.rect = /** @type {rrRenderState.WindowRectangle} */ (rect_);
+ }
+};
+
+/**
+ * @constructor
+ */
+rrRenderState.RestartState = function() {
+ /** @type {boolean} */ this.enabled = false;
+ /** @type {number} */ this.restartIndex = 0xFFFFFFFF;
+};
+
+/**
+ * @constructor
+ * @param {rrRenderState.ViewportState} viewport_
+ */
+rrRenderState.RenderState = function(viewport_) {
+ /** @type {rrRenderState.CullMode} */ this.cullMode = rrRenderState.CullMode.NONE;
+ /** @type {number} */ this.provokingVertexConvention;
+ /** @type {rrRenderState.ViewportState} */ this.viewport = viewport_;
+
+ /** @type {rrRenderState.RasterizationState} */ this.rasterization = new rrRenderState.RasterizationState();
+ /** @type {rrRenderState.FragmentOperationState} */ this.fragOps = new rrRenderState.FragmentOperationState();
+ /** @type {rrRenderState.PointState} */ this.point = new rrRenderState.PointState();
+ /** @type {rrRenderState.LineState} */ this.line = new rrRenderState.LineState();
+ /** @type {rrRenderState.RestartState} */ this.restart = new rrRenderState.RestartState();
+};
+
+});