1*8975f5c5SAndroid Build Coastguard Worker // 2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2016 The ANGLE Project Authors. All rights reserved. 3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker // 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard Worker // Thread.h : Defines the Thread class which represents a global EGL thread. 8*8975f5c5SAndroid Build Coastguard Worker 9*8975f5c5SAndroid Build Coastguard Worker #ifndef LIBANGLE_THREAD_H_ 10*8975f5c5SAndroid Build Coastguard Worker #define LIBANGLE_THREAD_H_ 11*8975f5c5SAndroid Build Coastguard Worker 12*8975f5c5SAndroid Build Coastguard Worker #include <EGL/egl.h> 13*8975f5c5SAndroid Build Coastguard Worker 14*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Debug.h" 15*8975f5c5SAndroid Build Coastguard Worker 16*8975f5c5SAndroid Build Coastguard Worker #include <atomic> 17*8975f5c5SAndroid Build Coastguard Worker 18*8975f5c5SAndroid Build Coastguard Worker namespace angle 19*8975f5c5SAndroid Build Coastguard Worker { 20*8975f5c5SAndroid Build Coastguard Worker #if defined(ANGLE_USE_ANDROID_TLS_SLOT) 21*8975f5c5SAndroid Build Coastguard Worker extern bool gUseAndroidOpenGLTlsSlot; 22*8975f5c5SAndroid Build Coastguard Worker #endif 23*8975f5c5SAndroid Build Coastguard Worker } // namespace angle 24*8975f5c5SAndroid Build Coastguard Worker 25*8975f5c5SAndroid Build Coastguard Worker namespace gl 26*8975f5c5SAndroid Build Coastguard Worker { 27*8975f5c5SAndroid Build Coastguard Worker class Context; 28*8975f5c5SAndroid Build Coastguard Worker } // namespace gl 29*8975f5c5SAndroid Build Coastguard Worker 30*8975f5c5SAndroid Build Coastguard Worker namespace egl 31*8975f5c5SAndroid Build Coastguard Worker { 32*8975f5c5SAndroid Build Coastguard Worker class Error; 33*8975f5c5SAndroid Build Coastguard Worker class Debug; 34*8975f5c5SAndroid Build Coastguard Worker class Display; 35*8975f5c5SAndroid Build Coastguard Worker class Surface; 36*8975f5c5SAndroid Build Coastguard Worker 37*8975f5c5SAndroid Build Coastguard Worker class Thread : public LabeledObject 38*8975f5c5SAndroid Build Coastguard Worker { 39*8975f5c5SAndroid Build Coastguard Worker public: 40*8975f5c5SAndroid Build Coastguard Worker Thread(); 41*8975f5c5SAndroid Build Coastguard Worker 42*8975f5c5SAndroid Build Coastguard Worker void setLabel(EGLLabelKHR label) override; 43*8975f5c5SAndroid Build Coastguard Worker EGLLabelKHR getLabel() const override; 44*8975f5c5SAndroid Build Coastguard Worker 45*8975f5c5SAndroid Build Coastguard Worker void setSuccess(); 46*8975f5c5SAndroid Build Coastguard Worker 47*8975f5c5SAndroid Build Coastguard Worker void setError(EGLint error, 48*8975f5c5SAndroid Build Coastguard Worker const char *command, 49*8975f5c5SAndroid Build Coastguard Worker const LabeledObject *object, 50*8975f5c5SAndroid Build Coastguard Worker const char *message); 51*8975f5c5SAndroid Build Coastguard Worker 52*8975f5c5SAndroid Build Coastguard Worker // TODO: Remove egl::Error. http://anglebug.com/42261727 53*8975f5c5SAndroid Build Coastguard Worker void setError(const Error &error, const char *command, const LabeledObject *object); 54*8975f5c5SAndroid Build Coastguard Worker EGLint getError() const; 55*8975f5c5SAndroid Build Coastguard Worker 56*8975f5c5SAndroid Build Coastguard Worker void setAPI(EGLenum api); 57*8975f5c5SAndroid Build Coastguard Worker EGLenum getAPI() const; 58*8975f5c5SAndroid Build Coastguard Worker 59*8975f5c5SAndroid Build Coastguard Worker void setCurrent(gl::Context *context); 60*8975f5c5SAndroid Build Coastguard Worker Surface *getCurrentDrawSurface() const; 61*8975f5c5SAndroid Build Coastguard Worker Surface *getCurrentReadSurface() const; 62*8975f5c5SAndroid Build Coastguard Worker gl::Context *getContext() const; 63*8975f5c5SAndroid Build Coastguard Worker Display *getDisplay() const; 64*8975f5c5SAndroid Build Coastguard Worker 65*8975f5c5SAndroid Build Coastguard Worker private: 66*8975f5c5SAndroid Build Coastguard Worker EGLLabelKHR mLabel; 67*8975f5c5SAndroid Build Coastguard Worker EGLint mError; 68*8975f5c5SAndroid Build Coastguard Worker EGLenum mAPI; 69*8975f5c5SAndroid Build Coastguard Worker gl::Context *mContext; 70*8975f5c5SAndroid Build Coastguard Worker }; 71*8975f5c5SAndroid Build Coastguard Worker 72*8975f5c5SAndroid Build Coastguard Worker void EnsureDebugAllocated(); 73*8975f5c5SAndroid Build Coastguard Worker void DeallocateDebug(); 74*8975f5c5SAndroid Build Coastguard Worker Debug *GetDebug(); 75*8975f5c5SAndroid Build Coastguard Worker 76*8975f5c5SAndroid Build Coastguard Worker } // namespace egl 77*8975f5c5SAndroid Build Coastguard Worker 78*8975f5c5SAndroid Build Coastguard Worker #endif // LIBANGLE_THREAD_H_ 79