blob: 54a9a4ea269d8fe86672b56731a4010e12ea4bbb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
#ifndef EGLDRI_INCLUDED
#define EGLDRI_INCLUDED
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include "egldisplay.h"
#include "eglscreen.h"
#include "eglsurface.h"
#include "eglcontext.h"
#include "dri_util.h"
#include "drm_sarea.h"
/**
* dri display-specific driver class derived from _EGLDisplay
*/
typedef struct dri_display
{
_EGLDisplay Base; /**< base class */
void *pFB;
int drmFD; /**< \brief DRM device file descriptor */
int minor;
unsigned long hFrameBuffer;
int virtualWidth;
int virtualHeight;
int fbSize;
int bpp;
int cpp;
int card_type;
int SAREASize;
drm_sarea_t *pSAREA;
unsigned int serverContext; /**< \brief DRM context only active on server */
unsigned long FBStart; /**< \brief physical address of the framebuffer */
void *driverClientMsg;
int driverClientMsgSize;
unsigned chipset;
void *driverPrivate;
drm_magic_t magic;
__DRIscreen driScreen;
} driDisplay;
/**
* dri driver-specific screen class derived from _EGLScreen
*/
typedef struct dri_screen
{
_EGLScreen Base;
char fb[NAME_MAX]; /** the screen name, like "fb0" */
} driScreen;
/**
* dri driver-specific surface class derived from _EGLSurface
*/
typedef struct dri_surface
{
_EGLSurface Base; /* base class/object */
__DRIdrawable drawable;
} driSurface;
/**
* dri driver-specific context class derived from _EGLContext
*/
typedef struct dri_context
{
_EGLContext Base; /* base class/object */
__DRIcontext driContext; /**< \brief context dependent methods */
} driContext;
static inline driDisplay *
Lookup_driDisplay(EGLDisplay dpy)
{
_EGLDisplay *d = _eglLookupDisplay(dpy);
return (driDisplay *) d;
}
static inline driScreen *
Lookup_driScreen(EGLDisplay dpy, EGLScreenMESA screen)
{
_EGLScreen *s = _eglLookupScreen(dpy, screen);
return (driScreen *) s;
}
static inline driContext *
Lookup_driContext(EGLContext ctx)
{
_EGLContext *c = _eglLookupContext(ctx);
return (driContext *) c;
}
static inline driSurface *
Lookup_driSurface(EGLSurface surf)
{
_EGLSurface *s = _eglLookupSurface(surf);
return (driSurface *) s;
}
extern void _eglDRIInitDriverFallbacks(_EGLDriver *drv);
extern EGLBoolean _eglDRIShowScreenSurfaceMESA(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen, EGLSurface surface, EGLModeMESA m);
extern EGLBoolean _eglDRIInitialize(_EGLDriver *drv, EGLDisplay dpy, EGLint *major, EGLint *minor);
extern EGLBoolean _eglDRIGetDisplayInfo(driDisplay *dpy);
extern EGLBoolean _eglDRICreateDisplay(driDisplay *dpy, __DRIframebuffer *framebuffer);
extern EGLBoolean _eglDRICreateScreens(driDisplay *dpy);
#endif /* EGLDRI_INCLUDED */
|