Merge branch 'master' of https://github.com/vrozenfe/qxl-dod
Conflicts: qxldod/QxlDod.h
This commit is contained in:
commit
b15d2f5bbd
61
qxldod.sln
61
qxldod.sln
@ -1,6 +1,7 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2012
|
||||
# Visual Studio 2013
|
||||
VisualStudioVersion = 12.0.21005.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qxldod", "qxldod\qxldod.vcxproj", "{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qxldod Package", "qxldod Package\qxldod Package.vcxproj", "{B8C04B51-4207-491D-A7DD-C54861E8B528}"
|
||||
@ -10,40 +11,16 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qxldod Package", "qxldod Pa
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Win8.1 Debug|Win32 = Win8.1 Debug|Win32
|
||||
Win8.1 Debug|x64 = Win8.1 Debug|x64
|
||||
Win8.1 Release|Win32 = Win8.1 Release|Win32
|
||||
Win8.1 Release|x64 = Win8.1 Release|x64
|
||||
Win8 Debug|Win32 = Win8 Debug|Win32
|
||||
Win8 Debug|x64 = Win8 Debug|x64
|
||||
Win8 Release|Win32 = Win8 Release|Win32
|
||||
Win8 Release|x64 = Win8 Release|x64
|
||||
Win8.1 Debug|Win32 = Win8.1 Debug|Win32
|
||||
Win8.1 Debug|x64 = Win8.1 Debug|x64
|
||||
Win8.1 Release|Win32 = Win8.1 Release|Win32
|
||||
Win8.1 Release|x64 = Win8.1 Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Debug|Win32.ActiveCfg = Win8.1 Debug|Win32
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Debug|Win32.Build.0 = Win8.1 Debug|Win32
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Debug|Win32.Deploy.0 = Win8.1 Debug|Win32
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Debug|x64.ActiveCfg = Win8.1 Debug|x64
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Debug|x64.Build.0 = Win8.1 Debug|x64
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Debug|x64.Deploy.0 = Win8.1 Debug|x64
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Release|Win32.ActiveCfg = Win8.1 Release|Win32
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Release|Win32.Build.0 = Win8.1 Release|Win32
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Release|Win32.Deploy.0 = Win8.1 Release|Win32
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Release|x64.ActiveCfg = Win8.1 Release|x64
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Release|x64.Build.0 = Win8.1 Release|x64
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Release|x64.Deploy.0 = Win8.1 Release|x64
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Debug|Win32.ActiveCfg = Win8.1 Debug|Win32
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Debug|Win32.Build.0 = Win8.1 Debug|Win32
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Debug|Win32.Deploy.0 = Win8.1 Debug|Win32
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Debug|x64.ActiveCfg = Win8.1 Debug|x64
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Debug|x64.Build.0 = Win8.1 Debug|x64
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Debug|x64.Deploy.0 = Win8.1 Debug|x64
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Release|Win32.ActiveCfg = Win8.1 Release|Win32
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Release|Win32.Build.0 = Win8.1 Release|Win32
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Release|Win32.Deploy.0 = Win8.1 Release|Win32
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Release|x64.ActiveCfg = Win8.1 Release|x64
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Release|x64.Build.0 = Win8.1 Release|x64
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Release|x64.Deploy.0 = Win8.1 Release|x64
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8 Debug|Win32.ActiveCfg = Win8 Debug|Win32
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8 Debug|Win32.Build.0 = Win8 Debug|Win32
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8 Debug|Win32.Deploy.0 = Win8 Debug|Win32
|
||||
@ -56,6 +33,18 @@ Global
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8 Release|x64.ActiveCfg = Win8 Release|x64
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8 Release|x64.Build.0 = Win8 Release|x64
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8 Release|x64.Deploy.0 = Win8 Release|x64
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Debug|Win32.ActiveCfg = Win8.1 Debug|Win32
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Debug|Win32.Build.0 = Win8.1 Debug|Win32
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Debug|Win32.Deploy.0 = Win8.1 Debug|Win32
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Debug|x64.ActiveCfg = Win8.1 Debug|x64
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Debug|x64.Build.0 = Win8.1 Debug|x64
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Debug|x64.Deploy.0 = Win8.1 Debug|x64
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Release|Win32.ActiveCfg = Win8.1 Release|Win32
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Release|Win32.Build.0 = Win8.1 Release|Win32
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Release|Win32.Deploy.0 = Win8.1 Release|Win32
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Release|x64.ActiveCfg = Win8.1 Release|x64
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Release|x64.Build.0 = Win8.1 Release|x64
|
||||
{A6F48FC7-97E9-48EC-BCDF-1E4F9B43AADD}.Win8.1 Release|x64.Deploy.0 = Win8.1 Release|x64
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8 Debug|Win32.ActiveCfg = Win8 Debug|Win32
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8 Debug|Win32.Build.0 = Win8 Debug|Win32
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8 Debug|Win32.Deploy.0 = Win8 Debug|Win32
|
||||
@ -68,6 +57,18 @@ Global
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8 Release|x64.ActiveCfg = Win8 Release|x64
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8 Release|x64.Build.0 = Win8 Release|x64
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8 Release|x64.Deploy.0 = Win8 Release|x64
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Debug|Win32.ActiveCfg = Win8.1 Debug|Win32
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Debug|Win32.Build.0 = Win8.1 Debug|Win32
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Debug|Win32.Deploy.0 = Win8.1 Debug|Win32
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Debug|x64.ActiveCfg = Win8.1 Debug|x64
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Debug|x64.Build.0 = Win8.1 Debug|x64
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Debug|x64.Deploy.0 = Win8.1 Debug|x64
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Release|Win32.ActiveCfg = Win8.1 Release|Win32
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Release|Win32.Build.0 = Win8.1 Release|Win32
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Release|Win32.Deploy.0 = Win8.1 Release|Win32
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Release|x64.ActiveCfg = Win8.1 Release|x64
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Release|x64.Build.0 = Win8.1 Release|x64
|
||||
{B8C04B51-4207-491D-A7DD-C54861E8B528}.Win8.1 Release|x64.Deploy.0 = Win8.1 Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
@ -98,7 +98,8 @@ NTSTATUS QxlDod::CheckHardware()
|
||||
Status = STATUS_GRAPHICS_DRIVER_MISMATCH;
|
||||
if (Header.VendorID == REDHAT_PCI_VENDOR_ID &&
|
||||
Header.DeviceID == 0x0100 &&
|
||||
Header.RevisionID == 4)
|
||||
Header.RevisionID == 4 &&
|
||||
m_VgaCompatible == 0)
|
||||
{
|
||||
Status = STATUS_SUCCESS;
|
||||
}
|
||||
@ -405,12 +406,14 @@ NTSTATUS QxlDod::QueryAdapterInfo(_In_ CONST DXGKARG_QUERYADAPTERINFO* pQueryAda
|
||||
|
||||
pDriverCaps->WDDMVersion = DXGKDDI_WDDMv1_2;
|
||||
pDriverCaps->HighestAcceptableAddress.QuadPart = -1;
|
||||
pDriverCaps->SupportNonVGA = TRUE;
|
||||
|
||||
if (m_pHWDevice->EnablePointer()) {
|
||||
if (m_pHWDevice->EnablePointer() && m_PointerCaps) {
|
||||
pDriverCaps->MaxPointerWidth = POINTER_SIZE;
|
||||
pDriverCaps->MaxPointerHeight = POINTER_SIZE;
|
||||
pDriverCaps->PointerCaps.Monochrome = 1;
|
||||
pDriverCaps->PointerCaps.Color = 1;
|
||||
pDriverCaps->PointerCaps.Monochrome = m_PointerCaps & 0x00000001;
|
||||
pDriverCaps->PointerCaps.Color = m_PointerCaps & 0x00000002;
|
||||
pDriverCaps->PointerCaps.MaskedColor = m_PointerCaps & 0x00000004;
|
||||
}
|
||||
DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s 1\n", __FUNCTION__));
|
||||
return STATUS_SUCCESS;
|
||||
@ -1895,6 +1898,56 @@ NTSTATUS QxlDod::RegisterHWInfo(ULONG Id)
|
||||
return Status;
|
||||
}
|
||||
|
||||
NTSTATUS QxlDod::ReadConfiguration()
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
NTSTATUS Status;
|
||||
DbgPrint(TRACE_LEVEL_VERBOSE, ("---> %s\n", __FUNCTION__));
|
||||
|
||||
HANDLE DevInstRegKeyHandle;
|
||||
Status = IoOpenDeviceRegistryKey(m_pPhysicalDevice, PLUGPLAY_REGKEY_DRIVER, KEY_SET_VALUE, &DevInstRegKeyHandle);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DbgPrint(TRACE_LEVEL_ERROR, ("IoOpenDeviceRegistryKey failed for PDO: 0x%I64x, Status: 0x%I64x", m_pPhysicalDevice, Status));
|
||||
return Status;
|
||||
}
|
||||
UNICODE_STRING ValueName;
|
||||
UCHAR Buffer[sizeof(KEY_VALUE_PARTIAL_INFORMATION)+sizeof(ULONG)];
|
||||
PKEY_VALUE_PARTIAL_INFORMATION Value = (PKEY_VALUE_PARTIAL_INFORMATION)Buffer;
|
||||
ULONG ValueLength = sizeof(Buffer);
|
||||
ULONG ResultLength;
|
||||
ULONG Length;
|
||||
|
||||
RtlInitUnicodeString(&ValueName, L"VgaCompatible");
|
||||
|
||||
Status = ZwQueryValueKey(DevInstRegKeyHandle,
|
||||
&ValueName,
|
||||
KeyValuePartialInformation,
|
||||
Value,
|
||||
ValueLength,
|
||||
&ResultLength);
|
||||
|
||||
if (NT_SUCCESS(Status)) {
|
||||
m_VgaCompatible = *(PULONG)(Value->Data);
|
||||
}
|
||||
|
||||
RtlInitUnicodeString(&ValueName, L"PointerCaps");
|
||||
|
||||
Status = ZwQueryValueKey(DevInstRegKeyHandle,
|
||||
&ValueName,
|
||||
KeyValuePartialInformation,
|
||||
Value,
|
||||
ValueLength,
|
||||
&ResultLength);
|
||||
|
||||
if (NT_SUCCESS(Status)) {
|
||||
m_PointerCaps = *(PULONG)(Value->Data);
|
||||
}
|
||||
|
||||
DbgPrint(TRACE_LEVEL_VERBOSE, ("<--- %s\n", __FUNCTION__));
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// Non-Paged Code
|
||||
|
@ -421,7 +421,7 @@ public:
|
||||
NTSTATUS SetPowerState(DEVICE_POWER_STATE DevicePowerState, DXGK_DISPLAY_INFORMATION* pDispInfo);
|
||||
NTSTATUS HWInit(PCM_RESOURCE_LIST pResList, DXGK_DISPLAY_INFORMATION* pDispInfo);
|
||||
NTSTATUS HWClose(void);
|
||||
BOOLEAN EnablePointer(void) { return FALSE; }
|
||||
BOOLEAN EnablePointer(void) { return TRUE; }
|
||||
NTSTATUS ExecutePresentDisplayOnly(_In_ BYTE* DstAddr,
|
||||
_In_ UINT DstBitPerPixel,
|
||||
_In_ BYTE* SrcAddr,
|
||||
@ -565,6 +565,8 @@ private:
|
||||
D3DDDI_VIDEO_PRESENT_SOURCE_ID m_SystemDisplaySourceId;
|
||||
DXGKARG_SETPOINTERSHAPE m_PointerShape;
|
||||
HwDeviceIntrface* m_pHWDevice;
|
||||
DWORD m_VgaCompatible;
|
||||
DWORD m_PointerCaps;
|
||||
public:
|
||||
QxlDod(_In_ DEVICE_OBJECT* pPhysicalDeviceObject);
|
||||
~QxlDod(void);
|
||||
@ -683,6 +685,7 @@ private:
|
||||
NTSTATUS IsVidPnSourceModeFieldsValid(CONST D3DKMDT_VIDPN_SOURCE_MODE* pSourceMode) const;
|
||||
NTSTATUS IsVidPnPathFieldsValid(CONST D3DKMDT_VIDPN_PRESENT_PATH* pPath) const;
|
||||
NTSTATUS RegisterHWInfo(_In_ ULONG Id);
|
||||
NTSTATUS ReadConfiguration();
|
||||
};
|
||||
|
||||
NTSTATUS
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user