Edit

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

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2020-11-19 18:11:42
    Hash : cfe14e28
    Message : EGL: Remove egl::Error from validation code. Instead of using an egl::Error return value, errors are recorded on the egl::Thread immediately at the call site. This makes the code work the same way as in the GL entry points. Updates the EGL "try" macros to include a special handler for the EGL validation entry points. Uses a special ValidationContext helper class to preserve the existing info. Bug: angleproject:5378 Change-Id: I897f221a41fe406676950600e4ac559081b9f541 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2551790 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>

  • src/libANGLE/Thread.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.
    //
    
    // Thread.h : Defines the Thread class which represents a global EGL thread.
    
    #ifndef LIBANGLE_THREAD_H_
    #define LIBANGLE_THREAD_H_
    
    #include <EGL/egl.h>
    
    #include "libANGLE/Debug.h"
    
    namespace angle
    {
    extern bool gUseAndroidOpenGLTlsSlot;
    }  // namespace angle
    
    namespace gl
    {
    class Context;
    }  // namespace gl
    
    namespace egl
    {
    class Error;
    class Debug;
    class Display;
    class Surface;
    
    class Thread : public LabeledObject
    {
      public:
        Thread();
    
        void setLabel(EGLLabelKHR label) override;
        EGLLabelKHR getLabel() const override;
    
        void setSuccess();
    
        void setError(EGLint error,
                      const char *command,
                      const LabeledObject *object,
                      const char *message);
    
        // TODO: Remove egl::Error. http://anglebug.com/3041
        void setError(const Error &error, const char *command, const LabeledObject *object);
        EGLint getError() const;
    
        void setAPI(EGLenum api);
        EGLenum getAPI() const;
    
        void setCurrent(gl::Context *context);
        Surface *getCurrentDrawSurface() const;
        Surface *getCurrentReadSurface() const;
        gl::Context *getContext() const;
        Display *getDisplay() const;
    
      private:
        EGLLabelKHR mLabel;
        EGLint mError;
        EGLenum mAPI;
        gl::Context *mContext;
    };
    
    void EnsureDebugAllocated();
    void DeallocateDebug();
    Debug *GetDebug();
    
    }  // namespace egl
    
    #endif  // LIBANGLE_THREAD_H_