devilhorns pushed a commit to branch master.
commit 8c5e0c702d4d21d1237d28f70a656a7671246d94
Author: Chris Michael <[email protected]>
Date: Tue Apr 16 13:51:42 2013 +0100
Add a Drm_Fb structure to represent the frame buffer.
NB: Start of getting drm to function again.
Signed-off-by: Chris Michael <[email protected]>
---
src/modules/wl_drm/e_mod_main.h | 73 ++++++++++++++++++++++++++++-------------
1 file changed, 51 insertions(+), 22 deletions(-)
diff --git a/src/modules/wl_drm/e_mod_main.h b/src/modules/wl_drm/e_mod_main.h
index 698c3e7..e005671 100644
--- a/src/modules/wl_drm/e_mod_main.h
+++ b/src/modules/wl_drm/e_mod_main.h
@@ -29,12 +29,31 @@ typedef struct _E_Drm_Compositor E_Drm_Compositor;
typedef struct _E_Sprite E_Sprite;
typedef struct _E_Drm_Output_Mode E_Drm_Output_Mode;
typedef struct _E_Drm_Output E_Drm_Output;
+typedef struct _E_Drm_Fb E_Drm_Fb;
typedef struct _E_Evdev_Input E_Evdev_Input;
typedef struct _E_Evdev_Input_Device E_Evdev_Input_Device;
+struct _E_Drm_Fb
+{
+ E_Drm_Output *output;
+ unsigned int fb, stride, hdl, size;
+ int fd;
+ Eina_Bool client_buffer : 1;
+
+ struct
+ {
+ struct wl_buffer *buffer;
+ struct wl_listener buffer_destroy;
+ } reference;
+
+ struct gbm_bo *bo;
+
+ void *map;
+};
+
struct _E_Drm_Compositor
{
- E_Compositor base;
+ E_Wayland_Compositor base;
struct udev *udev;
struct wl_event_source *drm_source;
@@ -52,14 +71,19 @@ struct _E_Drm_Compositor
E_Tty *tty;
+ struct
+ {
+ unsigned int width, height;
+ } min, max;
+
struct wl_list sprites;
Eina_Bool sprites_broken;
- E_Compositor_State prev_state;
+ unsigned int prev_state;
};
struct _E_Tty
{
- E_Compositor *comp;
+ E_Wayland_Compositor *comp;
int fd;
struct termios term_attribs;
@@ -68,21 +92,17 @@ struct _E_Tty
tty_vt_func_t vt_func;
int vt, start_vt;
Eina_Bool has_vt : 1;
+ int kbd_mode;
};
struct _E_Sprite
{
struct wl_list link;
- unsigned int fb_id;
- unsigned int pending_fb_id;
-
- E_Surface *surface, *pending_surface;
+ E_Drm_Output *output;
+ E_Drm_Fb *current_fb, *next_fb;
E_Drm_Compositor *compositor;
- struct wl_listener destroy_listener;
- struct wl_listener pending_destroy_listener;
-
unsigned int possible_crtcs;
unsigned int plane_id;
@@ -96,30 +116,39 @@ struct _E_Sprite
struct _E_Drm_Output_Mode
{
- E_Output_Mode base;
+ E_Wayland_Output_Mode base;
drmModeModeInfo info;
};
struct _E_Drm_Output
{
- E_Output base;
+ E_Wayland_Output base;
unsigned int crtc_id;
unsigned int conn_id;
drmModeCrtcPtr orig_crtc;
- GLuint rbo[2];
- unsigned int fb_id[2];
- EGLImageKHR image[2];
- struct gbm_bo *bo[2];
+ struct
+ {
+ Eina_Bool vblank : 1;
+ Eina_Bool page_flip : 1;
+ } pending;
+
+ struct gbm_surface *gsurface;
+ struct gbm_bo *gcursor[2];
+
+ struct
+ {
+ E_Wayland_Surface *surface;
+ int current;
+ } cursor;
+
+ E_Drm_Fb *current, *next, *dummy[2];
- unsigned int current;
- unsigned int fs_surf_fb_id;
- unsigned int pending_fs_surf_fb_id;
+ pixman_image_t *img[2];
+ int current_img;
- struct wl_buffer *scanout_buffer, *pending_scanout_buffer;
- struct wl_listener scanout_buffer_destroy_listener;
- struct wl_listener pending_scanout_buffer_destroy_listener;
+ pixman_region32_t prev_damage;
/* TODO: backlight */
};
--
------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter