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);