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 _______________________________________________ Spice-devel mailing list Spice-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/spice-devel