// Copyright 2016 The SwiftShader Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // main.h: Management of thread-local data. #ifndef LIBEGL_MAIN_H_ #define LIBEGL_MAIN_H_ #include "libGLES_CM/libGLES_CM.hpp" #include "libGLESv2/libGLESv2.hpp" #include <EGL/egl.h> #include <EGL/eglext.h> namespace egl { class Display; class Context; class Surface; class Config; class Image; struct Current { EGLint error; EGLenum API; Context *context; Surface *drawSurface; Surface *readSurface; }; void detachThread(); void setCurrentError(EGLint error); EGLint getCurrentError(); void setCurrentAPI(EGLenum API); EGLenum getCurrentAPI(); void setCurrentContext(Context *ctx); Context *getCurrentContext(); void setCurrentDrawSurface(Surface *surface); Surface *getCurrentDrawSurface(); void setCurrentReadSurface(Surface *surface); Surface *getCurrentReadSurface(); void error(EGLint errorCode); template<class T> const T &error(EGLint errorCode, const T &returnValue) { egl::error(errorCode); return returnValue; } template<class T> const T &success(const T &returnValue) { egl::setCurrentError(EGL_SUCCESS); return returnValue; } } extern LibGLES_CM libGLES_CM; extern LibGLESv2 libGLESv2; #endif // LIBEGL_MAIN_H_