1 #ifndef LIBEGLVENDOR_H 2 #define LIBEGLVENDOR_H 3 4 #include "libeglabipriv.h" 5 #include "GLdispatch.h" 6 #include "lkdhash.h" 7 #include "glvnd_list.h" 8 #include "winsys_dispatch.h" 9 10 extern const __EGLapiExports __eglExportsTable; 11 12 /*! 13 * Structure containing relevant per-vendor information. 14 */ 15 struct __EGLvendorInfoRec { 16 int vendorID; //< unique GLdispatch ID 17 void *dlhandle; //< shared library handle 18 __GLVNDwinsysVendorDispatch *dynDispatch; 19 20 // TODO: Should this have a separate dispatch table for GL and GLES? 21 __GLdispatchTable *glDispatch; //< GL dispatch table 22 23 __EGLapiImports eglvc; 24 __EGLdispatchTableStatic staticDispatch; //< static EGL dispatch table 25 26 EGLBoolean patchSupported; 27 __GLdispatchPatchCallbacks patchCallbacks; 28 29 EGLBoolean supportsGL; 30 EGLBoolean supportsGLES; 31 32 EGLBoolean supportsDevice; 33 EGLBoolean supportsPlatformDevice; 34 EGLBoolean supportsPlatformGbm; 35 EGLBoolean supportsPlatformX11; 36 EGLBoolean supportsPlatformWayland; 37 38 struct glvnd_list entry; 39 }; 40 41 void __eglInitVendors(void); 42 void __eglTeardownVendors(void); 43 44 /** 45 * Selects and loads the vendor libraries. 46 * 47 * \return A linked list of __EGLvendorInfo structs. 48 */ 49 struct glvnd_list *__eglLoadVendors(void); 50 51 #endif // LIBEGLVENDOR_H 52