Edit

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

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2017-06-19 11:13:23
    Hash : 61e16b44
    Message : Context: Bind current display/surface. Looking at the EGL spec, it says for eglGetCurrentDisplay: "The display for the current context in the calling thread, for the current rendering API, is returned." This implies that MakeCurrent binds a display to a Context. There's also pretty clear language for the read/draw Surface as well, that they can only be bound to one Context/thread at a time. Hence we don't need to duplicate this storage in the egl::Thread structure, merely storing a pointer to the current Context, which has access to the read/draw Surface and current Display. BUG=angleproject:1156 Change-Id: Ia3b99d50b3591012c43e851834c1af02ff62a33f Reviewed-on: https://chromium-review.googlesource.com/538865 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>

  • src/libANGLE/Thread.h
  • //
    // Copyright(c) 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>
    
    namespace gl
    {
    class Context;
    }  // namespace gl
    
    namespace egl
    {
    class Error;
    class Display;
    class Surface;
    
    class Thread
    {
      public:
        Thread();
    
        void setError(const Error &error);
        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;
        gl::Context *getValidContext() const;
        Display *getCurrentDisplay() const;
    
      private:
        EGLint mError;
        EGLenum mAPI;
        gl::Context *mContext;
    };
    
    }  // namespace egl
    
    #endif  // LIBANGLE_THREAD_H_