qxl-wddm-dod: Fix for screen not shown after driver disabled
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@daynix.com> Acked-by: Frediano Ziglio <fziglio@redhat.com>
This commit is contained in:
parent
89b399e6be
commit
53ca7ce4cd
@ -411,7 +411,7 @@ NTSTATUS QxlDod::QueryAdapterInfo(_In_ CONST DXGKARG_QUERYADAPTERINFO* pQueryAda
|
|||||||
pDriverCaps->PointerCaps.Monochrome = 1;
|
pDriverCaps->PointerCaps.Monochrome = 1;
|
||||||
pDriverCaps->PointerCaps.Color = 1;
|
pDriverCaps->PointerCaps.Color = 1;
|
||||||
|
|
||||||
pDriverCaps->SupportNonVGA = TRUE;
|
pDriverCaps->SupportNonVGA = m_pHWDevice->IsBIOSCompatible();
|
||||||
|
|
||||||
DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s 1\n", __FUNCTION__));
|
DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s 1\n", __FUNCTION__));
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
|
@ -263,6 +263,7 @@ public:
|
|||||||
virtual NTSTATUS Escape(_In_ CONST DXGKARG_ESCAPE* pEscap) = 0;
|
virtual NTSTATUS Escape(_In_ CONST DXGKARG_ESCAPE* pEscap) = 0;
|
||||||
NTSTATUS AcquireDisplayInfo(DXGK_DISPLAY_INFORMATION& DispInfo);
|
NTSTATUS AcquireDisplayInfo(DXGK_DISPLAY_INFORMATION& DispInfo);
|
||||||
ULONG GetId(void) { return m_Id; }
|
ULONG GetId(void) { return m_Id; }
|
||||||
|
virtual BOOLEAN IsBIOSCompatible() { return TRUE; }
|
||||||
protected:
|
protected:
|
||||||
virtual NTSTATUS GetModeList(DXGK_DISPLAY_INFORMATION* pDispInfo) = 0;
|
virtual NTSTATUS GetModeList(DXGK_DISPLAY_INFORMATION* pDispInfo) = 0;
|
||||||
protected:
|
protected:
|
||||||
@ -480,6 +481,7 @@ public:
|
|||||||
NTSTATUS SetPointerShape(_In_ CONST DXGKARG_SETPOINTERSHAPE* pSetPointerShape);
|
NTSTATUS SetPointerShape(_In_ CONST DXGKARG_SETPOINTERSHAPE* pSetPointerShape);
|
||||||
NTSTATUS SetPointerPosition(_In_ CONST DXGKARG_SETPOINTERPOSITION* pSetPointerPosition);
|
NTSTATUS SetPointerPosition(_In_ CONST DXGKARG_SETPOINTERPOSITION* pSetPointerPosition);
|
||||||
NTSTATUS Escape(_In_ CONST DXGKARG_ESCAPE* pEscap);
|
NTSTATUS Escape(_In_ CONST DXGKARG_ESCAPE* pEscap);
|
||||||
|
BOOLEAN IsBIOSCompatible() { return FALSE; }
|
||||||
protected:
|
protected:
|
||||||
NTSTATUS GetModeList(DXGK_DISPLAY_INFORMATION* pDispInfo);
|
NTSTATUS GetModeList(DXGK_DISPLAY_INFORMATION* pDispInfo);
|
||||||
VOID BltBits (BLT_INFO* pDst,
|
VOID BltBits (BLT_INFO* pDst,
|
||||||
|
Loading…
Reference in New Issue
Block a user