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
This commit is contained in:
foreman
2018-01-22 19:01:34 -05:00
bovenliggende 4bb8a13cfe
commit 25a8e9bca8
@@ -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);