1*35238bceSAndroid Build Coastguard Worker #ifndef _RRRENDERSTATE_HPP 2*35238bceSAndroid Build Coastguard Worker #define _RRRENDERSTATE_HPP 3*35238bceSAndroid Build Coastguard Worker /*------------------------------------------------------------------------- 4*35238bceSAndroid Build Coastguard Worker * drawElements Quality Program Reference Renderer 5*35238bceSAndroid Build Coastguard Worker * ----------------------------------------------- 6*35238bceSAndroid Build Coastguard Worker * 7*35238bceSAndroid Build Coastguard Worker * Copyright 2014 The Android Open Source Project 8*35238bceSAndroid Build Coastguard Worker * 9*35238bceSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 10*35238bceSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 11*35238bceSAndroid Build Coastguard Worker * You may obtain a copy of the License at 12*35238bceSAndroid Build Coastguard Worker * 13*35238bceSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 14*35238bceSAndroid Build Coastguard Worker * 15*35238bceSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 16*35238bceSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 17*35238bceSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18*35238bceSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 19*35238bceSAndroid Build Coastguard Worker * limitations under the License. 20*35238bceSAndroid Build Coastguard Worker * 21*35238bceSAndroid Build Coastguard Worker *//*! 22*35238bceSAndroid Build Coastguard Worker * \file 23*35238bceSAndroid Build Coastguard Worker * \brief Reference renderer render state. 24*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/ 25*35238bceSAndroid Build Coastguard Worker 26*35238bceSAndroid Build Coastguard Worker #include "rrDefs.hpp" 27*35238bceSAndroid Build Coastguard Worker #include "rrMultisamplePixelBufferAccess.hpp" 28*35238bceSAndroid Build Coastguard Worker #include "tcuTexture.hpp" 29*35238bceSAndroid Build Coastguard Worker 30*35238bceSAndroid Build Coastguard Worker namespace rr 31*35238bceSAndroid Build Coastguard Worker { 32*35238bceSAndroid Build Coastguard Worker 33*35238bceSAndroid Build Coastguard Worker //! Horizontal fill rule 34*35238bceSAndroid Build Coastguard Worker enum HorizontalFill 35*35238bceSAndroid Build Coastguard Worker { 36*35238bceSAndroid Build Coastguard Worker FILL_LEFT, 37*35238bceSAndroid Build Coastguard Worker FILL_RIGHT 38*35238bceSAndroid Build Coastguard Worker }; 39*35238bceSAndroid Build Coastguard Worker 40*35238bceSAndroid Build Coastguard Worker //! Vertical fill rule 41*35238bceSAndroid Build Coastguard Worker enum VerticalFill 42*35238bceSAndroid Build Coastguard Worker { 43*35238bceSAndroid Build Coastguard Worker FILL_TOP, 44*35238bceSAndroid Build Coastguard Worker FILL_BOTTOM, 45*35238bceSAndroid Build Coastguard Worker }; 46*35238bceSAndroid Build Coastguard Worker 47*35238bceSAndroid Build Coastguard Worker //! Winding mode 48*35238bceSAndroid Build Coastguard Worker enum Winding 49*35238bceSAndroid Build Coastguard Worker { 50*35238bceSAndroid Build Coastguard Worker WINDING_CCW = 0, //!< Counter-clockwise winding 51*35238bceSAndroid Build Coastguard Worker WINDING_CW, //!< Clockwise winding 52*35238bceSAndroid Build Coastguard Worker 53*35238bceSAndroid Build Coastguard Worker WINDING_LAST 54*35238bceSAndroid Build Coastguard Worker }; 55*35238bceSAndroid Build Coastguard Worker 56*35238bceSAndroid Build Coastguard Worker //! Triangle cull mode 57*35238bceSAndroid Build Coastguard Worker enum CullMode 58*35238bceSAndroid Build Coastguard Worker { 59*35238bceSAndroid Build Coastguard Worker CULLMODE_NONE, 60*35238bceSAndroid Build Coastguard Worker CULLMODE_BACK, 61*35238bceSAndroid Build Coastguard Worker CULLMODE_FRONT, 62*35238bceSAndroid Build Coastguard Worker 63*35238bceSAndroid Build Coastguard Worker CULLMODE_LAST 64*35238bceSAndroid Build Coastguard Worker }; 65*35238bceSAndroid Build Coastguard Worker 66*35238bceSAndroid Build Coastguard Worker //! Viewport Orientation of renderer this will be compared against 67*35238bceSAndroid Build Coastguard Worker enum ViewportOrientation 68*35238bceSAndroid Build Coastguard Worker { 69*35238bceSAndroid Build Coastguard Worker VIEWPORTORIENTATION_LOWER_LEFT = 0, //<! Corresponds to GL 70*35238bceSAndroid Build Coastguard Worker VIEWPORTORIENTATION_UPPER_LEFT, //<! Corresponds to Vulkan 71*35238bceSAndroid Build Coastguard Worker 72*35238bceSAndroid Build Coastguard Worker VIEWPORTORIENTATION_LAST 73*35238bceSAndroid Build Coastguard Worker }; 74*35238bceSAndroid Build Coastguard Worker 75*35238bceSAndroid Build Coastguard Worker struct RasterizationState 76*35238bceSAndroid Build Coastguard Worker { RasterizationStaterr::RasterizationState77*35238bceSAndroid Build Coastguard Worker RasterizationState(void) 78*35238bceSAndroid Build Coastguard Worker : winding(WINDING_CCW) 79*35238bceSAndroid Build Coastguard Worker , horizontalFill(FILL_LEFT) 80*35238bceSAndroid Build Coastguard Worker , verticalFill(FILL_BOTTOM) 81*35238bceSAndroid Build Coastguard Worker , viewportOrientation(VIEWPORTORIENTATION_LAST) 82*35238bceSAndroid Build Coastguard Worker { 83*35238bceSAndroid Build Coastguard Worker } 84*35238bceSAndroid Build Coastguard Worker 85*35238bceSAndroid Build Coastguard Worker Winding winding; 86*35238bceSAndroid Build Coastguard Worker HorizontalFill horizontalFill; 87*35238bceSAndroid Build Coastguard Worker VerticalFill verticalFill; 88*35238bceSAndroid Build Coastguard Worker ViewportOrientation viewportOrientation; 89*35238bceSAndroid Build Coastguard Worker }; 90*35238bceSAndroid Build Coastguard Worker 91*35238bceSAndroid Build Coastguard Worker enum TestFunc 92*35238bceSAndroid Build Coastguard Worker { 93*35238bceSAndroid Build Coastguard Worker TESTFUNC_NEVER = 0, 94*35238bceSAndroid Build Coastguard Worker TESTFUNC_ALWAYS, 95*35238bceSAndroid Build Coastguard Worker TESTFUNC_LESS, 96*35238bceSAndroid Build Coastguard Worker TESTFUNC_LEQUAL, 97*35238bceSAndroid Build Coastguard Worker TESTFUNC_GREATER, 98*35238bceSAndroid Build Coastguard Worker TESTFUNC_GEQUAL, 99*35238bceSAndroid Build Coastguard Worker TESTFUNC_EQUAL, 100*35238bceSAndroid Build Coastguard Worker TESTFUNC_NOTEQUAL, 101*35238bceSAndroid Build Coastguard Worker 102*35238bceSAndroid Build Coastguard Worker TESTFUNC_LAST 103*35238bceSAndroid Build Coastguard Worker }; 104*35238bceSAndroid Build Coastguard Worker 105*35238bceSAndroid Build Coastguard Worker enum StencilOp 106*35238bceSAndroid Build Coastguard Worker { 107*35238bceSAndroid Build Coastguard Worker STENCILOP_KEEP = 0, 108*35238bceSAndroid Build Coastguard Worker STENCILOP_ZERO, 109*35238bceSAndroid Build Coastguard Worker STENCILOP_REPLACE, 110*35238bceSAndroid Build Coastguard Worker STENCILOP_INCR, //!< Increment with saturation. 111*35238bceSAndroid Build Coastguard Worker STENCILOP_DECR, //!< Decrement with saturation. 112*35238bceSAndroid Build Coastguard Worker STENCILOP_INCR_WRAP, 113*35238bceSAndroid Build Coastguard Worker STENCILOP_DECR_WRAP, 114*35238bceSAndroid Build Coastguard Worker STENCILOP_INVERT, 115*35238bceSAndroid Build Coastguard Worker 116*35238bceSAndroid Build Coastguard Worker STENCILOP_LAST 117*35238bceSAndroid Build Coastguard Worker }; 118*35238bceSAndroid Build Coastguard Worker 119*35238bceSAndroid Build Coastguard Worker enum BlendMode 120*35238bceSAndroid Build Coastguard Worker { 121*35238bceSAndroid Build Coastguard Worker BLENDMODE_NONE = 0, //!< No blending. 122*35238bceSAndroid Build Coastguard Worker BLENDMODE_STANDARD, //!< Standard blending. 123*35238bceSAndroid Build Coastguard Worker BLENDMODE_ADVANCED, //!< Advanced blending mode, as defined in GL_KHR_blend_equation_advanced. 124*35238bceSAndroid Build Coastguard Worker 125*35238bceSAndroid Build Coastguard Worker BLENDMODE_LAST 126*35238bceSAndroid Build Coastguard Worker }; 127*35238bceSAndroid Build Coastguard Worker 128*35238bceSAndroid Build Coastguard Worker enum BlendEquation 129*35238bceSAndroid Build Coastguard Worker { 130*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_ADD = 0, 131*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_SUBTRACT, 132*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_REVERSE_SUBTRACT, 133*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_MIN, 134*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_MAX, 135*35238bceSAndroid Build Coastguard Worker 136*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_LAST 137*35238bceSAndroid Build Coastguard Worker }; 138*35238bceSAndroid Build Coastguard Worker 139*35238bceSAndroid Build Coastguard Worker enum BlendEquationAdvanced 140*35238bceSAndroid Build Coastguard Worker { 141*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_ADVANCED_MULTIPLY = 0, 142*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_ADVANCED_SCREEN, 143*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_ADVANCED_OVERLAY, 144*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_ADVANCED_DARKEN, 145*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_ADVANCED_LIGHTEN, 146*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_ADVANCED_COLORDODGE, 147*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_ADVANCED_COLORBURN, 148*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_ADVANCED_HARDLIGHT, 149*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_ADVANCED_SOFTLIGHT, 150*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_ADVANCED_DIFFERENCE, 151*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_ADVANCED_EXCLUSION, 152*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_ADVANCED_HSL_HUE, 153*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_ADVANCED_HSL_SATURATION, 154*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_ADVANCED_HSL_COLOR, 155*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_ADVANCED_HSL_LUMINOSITY, 156*35238bceSAndroid Build Coastguard Worker 157*35238bceSAndroid Build Coastguard Worker BLENDEQUATION_ADVANCED_LAST 158*35238bceSAndroid Build Coastguard Worker }; 159*35238bceSAndroid Build Coastguard Worker 160*35238bceSAndroid Build Coastguard Worker enum BlendFunc 161*35238bceSAndroid Build Coastguard Worker { 162*35238bceSAndroid Build Coastguard Worker BLENDFUNC_ZERO = 0, 163*35238bceSAndroid Build Coastguard Worker BLENDFUNC_ONE, 164*35238bceSAndroid Build Coastguard Worker BLENDFUNC_SRC_COLOR, 165*35238bceSAndroid Build Coastguard Worker BLENDFUNC_ONE_MINUS_SRC_COLOR, 166*35238bceSAndroid Build Coastguard Worker BLENDFUNC_DST_COLOR, 167*35238bceSAndroid Build Coastguard Worker BLENDFUNC_ONE_MINUS_DST_COLOR, 168*35238bceSAndroid Build Coastguard Worker BLENDFUNC_SRC_ALPHA, 169*35238bceSAndroid Build Coastguard Worker BLENDFUNC_ONE_MINUS_SRC_ALPHA, 170*35238bceSAndroid Build Coastguard Worker BLENDFUNC_DST_ALPHA, 171*35238bceSAndroid Build Coastguard Worker BLENDFUNC_ONE_MINUS_DST_ALPHA, 172*35238bceSAndroid Build Coastguard Worker BLENDFUNC_CONSTANT_COLOR, 173*35238bceSAndroid Build Coastguard Worker BLENDFUNC_ONE_MINUS_CONSTANT_COLOR, 174*35238bceSAndroid Build Coastguard Worker BLENDFUNC_CONSTANT_ALPHA, 175*35238bceSAndroid Build Coastguard Worker BLENDFUNC_ONE_MINUS_CONSTANT_ALPHA, 176*35238bceSAndroid Build Coastguard Worker BLENDFUNC_SRC_ALPHA_SATURATE, 177*35238bceSAndroid Build Coastguard Worker BLENDFUNC_SRC1_COLOR, 178*35238bceSAndroid Build Coastguard Worker BLENDFUNC_ONE_MINUS_SRC1_COLOR, 179*35238bceSAndroid Build Coastguard Worker BLENDFUNC_SRC1_ALPHA, 180*35238bceSAndroid Build Coastguard Worker BLENDFUNC_ONE_MINUS_SRC1_ALPHA, 181*35238bceSAndroid Build Coastguard Worker 182*35238bceSAndroid Build Coastguard Worker BLENDFUNC_LAST 183*35238bceSAndroid Build Coastguard Worker }; 184*35238bceSAndroid Build Coastguard Worker 185*35238bceSAndroid Build Coastguard Worker struct StencilState 186*35238bceSAndroid Build Coastguard Worker { 187*35238bceSAndroid Build Coastguard Worker TestFunc func; 188*35238bceSAndroid Build Coastguard Worker int ref; 189*35238bceSAndroid Build Coastguard Worker uint32_t compMask; 190*35238bceSAndroid Build Coastguard Worker StencilOp sFail; 191*35238bceSAndroid Build Coastguard Worker StencilOp dpFail; 192*35238bceSAndroid Build Coastguard Worker StencilOp dpPass; 193*35238bceSAndroid Build Coastguard Worker uint32_t writeMask; 194*35238bceSAndroid Build Coastguard Worker StencilStaterr::StencilState195*35238bceSAndroid Build Coastguard Worker StencilState(void) 196*35238bceSAndroid Build Coastguard Worker : func(TESTFUNC_ALWAYS) 197*35238bceSAndroid Build Coastguard Worker , ref(0) 198*35238bceSAndroid Build Coastguard Worker , compMask(~0U) 199*35238bceSAndroid Build Coastguard Worker , sFail(STENCILOP_KEEP) 200*35238bceSAndroid Build Coastguard Worker , dpFail(STENCILOP_KEEP) 201*35238bceSAndroid Build Coastguard Worker , dpPass(STENCILOP_KEEP) 202*35238bceSAndroid Build Coastguard Worker , writeMask(~0U) 203*35238bceSAndroid Build Coastguard Worker { 204*35238bceSAndroid Build Coastguard Worker } 205*35238bceSAndroid Build Coastguard Worker }; 206*35238bceSAndroid Build Coastguard Worker 207*35238bceSAndroid Build Coastguard Worker struct BlendState 208*35238bceSAndroid Build Coastguard Worker { 209*35238bceSAndroid Build Coastguard Worker BlendEquation equation; 210*35238bceSAndroid Build Coastguard Worker BlendFunc srcFunc; 211*35238bceSAndroid Build Coastguard Worker BlendFunc dstFunc; 212*35238bceSAndroid Build Coastguard Worker BlendStaterr::BlendState213*35238bceSAndroid Build Coastguard Worker BlendState(void) : equation(BLENDEQUATION_ADD), srcFunc(BLENDFUNC_ONE), dstFunc(BLENDFUNC_ZERO) 214*35238bceSAndroid Build Coastguard Worker { 215*35238bceSAndroid Build Coastguard Worker } 216*35238bceSAndroid Build Coastguard Worker }; 217*35238bceSAndroid Build Coastguard Worker 218*35238bceSAndroid Build Coastguard Worker struct WindowRectangle 219*35238bceSAndroid Build Coastguard Worker { 220*35238bceSAndroid Build Coastguard Worker int left; 221*35238bceSAndroid Build Coastguard Worker int bottom; 222*35238bceSAndroid Build Coastguard Worker int width; 223*35238bceSAndroid Build Coastguard Worker int height; 224*35238bceSAndroid Build Coastguard Worker WindowRectanglerr::WindowRectangle225*35238bceSAndroid Build Coastguard Worker WindowRectangle(int left_, int bottom_, int width_, int height_) 226*35238bceSAndroid Build Coastguard Worker : left(left_) 227*35238bceSAndroid Build Coastguard Worker , bottom(bottom_) 228*35238bceSAndroid Build Coastguard Worker , width(width_) 229*35238bceSAndroid Build Coastguard Worker , height(height_) 230*35238bceSAndroid Build Coastguard Worker { 231*35238bceSAndroid Build Coastguard Worker } 232*35238bceSAndroid Build Coastguard Worker }; 233*35238bceSAndroid Build Coastguard Worker 234*35238bceSAndroid Build Coastguard Worker struct FragmentOperationState 235*35238bceSAndroid Build Coastguard Worker { 236*35238bceSAndroid Build Coastguard Worker // Variables corresponding to GL state variables. 237*35238bceSAndroid Build Coastguard Worker 238*35238bceSAndroid Build Coastguard Worker bool scissorTestEnabled; 239*35238bceSAndroid Build Coastguard Worker WindowRectangle scissorRectangle; 240*35238bceSAndroid Build Coastguard Worker 241*35238bceSAndroid Build Coastguard Worker bool stencilTestEnabled; 242*35238bceSAndroid Build Coastguard Worker StencilState stencilStates[2]; //!< Indexed with FACETYPE_FRONT and FACETYPE_BACK. 243*35238bceSAndroid Build Coastguard Worker 244*35238bceSAndroid Build Coastguard Worker bool depthTestEnabled; 245*35238bceSAndroid Build Coastguard Worker TestFunc depthFunc; 246*35238bceSAndroid Build Coastguard Worker bool depthMask; 247*35238bceSAndroid Build Coastguard Worker 248*35238bceSAndroid Build Coastguard Worker bool depthBoundsTestEnabled; 249*35238bceSAndroid Build Coastguard Worker float minDepthBound; 250*35238bceSAndroid Build Coastguard Worker float maxDepthBound; 251*35238bceSAndroid Build Coastguard Worker 252*35238bceSAndroid Build Coastguard Worker BlendMode blendMode; 253*35238bceSAndroid Build Coastguard Worker 254*35238bceSAndroid Build Coastguard Worker // Standard blending state 255*35238bceSAndroid Build Coastguard Worker BlendState blendRGBState; 256*35238bceSAndroid Build Coastguard Worker BlendState blendAState; 257*35238bceSAndroid Build Coastguard Worker tcu::Vec4 blendColor; //!< Components should be in range [0, 1]. 258*35238bceSAndroid Build Coastguard Worker 259*35238bceSAndroid Build Coastguard Worker BlendEquationAdvanced blendEquationAdvaced; 260*35238bceSAndroid Build Coastguard Worker 261*35238bceSAndroid Build Coastguard Worker bool sRGBEnabled; 262*35238bceSAndroid Build Coastguard Worker 263*35238bceSAndroid Build Coastguard Worker bool depthClampEnabled; 264*35238bceSAndroid Build Coastguard Worker 265*35238bceSAndroid Build Coastguard Worker bool polygonOffsetEnabled; 266*35238bceSAndroid Build Coastguard Worker float polygonOffsetFactor; 267*35238bceSAndroid Build Coastguard Worker float polygonOffsetUnits; 268*35238bceSAndroid Build Coastguard Worker 269*35238bceSAndroid Build Coastguard Worker tcu::BVec4 colorMask; 270*35238bceSAndroid Build Coastguard Worker 271*35238bceSAndroid Build Coastguard Worker // Variables not corresponding to configurable GL state, but other GL variables. 272*35238bceSAndroid Build Coastguard Worker 273*35238bceSAndroid Build Coastguard Worker int numStencilBits; 274*35238bceSAndroid Build Coastguard Worker FragmentOperationStaterr::FragmentOperationState275*35238bceSAndroid Build Coastguard Worker FragmentOperationState(void) 276*35238bceSAndroid Build Coastguard Worker : scissorTestEnabled(false) 277*35238bceSAndroid Build Coastguard Worker , scissorRectangle(0, 0, 1, 1) 278*35238bceSAndroid Build Coastguard Worker 279*35238bceSAndroid Build Coastguard Worker , stencilTestEnabled(false) 280*35238bceSAndroid Build Coastguard Worker // \note stencilStates[] members get default-constructed. 281*35238bceSAndroid Build Coastguard Worker 282*35238bceSAndroid Build Coastguard Worker , depthTestEnabled(false) 283*35238bceSAndroid Build Coastguard Worker , depthFunc(TESTFUNC_LESS) 284*35238bceSAndroid Build Coastguard Worker , depthMask(true) 285*35238bceSAndroid Build Coastguard Worker 286*35238bceSAndroid Build Coastguard Worker , depthBoundsTestEnabled(false) 287*35238bceSAndroid Build Coastguard Worker , minDepthBound(0.0f) 288*35238bceSAndroid Build Coastguard Worker , maxDepthBound(1.0f) 289*35238bceSAndroid Build Coastguard Worker 290*35238bceSAndroid Build Coastguard Worker , blendMode(BLENDMODE_NONE) 291*35238bceSAndroid Build Coastguard Worker , blendRGBState() 292*35238bceSAndroid Build Coastguard Worker , blendAState() 293*35238bceSAndroid Build Coastguard Worker , blendColor(0.0f) 294*35238bceSAndroid Build Coastguard Worker , blendEquationAdvaced(BLENDEQUATION_ADVANCED_LAST) 295*35238bceSAndroid Build Coastguard Worker 296*35238bceSAndroid Build Coastguard Worker , sRGBEnabled(true) 297*35238bceSAndroid Build Coastguard Worker 298*35238bceSAndroid Build Coastguard Worker , depthClampEnabled(false) 299*35238bceSAndroid Build Coastguard Worker 300*35238bceSAndroid Build Coastguard Worker , polygonOffsetEnabled(false) 301*35238bceSAndroid Build Coastguard Worker , polygonOffsetFactor(0.0f) 302*35238bceSAndroid Build Coastguard Worker , polygonOffsetUnits(0.0f) 303*35238bceSAndroid Build Coastguard Worker 304*35238bceSAndroid Build Coastguard Worker , colorMask(true) 305*35238bceSAndroid Build Coastguard Worker 306*35238bceSAndroid Build Coastguard Worker , numStencilBits(8) 307*35238bceSAndroid Build Coastguard Worker { 308*35238bceSAndroid Build Coastguard Worker } 309*35238bceSAndroid Build Coastguard Worker }; 310*35238bceSAndroid Build Coastguard Worker 311*35238bceSAndroid Build Coastguard Worker struct PointState 312*35238bceSAndroid Build Coastguard Worker { 313*35238bceSAndroid Build Coastguard Worker float pointSize; 314*35238bceSAndroid Build Coastguard Worker PointStaterr::PointState315*35238bceSAndroid Build Coastguard Worker PointState(void) : pointSize(1.0f) 316*35238bceSAndroid Build Coastguard Worker { 317*35238bceSAndroid Build Coastguard Worker } 318*35238bceSAndroid Build Coastguard Worker }; 319*35238bceSAndroid Build Coastguard Worker 320*35238bceSAndroid Build Coastguard Worker struct LineState 321*35238bceSAndroid Build Coastguard Worker { 322*35238bceSAndroid Build Coastguard Worker float lineWidth; 323*35238bceSAndroid Build Coastguard Worker LineStaterr::LineState324*35238bceSAndroid Build Coastguard Worker LineState(void) : lineWidth(1.0f) 325*35238bceSAndroid Build Coastguard Worker { 326*35238bceSAndroid Build Coastguard Worker } 327*35238bceSAndroid Build Coastguard Worker }; 328*35238bceSAndroid Build Coastguard Worker 329*35238bceSAndroid Build Coastguard Worker struct ViewportState 330*35238bceSAndroid Build Coastguard Worker { 331*35238bceSAndroid Build Coastguard Worker WindowRectangle rect; 332*35238bceSAndroid Build Coastguard Worker float zn; 333*35238bceSAndroid Build Coastguard Worker float zf; 334*35238bceSAndroid Build Coastguard Worker ViewportStaterr::ViewportState335*35238bceSAndroid Build Coastguard Worker explicit ViewportState(const WindowRectangle &rect_) : rect(rect_), zn(0.0f), zf(1.0f) 336*35238bceSAndroid Build Coastguard Worker { 337*35238bceSAndroid Build Coastguard Worker } 338*35238bceSAndroid Build Coastguard Worker ViewportStaterr::ViewportState339*35238bceSAndroid Build Coastguard Worker explicit ViewportState(const rr::MultisampleConstPixelBufferAccess &multisampleBuffer) 340*35238bceSAndroid Build Coastguard Worker : rect(0, 0, multisampleBuffer.raw().getHeight(), multisampleBuffer.raw().getDepth()) 341*35238bceSAndroid Build Coastguard Worker , zn(0.0f) 342*35238bceSAndroid Build Coastguard Worker , zf(1.0f) 343*35238bceSAndroid Build Coastguard Worker { 344*35238bceSAndroid Build Coastguard Worker } 345*35238bceSAndroid Build Coastguard Worker }; 346*35238bceSAndroid Build Coastguard Worker 347*35238bceSAndroid Build Coastguard Worker struct RestartState 348*35238bceSAndroid Build Coastguard Worker { 349*35238bceSAndroid Build Coastguard Worker bool enabled; 350*35238bceSAndroid Build Coastguard Worker uint32_t restartIndex; 351*35238bceSAndroid Build Coastguard Worker RestartStaterr::RestartState352*35238bceSAndroid Build Coastguard Worker RestartState(void) : enabled(false), restartIndex(0xFFFFFFFFul) 353*35238bceSAndroid Build Coastguard Worker { 354*35238bceSAndroid Build Coastguard Worker } 355*35238bceSAndroid Build Coastguard Worker }; 356*35238bceSAndroid Build Coastguard Worker 357*35238bceSAndroid Build Coastguard Worker //! Rasterizer configuration 358*35238bceSAndroid Build Coastguard Worker struct RenderState 359*35238bceSAndroid Build Coastguard Worker { RenderStaterr::RenderState360*35238bceSAndroid Build Coastguard Worker explicit RenderState(const ViewportState &viewport_, const int subpixelBits_, 361*35238bceSAndroid Build Coastguard Worker ViewportOrientation viewportOrientation_ = VIEWPORTORIENTATION_LOWER_LEFT) 362*35238bceSAndroid Build Coastguard Worker : cullMode(CULLMODE_NONE) 363*35238bceSAndroid Build Coastguard Worker , provokingVertexConvention(PROVOKINGVERTEX_LAST) 364*35238bceSAndroid Build Coastguard Worker , viewport(viewport_) 365*35238bceSAndroid Build Coastguard Worker , viewportOrientation(viewportOrientation_) 366*35238bceSAndroid Build Coastguard Worker , subpixelBits(subpixelBits_) 367*35238bceSAndroid Build Coastguard Worker { 368*35238bceSAndroid Build Coastguard Worker rasterization.viewportOrientation = viewportOrientation; 369*35238bceSAndroid Build Coastguard Worker } 370*35238bceSAndroid Build Coastguard Worker 371*35238bceSAndroid Build Coastguard Worker enum 372*35238bceSAndroid Build Coastguard Worker { 373*35238bceSAndroid Build Coastguard Worker DEFAULT_SUBPIXEL_BITS = 8 374*35238bceSAndroid Build Coastguard Worker }; 375*35238bceSAndroid Build Coastguard Worker 376*35238bceSAndroid Build Coastguard Worker CullMode cullMode; 377*35238bceSAndroid Build Coastguard Worker ProvokingVertex provokingVertexConvention; 378*35238bceSAndroid Build Coastguard Worker RasterizationState rasterization; 379*35238bceSAndroid Build Coastguard Worker FragmentOperationState fragOps; 380*35238bceSAndroid Build Coastguard Worker PointState point; 381*35238bceSAndroid Build Coastguard Worker ViewportState viewport; 382*35238bceSAndroid Build Coastguard Worker LineState line; 383*35238bceSAndroid Build Coastguard Worker RestartState restart; 384*35238bceSAndroid Build Coastguard Worker ViewportOrientation viewportOrientation; 385*35238bceSAndroid Build Coastguard Worker const int subpixelBits; 386*35238bceSAndroid Build Coastguard Worker }; 387*35238bceSAndroid Build Coastguard Worker 388*35238bceSAndroid Build Coastguard Worker } // namespace rr 389*35238bceSAndroid Build Coastguard Worker 390*35238bceSAndroid Build Coastguard Worker #endif // _RRRENDERSTATE_HPP 391