17 #include "system_egl.h"    22   static std::set<std::string> GetClientExtensions();
    23   static std::set<std::string> GetExtensions(EGLDisplay eglDisplay);
    24   static bool HasExtension(EGLDisplay eglDisplay, std::string 
const & name);
    25   static bool HasClientExtension(std::string 
const& name);
    26   static void Log(
int logLevel, std::string 
const& what);
    28   static T GetRequiredProcAddress(
const char * procname)
    30     T p = 
reinterpret_cast<T
>(eglGetProcAddress(procname));
    33       throw std::runtime_error(std::string(
"Could not get EGL function \"") + procname + 
"\" - maybe a required extension is not supported?");
    62   void Add(std::initializer_list<EGLAttribute> 
const& attributes)
    64     for (
auto const& attribute : attributes)
    66       m_attributes.insert(m_attributes.begin(), attribute.value);
    67       m_attributes.insert(m_attributes.begin(), attribute.key);
    81   EGLint 
const * Get()
 const    83     return m_attributes.data();
    87   std::vector<EGLint> m_attributes{EGL_NONE};
   100 template<std::
size_t AttributeCount>
   112     m_attributes[0] = EGL_NONE;
   123   void Add(std::initializer_list<EGLAttribute> 
const& attributes)
   125     if (m_writePosition + attributes.size() * 2 + 1 > m_attributes.size())
   127       throw std::out_of_range(
"CEGLAttributes::Add");
   130     for (
auto const& attribute : attributes)
   132       m_attributes[m_writePosition++] = attribute.key;
   133       m_attributes[m_writePosition++] = attribute.value;
   135     m_attributes[m_writePosition] = EGL_NONE;
   151   EGLint 
const * Get()
 const   153     return m_attributes.data();
   158     return m_writePosition;
   162   std::array<EGLint, AttributeCount * 2 + 1> m_attributes;
   163   int m_writePosition{};
   176   bool CreateDisplay(EGLNativeDisplayType nativeDisplay);
   188   bool CreatePlatformDisplay(
void* nativeDisplay, EGLNativeDisplayType nativeDisplayLegacy);
   190   void SurfaceAttrib(EGLint attribute, EGLint value);
   191   bool CreateSurface(EGLNativeWindowType nativeWindow, EGLint HDRcolorSpace = EGL_NONE);
   192   bool CreatePlatformSurface(
void* nativeWindow, EGLNativeWindowType nativeWindowLegacy);
   193   bool InitializeDisplay(EGLint renderingApi);
   194   bool ChooseConfig(EGLint renderableType, EGLint visualId = 0, 
bool hdr = 
false);
   198   void DestroySurface();
   199   void DestroyContext();
   200   bool SetVSync(
bool enable);
   201   bool TrySwapBuffers();
   202   bool IsPlatformSupported() 
const;
   203   EGLint GetConfigAttrib(EGLint attribute) 
const;
   205   EGLDisplay GetEGLDisplay()
 const   209   EGLSurface GetEGLSurface()
 const   213   EGLContext GetEGLContext()
 const   217   EGLConfig GetEGLConfig()
 const   223   void SurfaceAttrib();
   225   EGLenum m_platform{EGL_NONE};
   226   bool m_platformSupported{
false};
   228   EGLDisplay m_eglDisplay{EGL_NO_DISPLAY};
   229   EGLSurface m_eglSurface{EGL_NO_SURFACE};
   230   EGLContext m_eglContext{EGL_NO_CONTEXT};
   231   EGLConfig m_eglConfig{}, m_eglHDRConfig{};
 void Add(std::initializer_list< EGLAttribute > const &attributes)
Add multiple attributes. 
Definition: EGLUtils.h:123
Convenience wrapper for stack-allocated EGL attribute arrays. 
Definition: EGLUtils.h:101
Definition: EGLUtils.h:51
void Add(EGLAttribute const &attribute)
Add one attribute. 
Definition: EGLUtils.h:76
Definition: EGLUtils.h:104
Convenience wrapper for heap-allocated EGL attribute arrays. 
Definition: EGLUtils.h:48
void Add(std::initializer_list< EGLAttribute > const &attributes)
Add multiple attributes. 
Definition: EGLUtils.h:62
void Add(EGLAttribute const &attribute)
Add one attribute. 
Definition: EGLUtils.h:146
Definition: EGLUtils.h:166
Definition: EGLUtils.h:19