Edit

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

Branch :

  • Show log

    Commit

  • Author : Geoff Lang
    Date : 2017-01-13 15:55:07
    Hash : c5a2a172
    Message : Add EGL_EXT_pixel_format_float support, enables float EGL surfaces. Add floating point EGL configs for the D3D11 backend. BUG=angleproject:1707 Change-Id: Ic84cd3a0d41e78cc39d0275d83e7695f55673ddf Reviewed-on: https://chromium-review.googlesource.com/428294 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>

  • src/libANGLE/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.5] section 3.4 page 19.
    
    #ifndef INCLUDE_CONFIG_H_
    #define INCLUDE_CONFIG_H_
    
    #include "libANGLE/AttributeMap.h"
    
    #include "common/angleutils.h"
    
    #include <EGL/egl.h>
    #include <GLES2/gl2.h>
    
    #include <map>
    #include <vector>
    
    namespace egl
    {
    
    struct Config
    {
        Config();
    
        GLenum renderTargetFormat;      // TODO(geofflang): remove this
        GLenum depthStencilFormat;      // TODO(geofflang): remove this
    
        EGLint bufferSize;              // Depth of the color buffer
        EGLint redSize;                 // Bits of Red in the color buffer
        EGLint greenSize;               // Bits of Green in the color buffer
        EGLint blueSize;                // Bits of Blue in the color buffer
        EGLint luminanceSize;           // Bits of Luminance in the color buffer
        EGLint alphaSize;               // Bits of Alpha in the color buffer
        EGLint alphaMaskSize;           // Bits of Alpha Mask in the mask buffer
        EGLBoolean bindToTextureRGB;    // True if bindable to RGB textures.
        EGLBoolean bindToTextureRGBA;   // True if bindable to RGBA textures.
        EGLenum colorBufferType;        // Color buffer type
        EGLenum configCaveat;           // Any caveats for the configuration
        EGLint configID;                // Unique EGLConfig identifier
        EGLint conformant;              // Whether contexts created with this config are conformant
        EGLint depthSize;               // Bits of Z in the depth buffer
        EGLint level;                   // Frame buffer level
        EGLBoolean matchNativePixmap;   // Match the native pixmap format
        EGLint maxPBufferWidth;         // Maximum width of pbuffer
        EGLint maxPBufferHeight;        // Maximum height of pbuffer
        EGLint maxPBufferPixels;        // Maximum size of pbuffer
        EGLint maxSwapInterval;         // Maximum swap interval
        EGLint minSwapInterval;         // Minimum swap interval
        EGLBoolean nativeRenderable;    // EGL_TRUE if native rendering APIs can render to surface
        EGLint nativeVisualID;          // Handle of corresponding native visual
        EGLint nativeVisualType;        // Native visual type of the associated visual
        EGLint renderableType;          // Which client rendering APIs are supported.
        EGLint sampleBuffers;           // Number of multisample buffers
        EGLint samples;                 // Number of samples per pixel
        EGLint stencilSize;             // Bits of Stencil in the stencil buffer
        EGLint surfaceType;             // Which types of EGL surfaces are supported.
        EGLenum transparentType;        // Type of transparency supported
        EGLint transparentRedValue;     // Transparent red value
        EGLint transparentGreenValue;   // Transparent green value
        EGLint transparentBlueValue;    // Transparent blue value
        EGLint optimalOrientation;      // Optimal window surface orientation
        EGLenum colorComponentType;     // Color component type
    };
    
    class ConfigSet
    {
      public:
        EGLint add(const Config &config);
        const Config &get(EGLint id) const;
    
        void clear();
    
        size_t size() const;
    
        bool contains(const Config *config) const;
    
        // Filter configurations based on the table in [EGL 1.5] section 3.4.1.2 page 29
        std::vector<const Config*> filter(const AttributeMap &attributeMap) const;
    
      private:
        typedef std::map<EGLint, const Config> ConfigMap;
        ConfigMap mConfigs;
    };
    
    }
    
    #endif   // INCLUDE_CONFIG_H_