[Spice-devel] [PATCH qxl-win v3] miniport+display: export FLUSH_{SURFACES, RELEASE} ports for use by AssertModeEnable

Alon Levy alevy at redhat.com
Thu Jul 7 02:43:09 PDT 2011


Revision 3 (V10) of the qxl device supports these added io ports which make sleep, resolution
change and logout simpler to implement with less vmexits from pov of the driver.
---
 display/driver.c     |    4 ++++
 display/qxldd.h      |    2 ++
 include/qxl_driver.h |    2 ++
 miniport/qxl.c       |    2 ++
 4 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/display/driver.c b/display/driver.c
index 497df00..00fb5a3 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -710,6 +710,8 @@ static BOOL PrepareHardware(PDev *pdev)
     pdev->asyncable[ASYNCABLE_DESTROY_SURFACE][SYNC] = dev_info.destroy_surface_wait_port;
     pdev->asyncable[ASYNCABLE_DESTROY_ALL_SURFACES][ASYNC] = dev_info.destroy_all_surfaces_async_port;
     pdev->asyncable[ASYNCABLE_DESTROY_ALL_SURFACES][SYNC] = dev_info.destroy_all_surfaces_port;
+    pdev->asyncable[ASYNCABLE_FLUSH_SURFACES][ASYNC] = dev_info.flush_surfaces_async_port;
+    pdev->asyncable[ASYNCABLE_FLUSH_SURFACES][SYNC] = NULL;
 
     pdev->display_event = dev_info.display_event;
     pdev->cursor_event = dev_info.cursor_event;
@@ -771,6 +773,8 @@ static BOOL PrepareHardware(PDev *pdev)
 
     pdev->memslot_del_port = dev_info.memslot_del_port;
 
+    pdev->flush_release_port = dev_info.flush_release_port;
+
     pdev->primary_memory_start = dev_info.surface0_area;
     pdev->primary_memory_size = dev_info.surface0_area_size;
 
diff --git a/display/qxldd.h b/display/qxldd.h
index 8494365..4902e58 100644
--- a/display/qxldd.h
+++ b/display/qxldd.h
@@ -172,6 +172,7 @@ typedef enum {
     ASYNCABLE_DESTROY_PRIMARY,
     ASYNCABLE_DESTROY_SURFACE,
     ASYNCABLE_DESTROY_ALL_SURFACES,
+    ASYNCABLE_FLUSH_SURFACES,
 
     ASYNCABLE_COUNT
 } asyncable_t;
@@ -323,6 +324,7 @@ typedef struct PDev {
     PUCHAR asyncable[ASYNCABLE_COUNT][2];
     HSEMAPHORE asyncable_sem;
     PUCHAR memslot_del_port;
+    PUCHAR flush_release_port;
 
     UINT8* primary_memory_start;
     UINT32 primary_memory_size;
diff --git a/include/qxl_driver.h b/include/qxl_driver.h
index f9a31f1..f49585e 100644
--- a/include/qxl_driver.h
+++ b/include/qxl_driver.h
@@ -61,6 +61,8 @@ typedef struct QXLDriverInfo {
     PUCHAR destroy_primary_async_port;
     PUCHAR destroy_surface_async_port;
     PUCHAR destroy_all_surfaces_async_port;
+    PUCHAR flush_surfaces_async_port;
+    PUCHAR flush_release_port;
     PEVENT display_event;
     PEVENT cursor_event;
     PEVENT sleep_event;
diff --git a/miniport/qxl.c b/miniport/qxl.c
index e941206..f627245 100644
--- a/miniport/qxl.c
+++ b/miniport/qxl.c
@@ -982,6 +982,8 @@ BOOLEAN StartIO(PVOID dev_extension, PVIDEO_REQUEST_PACKET packet)
                 dev_ext->io_port + QXL_IO_DESTROY_SURFACE_ASYNC;
             driver_info->destroy_all_surfaces_async_port =
                 dev_ext->io_port + QXL_IO_DESTROY_ALL_SURFACES_ASYNC;
+            driver_info->flush_surfaces_async_port = dev_ext->io_port + QXL_IO_FLUSH_SURFACES_ASYNC;
+            driver_info->flush_release_port = dev_ext->io_port + QXL_IO_FLUSH_RELEASE;
 
             driver_info->log_port = dev_ext->io_port + QXL_IO_LOG;
             driver_info->log_buf = dev_ext->ram_header->log_buf;
-- 
1.7.5.4



More information about the Spice-devel mailing list