libspice: add surface 0 support

This include alot of infestracture for off screens.

Signed-off-by: Izik Eidus <ieidus@redhat.com>
This commit is contained in:
Izik Eidus 2010-01-28 04:44:43 +02:00 committed by Marc-André Lureau
parent 89b1b0e897
commit a940ecc40b

View File

@ -52,7 +52,7 @@
#define REDHAT_PCI_VENDOR_ID 0x1b36
#define QXL_DEVICE_ID 0x0100 /* 0x100-0x11f reserved for spice */
#define QXL_REVISION 0x02
#define QXL_REVISION 0x03
#define QXL_ROM_MAGIC (*(UINT32*)"QXRO")
#define QXL_RAM_MAGIC (*(UINT32*)"QXRA")
@ -73,10 +73,14 @@ enum {
QXL_IO_UPDATE_IRQ,
QXL_IO_NOTIFY_OOM,
QXL_IO_RESET,
QXL_IO_SET_MODE,
QXL_IO_LOG,
QXL_IO_MEMSLOT_ADD,
QXL_IO_MEMSLOT_DEL,
QXL_IO_DETACH_PRIMARY,
QXL_IO_ATTACH_PRIMARY,
QXL_IO_CREATE_PRIMARY,
QXL_IO_DESTROY_PRIMARY,
QXL_IO_DESTROY_SURFACE_WAIT,
QXL_IO_RANGE_SIZE
};
@ -87,12 +91,9 @@ typedef struct ATTR_PACKED QXLRom {
UINT32 update_id;
UINT32 compression_level;
UINT32 log_level;
UINT32 mode;
UINT32 modes_offset;
UINT32 num_io_pages;
UINT32 pages_offset;
UINT32 draw_area_offset;
UINT32 draw_area_size;
UINT32 num_pages;
UINT32 surface0_area_size;
UINT32 ram_header_offset;
UINT32 mm_clock;
UINT64 flags;
@ -136,12 +137,30 @@ typedef struct ATTR_PACKED QXLCommand {
UINT32 ped;
} QXLCommand;
typedef struct ATTR_PACKED QXLCommandExt {
QXLCommand cmd;
UINT32 group_id;
} QXLCommandExt;
typedef struct ATTR_PACKED QXLMemSlot {
UINT64 mem_start;
UINT64 mem_end;
} QXLMemSlot;
#define QXL_SURF_TYPE_PRIMARY 0
typedef struct ATTR_PACKED QXLSurfaceCreate {
UINT32 width;
UINT32 height;
INT32 stride;
UINT32 depth;
UINT32 position;
UINT32 mouse_mode;
UINT32 flags;
UINT32 type;
PHYSICAL mem;
} QXLSurfaceCreate;
RING_DECLARE(QXLCommandRing, QXLCommand, 32);
RING_DECLARE(QXLCursorRing, QXLCommand, 32);
@ -162,6 +181,7 @@ typedef struct ATTR_PACKED QXLRam {
QXLReleaseRing release_ring;
Rect update_area;
QXLMemSlot mem_slot;
QXLSurfaceCreate create_surface;
UINT64 flags;
} QXLRam;
@ -170,6 +190,11 @@ typedef union QXLReleaseInfo {
UINT64 next; // out
} QXLReleaseInfo;
typedef struct QXLReleaseInfoExt {
QXLReleaseInfo *info;
UINT32 group_id;
} QXLReleaseInfoExt;
typedef struct ATTR_PACKED QXLDataChunk {
UINT32 data_size;
PHYSICAL prev_chunk;
@ -262,8 +287,8 @@ typedef struct ATTR_PACKED QXLDrawable {
QXLReleaseInfo release_info;
UINT8 effect;
UINT8 type;
UINT16 bitmap_offset;
Rect bitmap_area;
UINT8 self_bitmap;
Rect self_bitmap_area;
Rect bbox;
Clip clip;
UINT32 mm_time;