| #ifndef _GLURENDERCONFIG_HPP |
| #define _GLURENDERCONFIG_HPP |
| /*------------------------------------------------------------------------- |
| * 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. |
| * |
| *//*! |
| * \file |
| * \brief OpenGL rendering configuration. |
| *//*--------------------------------------------------------------------*/ |
| |
| #include "tcuDefs.hpp" |
| #include "gluRenderContext.hpp" |
| |
| namespace tcu |
| { |
| class CommandLine; |
| } |
| |
| namespace glu |
| { |
| |
| enum ResetNotificationStrategy |
| { |
| RESET_NOTIFICATION_STRATEGY_NOT_SPECIFIED = 0, //!< Not specified, implementation-dependent |
| RESET_NOTIFICATION_STRATEGY_NO_RESET_NOTIFICATION, //!< No reset notification (may not be supported) |
| RESET_NOTIFICATION_STRATEGY_LOSE_CONTEXT_ON_RESET, //!< Lose context on reset (may not be supported) |
| |
| RESET_NOTIFICATION_STRATEGY_LAST |
| }; |
| |
| /*--------------------------------------------------------------------*//*! |
| * \brief Rendering context configuration. |
| *//*--------------------------------------------------------------------*/ |
| struct RenderConfig |
| { |
| enum SurfaceType |
| { |
| SURFACETYPE_DONT_CARE = 0, |
| SURFACETYPE_WINDOW, //!< Native window. |
| SURFACETYPE_OFFSCREEN_NATIVE, //!< Native renderable offscreen buffer, such as pixmap or bitmap. |
| SURFACETYPE_OFFSCREEN_GENERIC, //!< Generic offscreen buffer, such as EGL pbuffer. |
| |
| SURFACETYPE_LAST |
| }; |
| |
| enum Visibility |
| { |
| VISIBILITY_HIDDEN = 0, |
| VISIBILITY_VISIBLE, |
| VISIBILITY_FULLSCREEN, |
| |
| VISIBILITY_LAST |
| }; |
| |
| enum |
| { |
| DONT_CARE = -1 |
| }; |
| |
| ContextType type; |
| |
| int width; |
| int height; |
| SurfaceType surfaceType; |
| Visibility windowVisibility; |
| |
| int id; |
| |
| int redBits; |
| int greenBits; |
| int blueBits; |
| int alphaBits; |
| int depthBits; |
| int stencilBits; |
| int numSamples; |
| |
| ResetNotificationStrategy resetNotificationStrategy; |
| |
| RenderConfig (ContextType type_ = ContextType()) |
| : type (type_) |
| , width (DONT_CARE) |
| , height (DONT_CARE) |
| , surfaceType (SURFACETYPE_DONT_CARE) |
| , windowVisibility (VISIBILITY_VISIBLE) |
| , id (DONT_CARE) |
| , redBits (DONT_CARE) |
| , greenBits (DONT_CARE) |
| , blueBits (DONT_CARE) |
| , alphaBits (DONT_CARE) |
| , depthBits (DONT_CARE) |
| , stencilBits (DONT_CARE) |
| , numSamples (DONT_CARE) |
| , resetNotificationStrategy (RESET_NOTIFICATION_STRATEGY_NOT_SPECIFIED) |
| { |
| } |
| } DE_WARN_UNUSED_TYPE; |
| |
| // Utilities |
| |
| void parseRenderConfig (RenderConfig* config, const tcu::CommandLine& cmdLine); |
| RenderConfig::Visibility parseWindowVisibility (const tcu::CommandLine& cmdLine); |
| |
| template<typename T> |
| T getValueOrDefault (const RenderConfig& config, const T RenderConfig::*field, T defaultValue) |
| { |
| T value = config.*field; |
| return value == (T)RenderConfig::DONT_CARE ? defaultValue : value; |
| } |
| |
| } // glu |
| |
| #endif // _GLURENDERCONFIG_HPP |