Edit

kc3-lang/angle/src/libANGLE/renderer/gl/ContextGL.h

Branch :

  • Show log

    Commit

  • Author : Luc Ferron
    Date : 2018-07-12 08:24:23
    Hash : 5396f2a6
    Message : Return Error from onMakeCurrent - Preliminary change for gl_PointCoords fix for Vulkan. Bug: angleproject:2673 Change-Id: Ie43e8aeccf75a8daa4a137b98292d848522ea2f0 Reviewed-on: https://chromium-review.googlesource.com/1134877 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>

  • src/libANGLE/renderer/gl/ContextGL.h
  • //
    // Copyright 2016 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.
    //
    // ContextGL:
    //   OpenGL-specific functionality associated with a GL Context.
    //
    
    #ifndef LIBANGLE_RENDERER_GL_CONTEXTGL_H_
    #define LIBANGLE_RENDERER_GL_CONTEXTGL_H_
    
    #include "libANGLE/renderer/ContextImpl.h"
    
    namespace sh
    {
    struct BlockMemberInfo;
    }
    
    namespace rx
    {
    class BlitGL;
    class ClearMultiviewGL;
    class FunctionsGL;
    class RendererGL;
    class StateManagerGL;
    struct WorkaroundsGL;
    
    class ContextGL : public ContextImpl
    {
      public:
        ContextGL(const gl::ContextState &state, const std::shared_ptr<RendererGL> &renderer);
        ~ContextGL() override;
    
        gl::Error initialize() override;
    
        // Shader creation
        CompilerImpl *createCompiler() override;
        ShaderImpl *createShader(const gl::ShaderState &data) override;
        ProgramImpl *createProgram(const gl::ProgramState &data) override;
    
        // Framebuffer creation
        FramebufferImpl *createFramebuffer(const gl::FramebufferState &data) override;
    
        // Texture creation
        TextureImpl *createTexture(const gl::TextureState &state) override;
    
        // Renderbuffer creation
        RenderbufferImpl *createRenderbuffer(const gl::RenderbufferState &state) override;
    
        // Buffer creation
        BufferImpl *createBuffer(const gl::BufferState &state) override;
    
        // Vertex Array creation
        VertexArrayImpl *createVertexArray(const gl::VertexArrayState &data) override;
    
        // Query and Fence creation
        QueryImpl *createQuery(gl::QueryType type) override;
        FenceNVImpl *createFenceNV() override;
        SyncImpl *createSync() override;
    
        // Transform Feedback creation
        TransformFeedbackImpl *createTransformFeedback(
            const gl::TransformFeedbackState &state) override;
    
        // Sampler object creation
        SamplerImpl *createSampler(const gl::SamplerState &state) override;
    
        // Program Pipeline object creation
        ProgramPipelineImpl *createProgramPipeline(const gl::ProgramPipelineState &data) override;
    
        // Path object creation
        std::vector<PathImpl *> createPaths(GLsizei range) override;
    
        // Flush and finish.
        gl::Error flush(const gl::Context *context) override;
        gl::Error finish(const gl::Context *context) override;
    
        // Drawing methods.
        gl::Error drawArrays(const gl::Context *context,
                             gl::PrimitiveMode mode,
                             GLint first,
                             GLsizei count) override;
        gl::Error drawArraysInstanced(const gl::Context *context,
                                      gl::PrimitiveMode mode,
                                      GLint first,
                                      GLsizei count,
                                      GLsizei instanceCount) override;
    
        gl::Error drawElements(const gl::Context *context,
                               gl::PrimitiveMode mode,
                               GLsizei count,
                               GLenum type,
                               const void *indices) override;
        gl::Error drawElementsInstanced(const gl::Context *context,
                                        gl::PrimitiveMode mode,
                                        GLsizei count,
                                        GLenum type,
                                        const void *indices,
                                        GLsizei instances) override;
        gl::Error drawRangeElements(const gl::Context *context,
                                    gl::PrimitiveMode mode,
                                    GLuint start,
                                    GLuint end,
                                    GLsizei count,
                                    GLenum type,
                                    const void *indices) override;
        gl::Error drawArraysIndirect(const gl::Context *context,
                                     gl::PrimitiveMode mode,
                                     const void *indirect) override;
        gl::Error drawElementsIndirect(const gl::Context *context,
                                       gl::PrimitiveMode mode,
                                       GLenum type,
                                       const void *indirect) override;
    
        // CHROMIUM_path_rendering implementation
        void stencilFillPath(const gl::Path *path, GLenum fillMode, GLuint mask) override;
        void stencilStrokePath(const gl::Path *path, GLint reference, GLuint mask) override;
        void coverFillPath(const gl::Path *path, GLenum coverMode) override;
        void coverStrokePath(const gl::Path *path, GLenum coverMode) override;
        void stencilThenCoverFillPath(const gl::Path *path,
                                      GLenum fillMode,
                                      GLuint mask,
                                      GLenum coverMode) override;
        void stencilThenCoverStrokePath(const gl::Path *path,
                                        GLint reference,
                                        GLuint mask,
                                        GLenum coverMode) override;
        void coverFillPathInstanced(const std::vector<gl::Path *> &paths,
                                    GLenum coverMode,
                                    GLenum transformType,
                                    const GLfloat *transformValues) override;
        void coverStrokePathInstanced(const std::vector<gl::Path *> &paths,
                                      GLenum coverMode,
                                      GLenum transformType,
                                      const GLfloat *transformValues) override;
        void stencilFillPathInstanced(const std::vector<gl::Path *> &paths,
                                      GLenum fillMode,
                                      GLuint mask,
                                      GLenum transformType,
                                      const GLfloat *transformValues) override;
        void stencilStrokePathInstanced(const std::vector<gl::Path *> &paths,
                                        GLint reference,
                                        GLuint mask,
                                        GLenum transformType,
                                        const GLfloat *transformValues) override;
        void stencilThenCoverFillPathInstanced(const std::vector<gl::Path *> &paths,
                                               GLenum coverMode,
                                               GLenum fillMode,
                                               GLuint mask,
                                               GLenum transformType,
                                               const GLfloat *transformValues) override;
        void stencilThenCoverStrokePathInstanced(const std::vector<gl::Path *> &paths,
                                                 GLenum coverMode,
                                                 GLint reference,
                                                 GLuint mask,
                                                 GLenum transformType,
                                                 const GLfloat *transformValues) override;
    
        // Device loss
        GLenum getResetStatus() override;
    
        // Vendor and description strings.
        std::string getVendorString() const override;
        std::string getRendererDescription() const override;
    
        // EXT_debug_marker
        void insertEventMarker(GLsizei length, const char *marker) override;
        void pushGroupMarker(GLsizei length, const char *marker) override;
        void popGroupMarker() override;
    
        // KHR_debug
        void pushDebugGroup(GLenum source, GLuint id, GLsizei length, const char *message) override;
        void popDebugGroup() override;
    
        // State sync with dirty bits.
        gl::Error syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) override;
    
        // Disjoint timer queries
        GLint getGPUDisjoint() override;
        GLint64 getTimestamp() override;
    
        // Context switching
        gl::Error onMakeCurrent(const gl::Context *context) override;
    
        // Caps queries
        gl::Caps getNativeCaps() const override;
        const gl::TextureCapsMap &getNativeTextureCaps() const override;
        const gl::Extensions &getNativeExtensions() const override;
        const gl::Limitations &getNativeLimitations() const override;
    
        void applyNativeWorkarounds(gl::Workarounds *workarounds) const override;
    
        // Handle helpers
        const FunctionsGL *getFunctions() const;
        StateManagerGL *getStateManager();
        const WorkaroundsGL &getWorkaroundsGL() const;
        BlitGL *getBlitter() const;
        ClearMultiviewGL *getMultiviewClearer() const;
    
        gl::Error dispatchCompute(const gl::Context *context,
                                  GLuint numGroupsX,
                                  GLuint numGroupsY,
                                  GLuint numGroupsZ) override;
        gl::Error dispatchComputeIndirect(const gl::Context *context, GLintptr indirect) override;
    
        gl::Error memoryBarrier(const gl::Context *context, GLbitfield barriers) override;
        gl::Error memoryBarrierByRegion(const gl::Context *context, GLbitfield barriers) override;
    
      private:
        std::shared_ptr<RendererGL> mRenderer;
    };
    
    }  // namespace rx
    
    #endif  // LIBANGLE_RENDERER_GL_CONTEXTGL_H_