Lines Matching refs:qxl

28 #include "qxl.h"
37 /* TODO: these is copied from qemu/hw/qxl.c . It shouldn't be there
86 #define dprint(qxl, lvl, fmt, ...) printf(fmt, __VA_ARGS__)
91 qxl_screen_t *qxl = container_of(sin, qxl_screen_t, display_sin);
94 dprint(qxl, 0, "%s ignored\n", __FUNCTION__);
97 dprint(qxl, 1, "%s:\n", __FUNCTION__);
99 qxl->worker = qxl_worker;
104 qxl_screen_t *qxl = container_of(sin, qxl_screen_t, display_sin);
106 dprint(qxl, 1, "%s: %d\n", __FUNCTION__, level);
107 qxl->shadow_rom.compression_level = level;
108 qxl->rom->compression_level = level;
113 qxl_screen_t *qxl = container_of(sin, qxl_screen_t, display_sin);
115 qxl->shadow_rom.mm_clock = mm_time;
116 qxl->rom->mm_clock = mm_time;
121 qxl_screen_t *qxl = container_of(sin, qxl_screen_t, display_sin);
123 dprint(qxl, 1, "%s:\n", __FUNCTION__);
129 info->qxl_ram_size = qxl->shadow_rom.num_pages << TARGET_PAGE_BITS;
133 void qxl_send_events(qxl_screen_t *qxl, int events)
137 qxl_garbage_collect(qxl);
145 qxl_screen_t *qxl = container_of(sin, qxl_screen_t, display_sin);
146 QXLRam *ram = get_ram_header(qxl);
151 dprint(qxl, 2, "%s: %s\n", __FUNCTION__,
152 qxl->cmdflags ? "compat" : "native");
160 ext->flags = qxl->cmdflags;
163 qxl_send_events(qxl, QXL_INTERRUPT_DISPLAY);
165 qxl->guest_primary.commands++;
167 //qxl_track_command(qxl, ext);
168 //qxl_log_command(qxl, "cmd", ext);
175 qxl_screen_t *qxl = container_of(sin, qxl_screen_t, display_sin);
176 QXLRam *header = get_ram_header(qxl);
184 static inline void qxl_push_free_res(qxl_screen_t *qxl, int flush)
186 QXLRam *header = get_ram_header(qxl);
197 if (!flush && qxl->oom_running) {
201 if (!flush && qxl->num_free_res < QXL_FREE_BUNCH_SIZE) {
207 dprint(qxl, 2, "free: push %d items, notify %s, ring %d/%d [%d,%d]\n",
208 qxl->num_free_res, notify ? "yes" : "no",
212 qxl_send_events(qxl, QXL_INTERRUPT_DISPLAY);
216 qxl->num_free_res = 0;
217 qxl->last_release = NULL;
224 qxl_screen_t *qxl = container_of(sin, qxl_screen_t, display_sin);
225 QXLRam *ram = get_ram_header(qxl);
242 qxl->last_release->next = ext.info->id;
245 qxl->last_release = ext.info;
246 qxl->num_free_res++;
247 dprint(qxl, 3, "%4d\r", qxl->num_free_res);
248 qxl_push_free_res(qxl, 0);
254 qxl_screen_t *qxl = container_of(sin, qxl_screen_t, display_sin);
257 QXLRam *ram = get_ram_header(qxl);
267 ext->flags = qxl->cmdflags;
270 qxl_send_events(qxl, QXL_INTERRUPT_CURSOR);
272 qxl->guest_primary.commands++;
273 //qxl_track_command(qxl, ext); // TODO - copy me
274 //qxl_log_command(qxl, "csr", ext); // TODO - copy me
281 qxl_screen_t *qxl = container_of(sin, qxl_screen_t, display_sin);
282 QXLRam *ram = get_ram_header(qxl);
300 qxl_screen_t *qxl = container_of(sin, qxl_screen_t, display_sin);
303 dprint(qxl, 1, "free: guest flush (have %d)\n", qxl->num_free_res);
304 ret = qxl->num_free_res;
306 qxl_push_free_res(qxl, 1);
317 .base.description = "qxl gpu",
337 void qxl_add_spice_display_interface(qxl_screen_t *qxl)
340 * that were added directly from qemu/hw/qxl.c */
341 qxl->cmdflags = 0;
342 qxl->oom_running = 0;
343 qxl->num_free_res = 0;
345 qxl->display_sin.base.sif = &qxl_interface.base;
346 qxl->display_sin.id = 0;
347 qxl->display_sin.st = (struct QXLState*)qxl;
348 spice_server_add_interface(qxl->spice_server, &qxl->display_sin.base);
351 void spiceqxl_display_monitors_config(qxl_screen_t *qxl)
353 spice_qxl_monitors_config_async(&qxl->display_sin, physical_address(qxl, qxl->monitors_config, 0),