[Spice-devel] [PATCH] qxl-wddm-dod: Fix for screen not shown after driver disabled
Frediano Ziglio
fziglio at redhat.com
Wed Jan 25 16:26:27 UTC 2017
>
> https://bugzilla.redhat.com/show_bug.cgi?id=1411340
> Do not set SupportNonVGA field for device rev.4 and higher.
> Then the class driver will not call miniport's procedure
> StopDeviceAndReleasePostDisplayOwnership upon PnP stop.
> QXL device modes are not compatible with VGA ones; the
> driver in this procedure returns display information related
> to QXL mode which later used by BasicDisplay driver and causes
> it to show the screen incorrectly or fail to show it at all.
>
> Signed-off-by: Yuri Benditovich <yuri.benditovich at daynix.com>
> ---
> qxldod/QxlDod.cpp | 2 +-
> qxldod/QxlDod.h | 2 ++
> 2 files changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/qxldod/QxlDod.cpp b/qxldod/QxlDod.cpp
> index 7adbec4..001cd67 100755
> --- a/qxldod/QxlDod.cpp
> +++ b/qxldod/QxlDod.cpp
> @@ -411,7 +411,7 @@ NTSTATUS QxlDod::QueryAdapterInfo(_In_ CONST
> DXGKARG_QUERYADAPTERINFO* pQueryAda
> pDriverCaps->PointerCaps.Monochrome = 1;
> pDriverCaps->PointerCaps.Color = 1;
>
> - pDriverCaps->SupportNonVGA = TRUE;
> + pDriverCaps->SupportNonVGA = m_pHWDevice->IsBIOSCompatible();
>
> DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s 1\n", __FUNCTION__));
> return STATUS_SUCCESS;
> diff --git a/qxldod/QxlDod.h b/qxldod/QxlDod.h
> index 4df4c61..8df1fcf 100755
> --- a/qxldod/QxlDod.h
> +++ b/qxldod/QxlDod.h
> @@ -263,6 +263,7 @@ public:
> virtual NTSTATUS Escape(_In_ CONST DXGKARG_ESCAPE* pEscap) = 0;
> NTSTATUS AcquireDisplayInfo(DXGK_DISPLAY_INFORMATION& DispInfo);
> ULONG GetId(void) { return m_Id; }
> + virtual BOOLEAN IsBIOSCompatible() { return TRUE; }
> protected:
> virtual NTSTATUS GetModeList(DXGK_DISPLAY_INFORMATION* pDispInfo) = 0;
> protected:
> @@ -480,6 +481,7 @@ public:
> NTSTATUS SetPointerShape(_In_ CONST DXGKARG_SETPOINTERSHAPE*
> pSetPointerShape);
> NTSTATUS SetPointerPosition(_In_ CONST DXGKARG_SETPOINTERPOSITION*
> pSetPointerPosition);
> NTSTATUS Escape(_In_ CONST DXGKARG_ESCAPE* pEscap);
> + BOOLEAN IsBIOSCompatible() { return FALSE; }
> protected:
> NTSTATUS GetModeList(DXGK_DISPLAY_INFORMATION* pDispInfo);
> VOID BltBits (BLT_INFO* pDst,
Why you used IsBIOSCompatible name instead of IsVGACompatible ?
Frediano
More information about the Spice-devel
mailing list