From 25a8e9bca842cbfd971712c4ad8a52de88035866 Mon Sep 17 00:00:00 2001
From: foreman
Date: Mon, 22 Jan 2018 19:01:34 -0500
Subject: [PATCH] P4 to Git Change 1506436 by
skudchad@skudchad_test2_win_opencl on 2018/01/22 18:54:50
SWDEV-143124 - [CQE OCL][DTB][ISV][QR][DTB-BLOCKER] Applications (Both 64/32-bit) are not running on Win 7 due to faulty CL#1503998
- Use GetProcAddress to check gdi32.dll for D3DKMTEnumAdapters2
Affected files ...
... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/icd/icd_windows_dxgk.c#3 edit
---
opencl/api/opencl/khronos/icd/icd_windows_dxgk.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/opencl/api/opencl/khronos/icd/icd_windows_dxgk.c b/opencl/api/opencl/khronos/icd/icd_windows_dxgk.c
index adf66ad2e2..59b2f6b5ad 100644
--- a/opencl/api/opencl/khronos/icd/icd_windows_dxgk.c
+++ b/opencl/api/opencl/khronos/icd/icd_windows_dxgk.c
@@ -56,17 +56,28 @@ bool khrIcdOsVendorsEnumerateDXGK(void)
D3DKMT_ADAPTERINFO* pAdapterInfo;
D3DKMT_ENUMADAPTERS2 EnumAdapters;
NTSTATUS Status = STATUS_SUCCESS;
+ // Get handle to GDI Runtime
+ HMODULE h = GetModuleHandle("gdi32.dll");
+ if (!h)
+ {
+ return FALSE;
+ }
char cszLibraryName[1024] = { 0 };
EnumAdapters.NumAdapters = 0;
EnumAdapters.pAdapters = NULL;
- Status = D3DKMTEnumAdapters2(&EnumAdapters);
+ PFND3DKMT_ENUMADAPTERS2 pEnumAdapters2 = (PFND3DKMT_ENUMADAPTERS2)GetProcAddress((HMODULE)h, "D3DKMTEnumAdapters2");
+ if (!pEnumAdapters2)
+ {
+ return FALSE;
+ }
+ Status = pEnumAdapters2(&EnumAdapters);
if (!NT_SUCCESS(Status) && (Status != STATUS_BUFFER_TOO_SMALL))
{
return FALSE;
}
pAdapterInfo = (D3DKMT_ADAPTERINFO*)malloc(sizeof(D3DKMT_ADAPTERINFO)*(EnumAdapters.NumAdapters));
EnumAdapters.pAdapters = pAdapterInfo;
- Status = D3DKMTEnumAdapters2(&EnumAdapters);
+ Status = pEnumAdapters2(&EnumAdapters);
if (!NT_SUCCESS(Status))
{
if (pAdapterInfo) free(pAdapterInfo);