gfx/angle/src/libEGL/Config.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 //
     2 // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
     3 // Use of this source code is governed by a BSD-style license that can be
     4 // found in the LICENSE file.
     5 //
     7 // Config.h: Defines the egl::Config class, describing the format, type
     8 // and size for an egl::Surface. Implements EGLConfig and related functionality.
     9 // [EGL 1.4] section 3.4 page 15.
    11 #ifndef INCLUDE_CONFIG_H_
    12 #define INCLUDE_CONFIG_H_
    14 #define EGLAPI
    15 #include <EGL/egl.h>
    17 #include <set>
    19 #include "libGLESv2/renderer/Renderer.h"
    20 #include "common/angleutils.h"
    22 namespace egl
    23 {
    24 class Display;
    26 class Config
    27 {
    28   public:
    29     Config(rx::ConfigDesc desc, EGLint minSwapInterval, EGLint maxSwapInterval, EGLint texWidth, EGLint texHeight);
    31     EGLConfig getHandle() const;
    33     const GLenum mRenderTargetFormat;
    34     const GLenum mDepthStencilFormat;
    35     const GLint mMultiSample;
    37     EGLint mBufferSize;              // Depth of the color buffer
    38     EGLint mRedSize;                 // Bits of Red in the color buffer
    39     EGLint mGreenSize;               // Bits of Green in the color buffer
    40     EGLint mBlueSize;                // Bits of Blue in the color buffer
    41     EGLint mLuminanceSize;           // Bits of Luminance in the color buffer
    42     EGLint mAlphaSize;               // Bits of Alpha in the color buffer
    43     EGLint mAlphaMaskSize;           // Bits of Alpha Mask in the mask buffer
    44     EGLBoolean mBindToTextureRGB;    // True if bindable to RGB textures.
    45     EGLBoolean mBindToTextureRGBA;   // True if bindable to RGBA textures.
    46     EGLenum mColorBufferType;        // Color buffer type
    47     EGLenum mConfigCaveat;           // Any caveats for the configuration
    48     EGLint mConfigID;                // Unique EGLConfig identifier
    49     EGLint mConformant;              // Whether contexts created with this config are conformant
    50     EGLint mDepthSize;               // Bits of Z in the depth buffer
    51     EGLint mLevel;                   // Frame buffer level
    52     EGLBoolean mMatchNativePixmap;   // Match the native pixmap format
    53     EGLint mMaxPBufferWidth;         // Maximum width of pbuffer
    54     EGLint mMaxPBufferHeight;        // Maximum height of pbuffer
    55     EGLint mMaxPBufferPixels;        // Maximum size of pbuffer
    56     EGLint mMaxSwapInterval;         // Maximum swap interval
    57     EGLint mMinSwapInterval;         // Minimum swap interval
    58     EGLBoolean mNativeRenderable;    // EGL_TRUE if native rendering APIs can render to surface
    59     EGLint mNativeVisualID;          // Handle of corresponding native visual
    60     EGLint mNativeVisualType;        // Native visual type of the associated visual
    61     EGLint mRenderableType;          // Which client rendering APIs are supported.
    62     EGLint mSampleBuffers;           // Number of multisample buffers
    63     EGLint mSamples;                 // Number of samples per pixel
    64     EGLint mStencilSize;             // Bits of Stencil in the stencil buffer
    65     EGLint mSurfaceType;             // Which types of EGL surfaces are supported.
    66     EGLenum mTransparentType;        // Type of transparency supported
    67     EGLint mTransparentRedValue;     // Transparent red value
    68     EGLint mTransparentGreenValue;   // Transparent green value
    69     EGLint mTransparentBlueValue;    // Transparent blue value
    70 };
    72 // Function object used by STL sorting routines for ordering Configs according to [EGL] section 3.4.1 page 24.
    73 class SortConfig
    74 {
    75   public:
    76     explicit SortConfig(const EGLint *attribList);
    78     bool operator()(const Config *x, const Config *y) const;
    79     bool operator()(const Config &x, const Config &y) const;
    81   private:
    82     void scanForWantedComponents(const EGLint *attribList);
    83     EGLint wantedComponentsSize(const Config &config) const;
    85     bool mWantRed;
    86     bool mWantGreen;
    87     bool mWantBlue;
    88     bool mWantAlpha;
    89     bool mWantLuminance;
    90 };
    92 class ConfigSet
    93 {
    94     friend Display;
    96   public:
    97     ConfigSet();
    99     void add(rx::ConfigDesc desc, EGLint minSwapInterval, EGLint maxSwapInterval, EGLint texWidth, EGLint texHeight);
   100     size_t size() const;
   101     bool getConfigs(EGLConfig *configs, const EGLint *attribList, EGLint configSize, EGLint *numConfig);
   102     const egl::Config *get(EGLConfig configHandle);
   104   private:
   105     DISALLOW_COPY_AND_ASSIGN(ConfigSet);
   107     typedef std::set<Config, SortConfig> Set;
   108     typedef Set::iterator Iterator;
   109     Set mSet;
   111     static const EGLint mSortAttribs[];
   112 };
   113 }
   115 #endif   // INCLUDE_CONFIG_H_

mercurial