13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#ifndef _RRRENDERSTATE_HPP 23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#define _RRRENDERSTATE_HPP 33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*------------------------------------------------------------------------- 43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Quality Program Reference Renderer 53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * ----------------------------------------------- 63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Copyright 2014 The Android Open Source Project 83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Licensed under the Apache License, Version 2.0 (the "License"); 103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * you may not use this file except in compliance with the License. 113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * You may obtain a copy of the License at 123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * http://www.apache.org/licenses/LICENSE-2.0 143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Unless required by applicable law or agreed to in writing, software 163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * distributed under the License is distributed on an "AS IS" BASIS, 173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * See the License for the specific language governing permissions and 193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * limitations under the License. 203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*! 223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \file 233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Reference renderer render state. 243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "rrDefs.hpp" 273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "rrMultisamplePixelBufferAccess.hpp" 283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuTexture.hpp" 293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 303c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace rr 313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry//! Horizontal fill rule 343c827367444ee418f129b2c238299f49d3264554Jarkko Poyryenum HorizontalFill 353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FILL_LEFT, 373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FILL_RIGHT 383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry//! Vertical fill rule 413c827367444ee418f129b2c238299f49d3264554Jarkko Poyryenum VerticalFill 423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FILL_TOP, 443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FILL_BOTTOM, 453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry//! Winding mode 483c827367444ee418f129b2c238299f49d3264554Jarkko Poyryenum Winding 493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry WINDING_CCW = 0, //!< Counter-clockwise winding 513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry WINDING_CW, //!< Clockwise winding 523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry WINDING_LAST 543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry//! Triangle cull mode 573c827367444ee418f129b2c238299f49d3264554Jarkko Poyryenum CullMode 583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry CULLMODE_NONE, 603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry CULLMODE_BACK, 613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry CULLMODE_FRONT, 623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry CULLMODE_LAST 643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 663c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystruct RasterizationState 673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry RasterizationState (void) 693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry : winding (WINDING_CCW) 703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , horizontalFill (FILL_LEFT) 713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , verticalFill (FILL_BOTTOM) 723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry Winding winding; 763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry HorizontalFill horizontalFill; 773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry VerticalFill verticalFill; 783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 803c827367444ee418f129b2c238299f49d3264554Jarkko Poyryenum TestFunc 813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TESTFUNC_NEVER = 0, 833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TESTFUNC_ALWAYS, 843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TESTFUNC_LESS, 853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TESTFUNC_LEQUAL, 863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TESTFUNC_GREATER, 873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TESTFUNC_GEQUAL, 883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TESTFUNC_EQUAL, 893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TESTFUNC_NOTEQUAL, 903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TESTFUNC_LAST 923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 943c827367444ee418f129b2c238299f49d3264554Jarkko Poyryenum StencilOp 953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry STENCILOP_KEEP = 0, 973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry STENCILOP_ZERO, 983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry STENCILOP_REPLACE, 993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry STENCILOP_INCR, //!< Increment with saturation. 1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry STENCILOP_DECR, //!< Decrement with saturation. 1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry STENCILOP_INCR_WRAP, 1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry STENCILOP_DECR_WRAP, 1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry STENCILOP_INVERT, 1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry STENCILOP_LAST 1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1083c827367444ee418f129b2c238299f49d3264554Jarkko Poyryenum BlendMode 1093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDMODE_NONE = 0, //!< No blending. 1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDMODE_STANDARD, //!< Standard blending. 1123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDMODE_ADVANCED, //!< Advanced blending mode, as defined in GL_KHR_blend_equation_advanced. 1133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDMODE_LAST 1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 1163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyryenum BlendEquation 1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_ADD = 0, 1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_SUBTRACT, 1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_REVERSE_SUBTRACT, 1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_MIN, 1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_MAX, 1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_LAST 1263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 1273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyryenum BlendEquationAdvanced 1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_ADVANCED_MULTIPLY = 0, 1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_ADVANCED_SCREEN, 1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_ADVANCED_OVERLAY, 1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_ADVANCED_DARKEN, 1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_ADVANCED_LIGHTEN, 1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_ADVANCED_COLORDODGE, 1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_ADVANCED_COLORBURN, 1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_ADVANCED_HARDLIGHT, 1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_ADVANCED_SOFTLIGHT, 1393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_ADVANCED_DIFFERENCE, 1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_ADVANCED_EXCLUSION, 1413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_ADVANCED_HSL_HUE, 1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_ADVANCED_HSL_SATURATION, 1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_ADVANCED_HSL_COLOR, 1443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_ADVANCED_HSL_LUMINOSITY, 1453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDEQUATION_ADVANCED_LAST 1473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1493c827367444ee418f129b2c238299f49d3264554Jarkko Poyryenum BlendFunc 1503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_ZERO = 0, 1523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_ONE, 1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_SRC_COLOR, 1543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_ONE_MINUS_SRC_COLOR, 1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_DST_COLOR, 1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_ONE_MINUS_DST_COLOR, 1573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_SRC_ALPHA, 1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_ONE_MINUS_SRC_ALPHA, 1593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_DST_ALPHA, 1603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_ONE_MINUS_DST_ALPHA, 1613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_CONSTANT_COLOR, 1623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_ONE_MINUS_CONSTANT_COLOR, 1633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_CONSTANT_ALPHA, 1643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_ONE_MINUS_CONSTANT_ALPHA, 1653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_SRC_ALPHA_SATURATE, 1663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_SRC1_COLOR, 1673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_ONE_MINUS_SRC1_COLOR, 1683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_SRC1_ALPHA, 1693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_ONE_MINUS_SRC1_ALPHA, 1703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BLENDFUNC_LAST 1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1743c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystruct StencilState 1753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TestFunc func; 1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int ref; 1783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry deUint32 compMask; 1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry StencilOp sFail; 1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry StencilOp dpFail; 1813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry StencilOp dpPass; 1823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry deUint32 writeMask; 1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry StencilState (void) 1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry : func (TESTFUNC_ALWAYS) 1863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , ref (0) 1873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , compMask (~0U) 1883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , sFail (STENCILOP_KEEP) 1893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , dpFail (STENCILOP_KEEP) 1903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , dpPass (STENCILOP_KEEP) 1913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , writeMask (~0U) 1923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 1933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 1943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 1953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1963c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystruct BlendState 1973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BlendEquation equation; 1993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BlendFunc srcFunc; 2003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BlendFunc dstFunc; 2013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BlendState (void) 2033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry : equation (BLENDEQUATION_ADD) 2043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , srcFunc (BLENDFUNC_ONE) 2053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , dstFunc (BLENDFUNC_ZERO) 2063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 2073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 2083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 2093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2103c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystruct WindowRectangle 2113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 2123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int left; 2133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int bottom; 2143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int width; 2153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int height; 2163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry WindowRectangle (int left_, int bottom_, int width_, int height_) 2183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry : left (left_) 2193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , bottom (bottom_) 2203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , width (width_) 2213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , height (height_) 2223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 2233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 2243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 2253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2263c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystruct FragmentOperationState 2273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 2283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // Variables corresponding to GL state variables. 2293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry bool scissorTestEnabled; 2313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry WindowRectangle scissorRectangle; 2323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry bool stencilTestEnabled; 2343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry StencilState stencilStates[2]; //!< Indexed with FACETYPE_FRONT and FACETYPE_BACK. 2353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry bool depthTestEnabled; 2373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TestFunc depthFunc; 2383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry bool depthMask; 2393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BlendMode blendMode; 2413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // Standard blending state 2433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BlendState blendRGBState; 2443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BlendState blendAState; 2453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry tcu::Vec4 blendColor; //!< Components should be in range [0, 1]. 2463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BlendEquationAdvanced blendEquationAdvaced; 2483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry bool sRGBEnabled; 2503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry bool depthClampEnabled; 2523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry bool polygonOffsetEnabled; 2543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry float polygonOffsetFactor; 2553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry float polygonOffsetUnits; 2563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry tcu::BVec4 colorMask; 2583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // Variables not corresponding to configurable GL state, but other GL variables. 2603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int numStencilBits; 2623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FragmentOperationState (void) 2643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry : scissorTestEnabled (false) 2653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , scissorRectangle (0, 0, 1, 1) 2663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , stencilTestEnabled (false) 2683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // \note stencilStates[] members get default-constructed. 2693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , depthTestEnabled (false) 2713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , depthFunc (TESTFUNC_LESS) 2723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , depthMask (true) 2733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , blendMode (BLENDMODE_NONE) 2753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , blendRGBState () 2763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , blendAState () 2773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , blendColor (0.0f) 2783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , blendEquationAdvaced (BLENDEQUATION_ADVANCED_LAST) 2793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , sRGBEnabled (true) 2813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , depthClampEnabled (false) 2833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , polygonOffsetEnabled (false) 2853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , polygonOffsetFactor (0.0f) 2863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , polygonOffsetUnits (0.0f) 2873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , colorMask (true) 2893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , numStencilBits (8) 2913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 2923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 2933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 2943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2953c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystruct PointState 2963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 2973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry float pointSize; 2983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry PointState (void) 3003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry : pointSize(1.0f) 3013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 3023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 3033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 3043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3053c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystruct LineState 3063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 3073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry float lineWidth; 3083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry LineState (void) 3103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry : lineWidth(1.0f) 3113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 3123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 3133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 3143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3163c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystruct ViewportState 3173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 3183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry WindowRectangle rect; 3193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry float zn; 3203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry float zf; 3213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry explicit ViewportState (const WindowRectangle& rect_) 3233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry : rect (rect_) 3243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , zn (0.0f) 3253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , zf (1.0f) 3263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 3273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 3283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry explicit ViewportState (const rr::MultisampleConstPixelBufferAccess& multisampleBuffer) 3303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry : rect (0, 0, multisampleBuffer.raw().getHeight(), multisampleBuffer.raw().getDepth()) 3313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , zn (0.0f) 3323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , zf (1.0f) 3333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 3343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 3353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 3363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3373c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystruct RestartState 3383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 3393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry bool enabled; 3403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry deUint32 restartIndex; 3413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry RestartState (void) 3433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry : enabled (false) 3443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , restartIndex (0xFFFFFFFFul) 3453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 3463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 3473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 3483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3493c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystruct RenderState 3503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 3513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry explicit RenderState (const ViewportState& viewport_) 3523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry : cullMode (CULLMODE_NONE) 3533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , provokingVertexConvention (PROVOKINGVERTEX_LAST) 3543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , viewport (viewport_) 3553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 3563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 3573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry CullMode cullMode; 3593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ProvokingVertex provokingVertexConvention; 3603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry RasterizationState rasterization; 3613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FragmentOperationState fragOps; 3623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry PointState point; 3633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ViewportState viewport; 3643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry LineState line; 3653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry RestartState restart; 3663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 3673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // rr 3693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#endif // _RRRENDERSTATE_HPP 371