Edit

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

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2018-03-08 20:28:32
    Hash : 5b772312
    Message : Nuke ValidationContext. This pattern never really took off. It was intended to be used to unit-test our Validation logic, but it become so complex because of interactions with Framebuffer::syncState that we could never really make use of it. Nuke it entirely and simplify the Context class. Bug: angleproject:2372 Change-Id: I40b9d46ce7706511a210da496ee19192cf609366 Reviewed-on: https://chromium-review.googlesource.com/954291 Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>

  • src/libANGLE/ContextState.h
  • //
    // Copyright (c) 2014 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.
    //
    
    // ContextState: Container class for all GL context state, caps and objects.
    
    #ifndef LIBANGLE_CONTEXTSTATE_H_
    #define LIBANGLE_CONTEXTSTATE_H_
    
    #include "common/MemoryBuffer.h"
    #include "common/angleutils.h"
    #include "libANGLE/State.h"
    #include "libANGLE/Version.h"
    #include "libANGLE/params.h"
    
    namespace gl
    {
    class BufferManager;
    class ContextState;
    class FramebufferManager;
    class PathManager;
    class ProgramPipelineManager;
    class RenderbufferManager;
    class SamplerManager;
    class ShaderProgramManager;
    class SyncManager;
    class TextureManager;
    
    static constexpr Version ES_2_0 = Version(2, 0);
    static constexpr Version ES_3_0 = Version(3, 0);
    static constexpr Version ES_3_1 = Version(3, 1);
    
    using ContextID = uintptr_t;
    
    class ContextState final : angle::NonCopyable
    {
      public:
        ContextState(ContextID context,
                     const ContextState *shareContextState,
                     TextureManager *shareTextures,
                     const Version &clientVersion,
                     State *state,
                     const Caps &caps,
                     const TextureCapsMap &textureCaps,
                     const Extensions &extensions,
                     const Limitations &limitations);
        ~ContextState();
    
        ContextID getContextID() const { return mContext; }
        GLint getClientMajorVersion() const { return mClientVersion.major; }
        GLint getClientMinorVersion() const { return mClientVersion.minor; }
        const Version &getClientVersion() const { return mClientVersion; }
        const State &getState() const { return *mState; }
        const Caps &getCaps() const { return mCaps; }
        const TextureCapsMap &getTextureCaps() const { return mTextureCaps; }
        const Extensions &getExtensions() const { return mExtensions; }
        const Limitations &getLimitations() const { return mLimitations; }
    
        const TextureCaps &getTextureCap(GLenum internalFormat) const;
    
        bool isWebGL() const;
        bool isWebGL1() const;
    
      private:
        friend class Context;
    
        Version mClientVersion;
        ContextID mContext;
        State *mState;
        const Caps &mCaps;
        const TextureCapsMap &mTextureCaps;
        const Extensions &mExtensions;
        const Limitations &mLimitations;
    
        BufferManager *mBuffers;
        ShaderProgramManager *mShaderPrograms;
        TextureManager *mTextures;
        RenderbufferManager *mRenderbuffers;
        SamplerManager *mSamplers;
        SyncManager *mSyncs;
        PathManager *mPaths;
        FramebufferManager *mFramebuffers;
        ProgramPipelineManager *mPipelines;
    };
    
    }  // namespace gl
    
    #endif  // LIBANGLE_CONTEXTSTATE_H_