Merge remote branch 'origin/master' into lp-binning
[mesa.git] / src / egl / main / eglscreen.h
1 #ifndef EGLSCREEN_INCLUDED
2 #define EGLSCREEN_INCLUDED
3
4
5 #include "egltypedefs.h"
6
7
8 /**
9 * Per-screen information.
10 * Note that an EGL screen doesn't have a size. A screen may be set to
11 * one of several display modes (width/height/scanrate). The screen
12 * then displays a drawing surface. The drawing surface must be at least
13 * as large as the display mode's resolution. If it's larger, the
14 * OriginX and OriginY fields control what part of the surface is visible
15 * on the screen.
16 */
17 struct _egl_screen
18 {
19 EGLScreenMESA Handle; /* The public/opaque handle which names this object */
20
21 _EGLMode *CurrentMode;
22 _EGLSurface *CurrentSurface;
23
24 EGLint OriginX, OriginY; /**< Origin of scan-out region w.r.t. surface */
25 EGLint StepX, StepY; /**< Screen position/origin granularity */
26
27 EGLint NumModes;
28 _EGLMode *Modes; /**< array [NumModes] */
29 };
30
31
32 extern EGLScreenMESA
33 _eglAllocScreenHandle(void);
34
35
36 PUBLIC void
37 _eglInitScreen(_EGLScreen *screen);
38
39
40 extern _EGLScreen *
41 _eglLookupScreen(EGLScreenMESA screen, _EGLDisplay *dpy);
42
43
44 PUBLIC void
45 _eglAddScreen(_EGLDisplay *display, _EGLScreen *screen);
46
47
48 extern EGLBoolean
49 _eglGetScreensMESA(_EGLDriver *drv, _EGLDisplay *dpy, EGLScreenMESA *screens, EGLint max_screens, EGLint *num_screens);
50
51
52 extern _EGLSurface *
53 _eglCreateScreenSurfaceMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf, const EGLint *attrib_list);
54
55
56 extern EGLBoolean
57 _eglShowScreenSurfaceMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, _EGLSurface *surf, _EGLMode *m);
58
59
60 extern EGLBoolean
61 _eglScreenModeMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, _EGLMode *m);
62
63
64 extern EGLBoolean
65 _eglScreenPositionMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, EGLint x, EGLint y);
66
67
68 extern EGLBoolean
69 _eglQueryDisplayMESA(_EGLDriver *drv, _EGLDisplay *dpy, EGLint attribute, EGLint *value);
70
71
72 extern EGLBoolean
73 _eglQueryScreenSurfaceMESA(_EGLDriver *drv, _EGLDisplay *dpy,
74 _EGLScreen *scrn, _EGLSurface **surface);
75
76
77 extern EGLBoolean
78 _eglQueryScreenModeMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, _EGLMode **m);
79
80
81 extern EGLBoolean
82 _eglQueryScreenMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, EGLint attribute, EGLint *value);
83
84
85 extern void
86 _eglDestroyScreenModes(_EGLScreen *scrn);
87
88
89 PUBLIC void
90 _eglDestroyScreen(_EGLScreen *scrn);
91
92
93 #endif /* EGLSCREEN_INCLUDED */