2 #ifndef _EGL_TRACKER_H_
3 #define _EGL_TRACKER_H_
8 #include "eglcontext.h"
9 #include "egldisplay.h"
10 #include "egldriver.h"
11 #include "eglglobals.h"
13 #include "eglscreen.h"
14 #include "eglsurface.h"
17 #include "xf86drmMode.h"
19 #include "pipe/p_compiler.h"
21 #include "state_tracker/st_public.h"
23 #define MAX_SCREENS 16
35 _EGLDriver base
; /* base class/object */
42 struct pipe_winsys
*winsys
;
43 struct pipe_screen
*screen
;
50 drmVersionPtr version
;
55 struct drm_screen
*screens
[MAX_SCREENS
];
61 _EGLSurface base
; /* base class/object */
68 struct st_framebuffer
*stfb
;
74 struct drm_context
*user
;
75 struct drm_screen
*screen
;
83 _EGLContext base
; /* base class/object */
87 struct pipe_context
*pipe
;
88 struct st_context
*st
;
99 struct pipe_buffer
*buffer
;
100 struct pipe_texture
*tex
;
101 struct pipe_surface
*surface
;
114 /* currently only support one connector */
115 drmModeConnectorPtr connector
;
116 uint32_t connectorID
;
119 drmModePropertyPtr dpms
;
121 /* Has this screen been shown */
124 /* Surface that is currently attached to this screen */
125 struct drm_surface
*surf
;
131 /* crtc and mode used */
132 /*drmModeCrtcPtr crtc;*/
135 drmModeModeInfoPtr mode
;
139 static INLINE
struct drm_context
*
140 lookup_drm_context(_EGLContext
*c
)
142 return (struct drm_context
*) c
;
146 static INLINE
struct drm_surface
*
147 lookup_drm_surface(_EGLSurface
*s
)
149 return (struct drm_surface
*) s
;
152 static INLINE
struct drm_screen
*
153 lookup_drm_screen(_EGLScreen
*s
)
155 return (struct drm_screen
*) s
;
162 void drm_visual_modes_destroy(__GLcontextModes
*modes
);
163 __GLcontextModes
* drm_visual_modes_create(unsigned count
, size_t minimum_size
);
164 __GLcontextModes
* drm_visual_from_config(_EGLConfig
*conf
);
171 void drm_takedown_shown_screen(_EGLDriver
*drv
, struct drm_screen
*screen
);
175 * All function exported to the egl side.
178 EGLBoolean
drm_initialize(_EGLDriver
*drv
, _EGLDisplay
*dpy
, EGLint
*major
, EGLint
*minor
);
179 EGLBoolean
drm_terminate(_EGLDriver
*drv
, _EGLDisplay
*dpy
);
180 _EGLContext
*drm_create_context(_EGLDriver
*drv
, _EGLDisplay
*dpy
, _EGLConfig
*conf
, _EGLContext
*share_list
, const EGLint
*attrib_list
);
181 EGLBoolean
drm_destroy_context(_EGLDriver
*drv
, _EGLDisplay
*dpy
, _EGLContext
*context
);
182 _EGLSurface
*drm_create_window_surface(_EGLDriver
*drv
, _EGLDisplay
*dpy
, _EGLConfig
*conf
, NativeWindowType window
, const EGLint
*attrib_list
);
183 _EGLSurface
*drm_create_pixmap_surface(_EGLDriver
*drv
, _EGLDisplay
*dpy
, _EGLConfig
*conf
, NativePixmapType pixmap
, const EGLint
*attrib_list
);
184 _EGLSurface
*drm_create_pbuffer_surface(_EGLDriver
*drv
, _EGLDisplay
*dpy
, _EGLConfig
*conf
, const EGLint
*attrib_list
);
185 _EGLSurface
*drm_create_screen_surface_mesa(_EGLDriver
*drv
, _EGLDisplay
*dpy
, _EGLConfig
*conf
, const EGLint
*attrib_list
);
186 EGLBoolean
drm_show_screen_surface_mesa(_EGLDriver
*drv
, _EGLDisplay
*dpy
, _EGLScreen
*screen
, _EGLSurface
*surface
, _EGLMode
*mode
);
187 EGLBoolean
drm_destroy_surface(_EGLDriver
*drv
, _EGLDisplay
*dpy
, _EGLSurface
*surface
);
188 EGLBoolean
drm_make_current(_EGLDriver
*drv
, _EGLDisplay
*dpy
, _EGLSurface
*draw
, _EGLSurface
*read
, _EGLContext
*context
);
189 EGLBoolean
drm_swap_buffers(_EGLDriver
*drv
, _EGLDisplay
*dpy
, _EGLSurface
*draw
);