summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2012-05-23 20:50:46 +0300
committerAlon Levy <alevy@redhat.com>2012-06-15 10:34:57 +0300
commit326b80974b4080ed7519801f7d1c96077f5ae0b9 (patch)
tree9ef937fdfbefd86b75a7eb5a8c14000b396688cd
parent73981e02c90cc81dd462f9fc2a00b5b11a9eab00 (diff)
prefix io with qxl_io, add several
-rw-r--r--src/qxl.h8
-rw-r--r--src/qxl_driver.c39
-rw-r--r--src/qxl_surface.c2
3 files changed, 40 insertions, 9 deletions
diff --git a/src/qxl.h b/src/qxl.h
index a1e53f3..4a1cc62 100644
--- a/src/qxl.h
+++ b/src/qxl.h
@@ -434,9 +434,11 @@ static inline void qxl_mem_unverifiable(struct qxl_mem *mem) {}
* I/O port commands
*/
void qxl_update_area(qxl_screen_t *qxl);
-void qxl_memslot_add(qxl_screen_t *qxl, uint8_t id);
-void qxl_create_primary(qxl_screen_t *qxl);
-void qxl_notify_oom(qxl_screen_t *qxl);
+void qxl_io_memslot_add(qxl_screen_t *qxl, uint8_t id);
+void qxl_io_create_primary(qxl_screen_t *qxl);
+void qxl_io_notify_oom(qxl_screen_t *qxl);
+void qxl_io_flush_surfaces(qxl_screen_t *qxl);
+void qxl_io_destroy_all_surfaces (qxl_screen_t *qxl);
#ifdef XSPICE
/* device to spice-server, now xspice to spice-server */
diff --git a/src/qxl_driver.c b/src/qxl_driver.c
index f6e4428..51b28db 100644
--- a/src/qxl_driver.c
+++ b/src/qxl_driver.c
@@ -153,7 +153,7 @@ void qxl_update_area(qxl_screen_t *qxl)
#endif
}
-void qxl_memslot_add(qxl_screen_t *qxl, uint8_t id)
+void qxl_io_memslot_add(qxl_screen_t *qxl, uint8_t id)
{
#ifndef XSPICE
if (qxl->pci->revision >= 3) {
@@ -167,7 +167,7 @@ void qxl_memslot_add(qxl_screen_t *qxl, uint8_t id)
#endif
}
-void qxl_create_primary(qxl_screen_t *qxl)
+void qxl_io_create_primary(qxl_screen_t *qxl)
{
#ifndef XSPICE
if (qxl->pci->revision >= 3) {
@@ -182,11 +182,21 @@ void qxl_create_primary(qxl_screen_t *qxl)
qxl->device_primary = QXL_DEVICE_PRIMARY_CREATED;
}
-void qxl_notify_oom(qxl_screen_t *qxl)
+void qxl_io_notify_oom(qxl_screen_t *qxl)
{
ioport_write(qxl, QXL_IO_NOTIFY_OOM, 0);
}
+void qxl_io_flush_surfaces(qxl_screen_t *qxl)
+{
+#ifndef XSPICE
+ ioport_write(qxl, QXL_IO_FLUSH_SURFACES_ASYNC, 0);
+ qxl_wait_for_io_command(qxl);
+#else
+ ioport_write(qxl, QXL_IO_FLUSH_SURFACES_ASYNC, 0);
+#endif
+}
+
int
qxl_garbage_collect (qxl_screen_t *qxl)
{
@@ -275,7 +285,7 @@ qxl_usleep (int useconds)
int
qxl_handle_oom (qxl_screen_t *qxl)
{
- qxl_notify_oom(qxl);
+ qxl_io_notify_oom(qxl);
#if 0
ErrorF (".");
@@ -533,7 +543,7 @@ setup_slot(qxl_screen_t *qxl, uint8_t slot_index_offset,
ram_header->mem_slot.mem_start = slot->start_phys_addr;
ram_header->mem_slot.mem_end = slot->end_phys_addr;
- qxl_memslot_add(qxl, slot_index);
+ qxl_io_memslot_add(qxl, slot_index);
slot->generation = qxl->rom->slot_generation;
@@ -586,6 +596,25 @@ qxl_mark_mem_unverifiable(qxl_screen_t *qxl)
qxl_mem_unverifiable(qxl->surf_mem);
}
+void
+qxl_io_destroy_all_surfaces (qxl_screen_t *qxl)
+{
+#ifndef XSPICE
+ if (qxl->pci->revision >= 3)
+ {
+ ioport_write(qxl, QXL_IO_DESTROY_ALL_SURFACES_ASYNC, 0);
+ qxl_wait_for_io_command(qxl);
+ }
+ else
+ {
+ ioport_write(qxl, QXL_IO_DESTROY_ALL_SURFACES, 0);
+ }
+#else
+ ErrorF("Xspice: error: UNIMPLEMENTED qxl_io_destroy_all_surfaces\n");
+#endif
+ qxl->device_primary = QXL_DEVICE_PRIMARY_NONE;
+}
+
static Bool
qxl_close_screen(CLOSE_SCREEN_ARGS_DECL)
{
diff --git a/src/qxl_surface.c b/src/qxl_surface.c
index a2810c8..3b2f9dc 100644
--- a/src/qxl_surface.c
+++ b/src/qxl_surface.c
@@ -336,7 +336,7 @@ qxl_surface_cache_create_primary (surface_cache_t *cache,
create->type = QXL_SURF_TYPE_PRIMARY;
create->mem = physical_address (cache->qxl, cache->qxl->ram, cache->qxl->main_mem_slot);
- qxl_create_primary(qxl);
+ qxl_io_create_primary(qxl);
dev_addr = (uint8_t *)qxl->ram + mode->stride * (mode->y_res - 1);