1#ifndef QXL_SURFACE_H
2#define QXL_SURFACE_H
3
4struct evacuated_surface_t;
5
6struct qxl_surface_t
7{
8    surface_cache_t    *cache;
9
10    qxl_screen_t *qxl;
11    uint32_t	        id;
12
13    pixman_image_t *	dev_image;
14    pixman_image_t *	host_image;
15
16    uxa_access_t	access_type;
17    RegionRec		access_region;
18
19    struct qxl_bo   *bo;
20    struct qxl_surface_t *	next;
21    struct qxl_surface_t *	prev;	/* Only used in the 'live'
22				 * chain in the surface cache
23				 */
24
25    int			in_use;
26    int			bpp;		/* bpp of the pixmap */
27    int			ref_count;
28
29    PixmapPtr		pixmap;
30
31    struct evacuated_surface_t *evacuated;
32
33    union
34    {
35	struct qxl_surface_t *copy_src;
36	Pixel	       solid_pixel;
37
38	struct
39	{
40	    int			op;
41	    PicturePtr		src_picture;
42	    PicturePtr		mask_picture;
43	    PicturePtr		dest_picture;
44	    struct qxl_surface_t	*src;
45	    struct qxl_surface_t	*mask;
46	    struct qxl_surface_t	*dest;
47	} composite;
48    } u;
49    struct qxl_bo *image_bo;
50};
51
52void qxl_download_box (qxl_surface_t *surface, int x1, int y1, int x2, int y2);
53void qxl_upload_box (qxl_surface_t *surface, int x1, int y1, int x2, int y2);
54
55#endif
56