Edit

kc3-lang/angle/src/libEGL/Config.h

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2014-08-01 10:04:09
    Hash : 7bf0c867
    Message : Fix GN build for libEGL. Our build in GN differed slightly from our gyp build, causing the linker to complain about inconsistent linkage. Also remove some stray definitions of EGLAPI from our headers. Change-Id: I5d3a09ccb0cec528ead33944ce0996cceed32d86 Reviewed-on: https://chromium-review.googlesource.com/210821 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>

  • src/libEGL/Config.h
  • //
    // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    
    // Config.h: Defines the egl::Config class, describing the format, type
    // and size for an egl::Surface. Implements EGLConfig and related functionality.
    // [EGL 1.4] section 3.4 page 15.
    
    #ifndef INCLUDE_CONFIG_H_
    #define INCLUDE_CONFIG_H_
    
    #include <EGL/egl.h>
    
    #include <set>
    
    #include "libGLESv2/renderer/Renderer.h"
    #include "common/angleutils.h"
    
    namespace egl
    {
    class Display;
    
    class Config
    {
      public:
        Config(rx::ConfigDesc desc, EGLint minSwapInterval, EGLint maxSwapInterval, EGLint texWidth, EGLint texHeight);
    
        EGLConfig getHandle() const;
    
        const GLenum mRenderTargetFormat;
        const GLenum mDepthStencilFormat;
        const GLint mMultiSample;
    
        EGLint mBufferSize;              // Depth of the color buffer
        EGLint mRedSize;                 // Bits of Red in the color buffer
        EGLint mGreenSize;               // Bits of Green in the color buffer
        EGLint mBlueSize;                // Bits of Blue in the color buffer
        EGLint mLuminanceSize;           // Bits of Luminance in the color buffer
        EGLint mAlphaSize;               // Bits of Alpha in the color buffer
        EGLint mAlphaMaskSize;           // Bits of Alpha Mask in the mask buffer
        EGLBoolean mBindToTextureRGB;    // True if bindable to RGB textures.
        EGLBoolean mBindToTextureRGBA;   // True if bindable to RGBA textures.
        EGLenum mColorBufferType;        // Color buffer type
        EGLenum mConfigCaveat;           // Any caveats for the configuration
        EGLint mConfigID;                // Unique EGLConfig identifier
        EGLint mConformant;              // Whether contexts created with this config are conformant
        EGLint mDepthSize;               // Bits of Z in the depth buffer
        EGLint mLevel;                   // Frame buffer level
        EGLBoolean mMatchNativePixmap;   // Match the native pixmap format
        EGLint mMaxPBufferWidth;         // Maximum width of pbuffer
        EGLint mMaxPBufferHeight;        // Maximum height of pbuffer
        EGLint mMaxPBufferPixels;        // Maximum size of pbuffer
        EGLint mMaxSwapInterval;         // Maximum swap interval
        EGLint mMinSwapInterval;         // Minimum swap interval
        EGLBoolean mNativeRenderable;    // EGL_TRUE if native rendering APIs can render to surface
        EGLint mNativeVisualID;          // Handle of corresponding native visual
        EGLint mNativeVisualType;        // Native visual type of the associated visual
        EGLint mRenderableType;          // Which client rendering APIs are supported.
        EGLint mSampleBuffers;           // Number of multisample buffers
        EGLint mSamples;                 // Number of samples per pixel
        EGLint mStencilSize;             // Bits of Stencil in the stencil buffer
        EGLint mSurfaceType;             // Which types of EGL surfaces are supported.
        EGLenum mTransparentType;        // Type of transparency supported
        EGLint mTransparentRedValue;     // Transparent red value
        EGLint mTransparentGreenValue;   // Transparent green value
        EGLint mTransparentBlueValue;    // Transparent blue value
    };
    
    // Function object used by STL sorting routines for ordering Configs according to [EGL] section 3.4.1 page 24.
    class SortConfig
    {
      public:
        explicit SortConfig(const EGLint *attribList);
    
        bool operator()(const Config *x, const Config *y) const;
        bool operator()(const Config &x, const Config &y) const;
    
      private:
        void scanForWantedComponents(const EGLint *attribList);
        EGLint wantedComponentsSize(const Config &config) const;
    
        bool mWantRed;
        bool mWantGreen;
        bool mWantBlue;
        bool mWantAlpha;
        bool mWantLuminance;
    };
    
    class ConfigSet
    {
        friend Display;
    
      public:
        ConfigSet();
    
        void add(rx::ConfigDesc desc, EGLint minSwapInterval, EGLint maxSwapInterval, EGLint texWidth, EGLint texHeight);
        size_t size() const;
        bool getConfigs(EGLConfig *configs, const EGLint *attribList, EGLint configSize, EGLint *numConfig);
        const egl::Config *get(EGLConfig configHandle);
    
      private:
        DISALLOW_COPY_AND_ASSIGN(ConfigSet);
    
        typedef std::set<Config, SortConfig> Set;
        typedef Set::iterator Iterator;
        Set mSet;
    
        static const EGLint mSortAttribs[];
    };
    }
    
    #endif   // INCLUDE_CONFIG_H_