Add a Drm_Fb structure to represent the frame buffer.

NB: Start of getting drm to function again.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
Chris Michael 2013-04-16 13:51:42 +01:00
parent 3165012074
commit 8c5e0c702d
1 changed files with 51 additions and 22 deletions

View File

@ -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;
unsigned int current;
unsigned int fs_surf_fb_id;
unsigned int pending_fs_surf_fb_id;
struct gbm_surface *gsurface;
struct gbm_bo *gcursor[2];
struct wl_buffer *scanout_buffer, *pending_scanout_buffer;
struct wl_listener scanout_buffer_destroy_listener;
struct wl_listener pending_scanout_buffer_destroy_listener;
struct
{
E_Wayland_Surface *surface;
int current;
} cursor;
E_Drm_Fb *current, *next, *dummy[2];
pixman_image_t *img[2];
int current_img;
pixman_region32_t prev_damage;
/* TODO: backlight */
};