egldriver.h revision b2006a40eb22899d38cd31691640555228e36975
1adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#ifndef EGLDRIVER_INCLUDED
2adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#define EGLDRIVER_INCLUDED
3adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
4adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
5adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#include "egltypedefs.h"
6daf585d0f00df1d4d2e8dc5b465dad60a4bf0122Brian Paul#include "eglapi.h"
7adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
85285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul/* should probably use a dynamic-length string, but this will do */
951ac95ba8945711cf65e94a2deba6c896dea5f0eBrian Paul#define MAX_EXTENSIONS_LEN 1000
1051ac95ba8945711cf65e94a2deba6c896dea5f0eBrian Paul
11adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
12adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul/**
135285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul * Optional EGL extensions info.
145285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul */
155285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paulstruct _egl_extensions
165285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul{
175285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul   EGLBoolean MESA_screen_surface;
185285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul   EGLBoolean MESA_copy_context;
195285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul
205285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul   char String[MAX_EXTENSIONS_LEN];
215285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul};
225285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul
235285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul
245285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul/**
25adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul * Base class for device drivers.
26adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul */
27adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulstruct _egl_driver
28adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul{
29adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul   EGLBoolean Initialized; /* set by driver after initialized */
30adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
31adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul   void *LibHandle; /* dlopen handle */
32adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
33adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul   _EGLDisplay *Display;
34adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
35adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul   int ABIversion;
36adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul   int APImajor, APIminor; /* returned through eglInitialize */
37b2006a40eb22899d38cd31691640555228e36975Brian Paul   const char *ClientAPIs;
38adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
39daf585d0f00df1d4d2e8dc5b465dad60a4bf0122Brian Paul   _EGLAPI API;
4051ac95ba8945711cf65e94a2deba6c896dea5f0eBrian Paul
415285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul   _EGLExtensions Extensions;
42adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul};
43adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
44adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
45485528f2acb69940a7c757638127f716c0cb2654Jon Smirlextern _EGLDriver *_eglMain(_EGLDisplay *dpy);
46adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
47adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
48adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern _EGLDriver *
49adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul_eglChooseDriver(EGLDisplay dpy);
50adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
51adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
52adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern _EGLDriver *
53adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul_eglOpenDriver(_EGLDisplay *dpy, const char *driverName);
54adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
55adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
56adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern EGLBoolean
57adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul_eglCloseDriver(_EGLDriver *drv, EGLDisplay dpy);
58adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
59adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
60adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern _EGLDriver *
61adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul_eglLookupDriver(EGLDisplay d);
62adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
63adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
64adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern void
65adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul_eglInitDriverFallbacks(_EGLDriver *drv);
66adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
67adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
68adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern const char *
69adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul_eglQueryString(_EGLDriver *drv, EGLDisplay dpy, EGLint name);
70adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
71adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
72adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern EGLBoolean
73adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul_eglWaitGL(_EGLDriver *drv, EGLDisplay dpy);
74adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
75adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
76adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern EGLBoolean
77adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul_eglWaitNative(_EGLDriver *drv, EGLDisplay dpy, EGLint engine);
78adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
79adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
80adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
81adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#endif /* EGLDRIVER_INCLUDED */
82