qxl-wddm-dod: Registry-based control over VSync

Registry override of default behavior (disabling when enabled
by default) provided for support and troubleshooting only in case
this feature affects specific user.

Signed-off-by: Yuri Benditovich <yuri.benditovich@daynix.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
This commit is contained in:
yuri.benditovich@daynix.com 2017-04-01 19:40:33 +03:00 committed by Frediano Ziglio
parent 223fe90a00
commit 074cc3ef58

View File

@ -21,6 +21,38 @@
int nDebugLevel = TRACE_LEVEL_ERROR;
// registry-based configuration is intended to be manual only
// for VSync suppression during support and troubleshooting
// and not expected to be made default
static void QueryVSyncSetting(BOOLEAN& b, const UNICODE_STRING *path)
{
PAGED_CODE();
WCHAR buffer[MAX_PATH];
ULONG val = b;
RTL_QUERY_REGISTRY_TABLE QueryTable[3] = {};
if (path->Length >= sizeof(buffer))
return;
QueryTable[0].Flags = RTL_QUERY_REGISTRY_SUBKEY;
QueryTable[0].Name = L"Parameters";
QueryTable[1].Flags = RTL_QUERY_REGISTRY_DIRECT | RTL_QUERY_REGISTRY_TYPECHECK | RTL_QUERY_REGISTRY_REQUIRED;
QueryTable[1].Name = L"EnableVSync";
QueryTable[1].DefaultType = REG_DWORD << 24;
QueryTable[1].EntryContext = &val;
RtlCopyMemory(buffer, path->Buffer, path->Length);
buffer[path->Length/2] = 0;
NTSTATUS status = RtlQueryRegistryValues(RTL_REGISTRY_ABSOLUTE, buffer, QueryTable, NULL, NULL);
if (NT_SUCCESS(status))
{
DbgPrint(TRACE_LEVEL_INFORMATION, ("%s: val = %d\n", __FUNCTION__, val));
b = !!val;
}
else
{
DbgPrint(TRACE_LEVEL_INFORMATION, ("%s: status = %X\n", __FUNCTION__, status));
}
}
extern "C"
NTSTATUS
@ -52,6 +84,9 @@ DriverEntry(
// related to enabled VSync control in Win10RS1
//g_bSupportVSync = TRUE;
// for support/troubleshooting be able to disable VSync on specific machine
QueryVSyncSetting(g_bSupportVSync, pRegistryPath);
}
DbgPrint(TRACE_LEVEL_WARNING, ("VSync support %sabled for %d.%d.%d\n",
g_bSupportVSync ? "en" : "dis",