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