Bug 1945965 – remove new tab April Fools logo. r=home-newtab-reviewers,reemhamz
[gecko.git] / dom / canvas / test / webgl-conf / checkout / deqp / framework / referencerenderer / rrRenderState.js
blobcac4dc56a30a33b1717382404d03fcdf0aade908
1 /*-------------------------------------------------------------------------
2 * drawElements Quality Program Reference Renderer
3 * -----------------------------------------------
5 * Copyright 2014 The Android Open Source Project
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 *//*!
20 * \file
21 * \brief Reference renderer render state.
22 *//*--------------------------------------------------------------------*/
23 'use strict';
24 goog.provide('framework.referencerenderer.rrRenderState');
25 goog.require('framework.common.tcuTexture');
26 goog.require('framework.delibs.debase.deMath');
27 goog.require('framework.referencerenderer.rrDefs');
28 goog.require('framework.referencerenderer.rrMultisamplePixelBufferAccess');
30 goog.scope(function() {
32 var rrRenderState = framework.referencerenderer.rrRenderState;
33 var tcuTexture = framework.common.tcuTexture;
34 var deMath = framework.delibs.debase.deMath;
35 var rrMultisamplePixelBufferAccess = framework.referencerenderer.rrMultisamplePixelBufferAccess;
36 var rrDefs = framework.referencerenderer.rrDefs;
38 /**
39 * Enum for rrRenderState.HorizontalFill values.
40 * @enum {number}
42 rrRenderState.HorizontalFill = {
43 LEFT: 0,
44 RIGHT: 1
47 /**
48 * Enum for rrRenderState.VerticalFill values.
49 * @enum {number}
51 rrRenderState.VerticalFill = {
52 TOP: 0,
53 BOTTOM: 1
56 /**
57 * Enum for rrRenderState.Winding values.
58 * @enum {number}
60 rrRenderState.Winding = {
61 CCW: 0,
62 CC: 1
65 /**
66 * Enum for rrRenderState.CullMode values.
67 * @enum {number}
69 rrRenderState.CullMode = {
70 NONE: 0,
71 BACK: 1,
72 FRONT: 2
75 /**rrRenderState.Winding : rrRenderState.Winding,
77 * @constructor
79 rrRenderState.RasterizationState = function() {
80 /** @type {number} */ this.winding = rrRenderState.Winding.CCW;
81 /** @type {number} */ this.horizontalFill = rrRenderState.HorizontalFill.LEFT;
82 /** @type {number} */ this.verticalFill = rrRenderState.VerticalFill.BOTTOM;
85 /**
86 * Enum for rrRenderState.TestFunc values.
87 * @enum {number}
89 rrRenderState.TestFunc = {
90 NEVER: 0,
91 ALWAYS: 1,
92 LESS: 2,
93 LEQUAL: 3,
94 GREATER: 4,
95 GEQUAL: 5,
96 EQUAL: 6,
97 NOTEQUAL: 7
101 * Enum for rrRenderState.StencilOp values.
102 * @enum {number}
104 rrRenderState.StencilOp = {
105 KEEP: 0,
106 ZERO: 1,
107 REPLACE: 2,
108 INCR: 3, //!< Increment with saturation.
109 DECR: 4, //!< Decrement with saturation.
110 INCR_WRAP: 5,
111 DECR_WRAP: 6,
112 INVERT: 7
116 * Enum for rrRenderState.BlendMode values.
117 * @enum {number}
119 rrRenderState.BlendMode = {
120 NONE: 0, //!< No blending.
121 STANDARD: 1 //!< Standard blending.
122 // Advanced blending is not supported
123 // ADVANCED : 2 //!< Advanced blending mode, as defined in gl.KHR_blend_equation_advanced.
127 * Enum for rrRenderState.BlendEquation values.
128 * @enum {number}
130 rrRenderState.BlendEquation = {
131 ADD: 0,
132 SUBTRACT: 1,
133 REVERSE_SUBTRACT: 2,
134 MIN: 3,
135 MAX: 4
138 // /**
139 // * Enum for rrRenderState.BlendEquationAdvanced values.
140 // * @enum {number}
141 // */
142 // rrRenderState.BlendEquationAdvanced = {
143 // MULTIPLY : 0,
144 // SCREEN : 1,
145 // OVERLAY : 2,
146 // DARKEN : 3,
147 // LIGHTEN : 4,
148 // COLORDODGE : 5,
149 // COLORBURN : 6,
150 // HARDLIGHT : 7,
151 // SOFTLIGHT : 8,
152 // DIFFERENCE : 9,
153 // EXCLUSION : 10,
154 // HSL_HUE : 11,
155 // HSL_SATURATION : 12,
156 // HSL_COLOR : 13,
157 // HSL_LUMINOSITY : 14
158 // };
161 * Enum for rrRenderState.BlendFunc values.
162 * @enum {number}
164 rrRenderState.BlendFunc = {
165 ZERO: 0,
166 ONE: 1,
167 SRC_COLOR: 2,
168 ONE_MINUS_SRC_COLOR: 3,
169 DST_COLOR: 4,
170 ONE_MINUS_DST_COLOR: 5,
171 SRC_ALPHA: 6,
172 ONE_MINUS_SRC_ALPHA: 7,
173 DST_ALPHA: 8,
174 ONE_MINUS_DST_ALPHA: 9,
175 CONSTANT_COLOR: 10,
176 ONE_MINUS_CONSTANT_COLOR: 11,
177 CONSTANT_ALPHA: 12,
178 ONE_MINUS_CONSTANT_ALPHA: 13,
179 SRC_ALPHA_SATURATE: 14,
180 SRC1_COLOR: 15,
181 ONE_MINUS_SRC1_COLOR: 16,
182 SRC1_ALPHA: 17,
183 ONE_MINUS_SRC1_ALPHA: 18
187 * @constructor
189 rrRenderState.StencilState = function() {
190 /** @type {number} */ this.func = rrRenderState.TestFunc.ALWAYS;
191 /** @type {number} */ this.ref = 0;
192 /** @type {number} */ this.compMask = ~0;
193 /** @type {number} */ this.sFail = rrRenderState.StencilOp.KEEP;
194 /** @type {number} */ this.dpFail = rrRenderState.StencilOp.KEEP;
195 /** @type {number} */ this.dpPass = rrRenderState.StencilOp.KEEP;
196 /** @type {number} */ this.writeMask = ~0;
200 * @constructor
202 rrRenderState.BlendState = function() {
203 /** @type {number} */ this.equation = rrRenderState.BlendEquation.ADD;
204 /** @type {number} */ this.srcFunc = rrRenderState.BlendFunc.ONE;
205 /** @type {number} */ this.dstFunc = rrRenderState.BlendFunc.ZERO;
209 * @param {(Array<number>|number)} left_
210 * @param {number=} bottom_
211 * @param {number=} width_
212 * @param {number=} height_
213 * @constructor
215 rrRenderState.WindowRectangle = function(left_, bottom_, width_, height_) {
216 // Is first parameter an array? Use it
217 if (left_.length && left_.length == 4) {
218 this.left = left_[0];
219 this.bottom = left_[1];
220 this.width = left_[2];
221 this.height = left_[3];
222 } else {
223 this.left = left_;
224 this.bottom = bottom_;
225 this.width = width_;
226 this.height = height_;
231 * @constructor
233 rrRenderState.FragmentOperationState = function() {
234 /** @type {boolean} */ this.scissorTestEnabled = false;
235 /** @type {rrRenderState.WindowRectangle} */ this.scissorRectangle = new rrRenderState.WindowRectangle(0, 0, 1, 1);
237 /** @type {boolean} */ this.stencilTestEnabled = false;
239 /** @type {Array<rrRenderState.StencilState>} */ this.stencilStates = [];
240 for (var type in rrDefs.FaceType)
241 this.stencilStates[rrDefs.FaceType[type]] = new rrRenderState.StencilState();
243 /** @type {boolean} */ this.depthTestEnabled = false;
244 /** @type {rrRenderState.TestFunc} */ this.depthFunc = rrRenderState.TestFunc.LESS;
245 /** @type {boolean} */ this.depthMask = true;
247 /** @type {rrRenderState.BlendMode} */ this.blendMode = rrRenderState.BlendMode.NONE;
248 /** @type {rrRenderState.BlendState} */ this.blendRGBState = new rrRenderState.BlendState();
249 /** @type {rrRenderState.BlendState} */ this.blendAState = new rrRenderState.BlendState();
250 /** @type {Array<number>} */ this.blendColor = [0.0, 0.0, 0.0, 0.0];
251 // /** @type {rrRenderState.BlendEquationAdvanced} */ this.blendEquationAdvanced = null;
253 /** @type {boolean} */ this.sRGBEnabled = true;
255 /** @type {boolean} */ this.depthClampEnabled = false;
257 /** @type {boolean} */ this.polygonOffsetEnabled = false;
258 /** @type {number} */ this.polygonOffsetFactor = 0.0;
259 /** @type {number} */ this.polygonOffsetUnits = 0.0;
261 /** @type {Array<boolean>} */ this.colorMask = [true, true, true, true];
263 /** @type {number} */ this.numStencilBits = 8;
267 * @constructor
269 rrRenderState.PointState = function() {
270 /** @type {number} */ this.pointSize = 1.0;
274 * @constructor
276 rrRenderState.LineState = function() {
277 /** @type {number} */ this.lineWidth = 1.0;
281 * Constructor checks if the parameter has a "raw" member to detect if the instance is
282 * of type rrRenderState.WindowRectangle or MultisamplePixelBufferAccess.
283 * @param {rrRenderState.WindowRectangle|rrMultisamplePixelBufferAccess.MultisamplePixelBufferAccess} rect_
284 * @constructor
286 rrRenderState.ViewportState = function(rect_) {
287 /** @type {number} */ this.zn = 0.0;
288 /** @type {number} */ this.zf = 1.0;
289 /** @type {rrRenderState.WindowRectangle} */ this.rect;
291 if (rect_.raw) {
292 this.rect = new rrRenderState.WindowRectangle(0, 0, rect_.raw().getHeight(),
293 rect_.raw().getDepth());
294 } else {
295 this.rect = /** @type {rrRenderState.WindowRectangle} */ (rect_);
300 * @constructor
302 rrRenderState.RestartState = function() {
303 /** @type {boolean} */ this.enabled = false;
304 /** @type {number} */ this.restartIndex = 0xFFFFFFFF;
308 * @constructor
309 * @param {rrRenderState.ViewportState} viewport_
311 rrRenderState.RenderState = function(viewport_) {
312 /** @type {rrRenderState.CullMode} */ this.cullMode = rrRenderState.CullMode.NONE;
313 /** @type {number} */ this.provokingVertexConvention;
314 /** @type {rrRenderState.ViewportState} */ this.viewport = viewport_;
316 /** @type {rrRenderState.RasterizationState} */ this.rasterization = new rrRenderState.RasterizationState();
317 /** @type {rrRenderState.FragmentOperationState} */ this.fragOps = new rrRenderState.FragmentOperationState();
318 /** @type {rrRenderState.PointState} */ this.point = new rrRenderState.PointState();
319 /** @type {rrRenderState.LineState} */ this.line = new rrRenderState.LineState();
320 /** @type {rrRenderState.RestartState} */ this.restart = new rrRenderState.RestartState();