egldriver.h revision c56e15b093c367e7e17ebd2e153baab8cafd213a
1adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#ifndef EGLDRIVER_INCLUDED
2adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#define EGLDRIVER_INCLUDED
3adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
4adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
5adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#include "egltypedefs.h"
6daf585d0f00df1d4d2e8dc5b465dad60a4bf0122Brian Paul#include "eglapi.h"
7e084fe54f93c9d51df99812b76d3299b0cff57a3Brian Paul#include "egldefines.h"
851ac95ba8945711cf65e94a2deba6c896dea5f0eBrian Paul
9adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
10adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul/**
115285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul * Optional EGL extensions info.
125285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul */
135285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paulstruct _egl_extensions
145285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul{
155285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul   EGLBoolean MESA_screen_surface;
165285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul   EGLBoolean MESA_copy_context;
175285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul
18e084fe54f93c9d51df99812b76d3299b0cff57a3Brian Paul   char String[_EGL_MAX_EXTENSIONS_LEN];
195285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul};
205285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul
215285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul
225285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul/**
23adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul * Base class for device drivers.
24adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul */
25adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulstruct _egl_driver
26adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul{
27c56e15b093c367e7e17ebd2e153baab8cafd213aBrian Paul   EGLBoolean Initialized; /**< set by driver after initialized */
28adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
29c56e15b093c367e7e17ebd2e153baab8cafd213aBrian Paul   void *LibHandle; /**< dlopen handle */
30adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
31adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul   _EGLDisplay *Display;
32adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
33c56e15b093c367e7e17ebd2e153baab8cafd213aBrian Paul   int APImajor, APIminor; /**< as returned by eglInitialize() */
34c56e15b093c367e7e17ebd2e153baab8cafd213aBrian Paul   char Version[10];       /**< initialized from APImajor/minor */
35c56e15b093c367e7e17ebd2e153baab8cafd213aBrian Paul
36b2006a40eb22899d38cd31691640555228e36975Brian Paul   const char *ClientAPIs;
37adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
38c56e15b093c367e7e17ebd2e153baab8cafd213aBrian Paul   _EGLAPI API;  /**< EGL API dispatch table */
3951ac95ba8945711cf65e94a2deba6c896dea5f0eBrian Paul
405285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul   _EGLExtensions Extensions;
41adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul};
42adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
43adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
440c8908c411c434eda318b41b4f2a370a1e794831Brian Paulextern _EGLDriver *_eglMain(_EGLDisplay *dpy, const char *args);
45adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
46adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
476052af172f0241e6678cd16efac0a0f14f40146cBrian Paulextern const char *
486052af172f0241e6678cd16efac0a0f14f40146cBrian Paul_eglChooseDriver(_EGLDisplay *dpy);
49adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
50adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
51adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern _EGLDriver *
520c8908c411c434eda318b41b4f2a370a1e794831Brian Paul_eglOpenDriver(_EGLDisplay *dpy, const char *driverName, const char *args);
53adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
54adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
55adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern EGLBoolean
56adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul_eglCloseDriver(_EGLDriver *drv, EGLDisplay dpy);
57adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
58adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
59adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern _EGLDriver *
60adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul_eglLookupDriver(EGLDisplay d);
61adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
62adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
63adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern void
64adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul_eglInitDriverFallbacks(_EGLDriver *drv);
65adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
66adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
67adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern const char *
68adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul_eglQueryString(_EGLDriver *drv, EGLDisplay dpy, EGLint name);
69adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
70adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
71adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern EGLBoolean
72adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul_eglWaitGL(_EGLDriver *drv, EGLDisplay dpy);
73adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
74adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
75adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern EGLBoolean
76adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul_eglWaitNative(_EGLDriver *drv, EGLDisplay dpy, EGLint engine);
77adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
78adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
79adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
80adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#endif /* EGLDRIVER_INCLUDED */
81