Fix variable naming, array size and cleanup paths.
Fix changes added as part of para_virtualization support
1. to use camelCase for variable names
2. Use sizeof(element) while calculating array size.
3. Free/unload allocations/libraries during cleanup.
diff --git a/loader/windows/icd_windows.c b/loader/windows/icd_windows.c
index 22b296b..cf6ff73 100644
--- a/loader/windows/icd_windows.c
+++ b/loader/windows/icd_windows.c
@@ -35,43 +35,43 @@
LUID luid;
} WinAdapter;
-LUID ZeroLuid = { 0, 0 };
+const LUID ZeroLuid = { 0, 0 };
static WinAdapter* pWinAdapterBegin = NULL;
static WinAdapter* pWinAdapterEnd = NULL;
static WinAdapter* pWinAdapterCapacity = NULL;
-void AdapterAdd(const char* szName, LUID luid)
+void adapterAdd(const char* szName, LUID luid)
{
if (pWinAdapterEnd == pWinAdapterCapacity)
{
- size_t OldCapacity = pWinAdapterCapacity - pWinAdapterBegin;
- size_t NewCapacity = OldCapacity;
- if (0 == NewCapacity)
+ size_t oldCapacity = pWinAdapterCapacity - pWinAdapterBegin;
+ size_t newCapacity = oldCapacity;
+ if (0 == newCapacity)
{
- NewCapacity = 1;
+ newCapacity = 1;
}
- NewCapacity *= 2;
+ newCapacity *= 2;
- WinAdapter* pNewBegin = malloc(NewCapacity * sizeof(*pWinAdapterBegin));
+ WinAdapter* pNewBegin = malloc(newCapacity * sizeof(*pWinAdapterBegin));
if (pNewBegin)
{
if (pWinAdapterBegin)
{
- memcpy(pNewBegin, pWinAdapterBegin, OldCapacity * sizeof(*pWinAdapterBegin));
+ memcpy(pNewBegin, pWinAdapterBegin, oldCapacity * sizeof(*pWinAdapterBegin));
free(pWinAdapterBegin);
}
- pWinAdapterCapacity = pNewBegin + NewCapacity;
- pWinAdapterEnd = pNewBegin + OldCapacity;
+ pWinAdapterCapacity = pNewBegin + newCapacity;
+ pWinAdapterEnd = pNewBegin + oldCapacity;
pWinAdapterBegin = pNewBegin;
}
}
if (pWinAdapterEnd != pWinAdapterCapacity)
{
- size_t nameLen = strlen(szName) + 1;
+ size_t nameLen = (strlen(szName) + 1)*sizeof(szName[0]);
if (pWinAdapterEnd->szName = malloc(nameLen))
{
- memcpy(pWinAdapterEnd->szName, szName, nameLen * sizeof(*szName));
+ memcpy(pWinAdapterEnd->szName, szName, nameLen);
pWinAdapterEnd->luid = luid;
++pWinAdapterEnd;
}
@@ -157,7 +157,7 @@
continue;
}
// add the library
- AdapterAdd(cszLibraryName, ZeroLuid);
+ adapterAdd(cszLibraryName, ZeroLuid);
}
}
diff --git a/loader/windows/icd_windows_dxgk.c b/loader/windows/icd_windows_dxgk.c
index 8530c8e..542f2ea 100644
--- a/loader/windows/icd_windows_dxgk.c
+++ b/loader/windows/icd_windows_dxgk.c
@@ -39,7 +39,10 @@
#if defined(DXGKDDI_INTERFACE_VERSION_WDDM2_4) && (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
// Get handle to GDI Runtime
HMODULE h = LoadLibrary("gdi32.dll");
- if (h && GetProcAddress((HMODULE)h, "D3DKMTSubmitPresentBltToHwQueue")) // OS Version check
+ if (h == NULL)
+ return ret;
+
+ if(GetProcAddress((HMODULE)h, "D3DKMTSubmitPresentBltToHwQueue")) // OS Version check
{
D3DKMT_ADAPTERINFO* pAdapterInfo = NULL;
D3DKMT_ENUMADAPTERS2 EnumAdapters;
@@ -85,28 +88,28 @@
goto out;
}
const char* cszOpenCLRegKeyName = GetOpenCLRegKeyName();
- const int OpenCLRegKeyNameSize = (int)(strlen(cszOpenCLRegKeyName) + 1);
+ const int szOpenCLRegKeyName = (int)(strlen(cszOpenCLRegKeyName) + 1)*sizeof(cszOpenCLRegKeyName[0]);
for (UINT AdapterIndex = 0; AdapterIndex < EnumAdapters.NumAdapters; AdapterIndex++)
{
- D3DDDI_QUERYREGISTRY_INFO QueryArgs = {0};
- D3DDDI_QUERYREGISTRY_INFO* pQueryArgs = &QueryArgs;
+ D3DDDI_QUERYREGISTRY_INFO queryArgs = {0};
+ D3DDDI_QUERYREGISTRY_INFO* pQueryArgs = &queryArgs;
D3DDDI_QUERYREGISTRY_INFO* pQueryBuffer = NULL;
- QueryArgs.QueryType = D3DDDI_QUERYREGISTRY_ADAPTERKEY;
- QueryArgs.QueryFlags.TranslatePath = TRUE;
- QueryArgs.ValueType = REG_SZ;
+ queryArgs.QueryType = D3DDDI_QUERYREGISTRY_ADAPTERKEY;
+ queryArgs.QueryFlags.TranslatePath = TRUE;
+ queryArgs.ValueType = REG_SZ;
MultiByteToWideChar(
CP_ACP,
0,
cszOpenCLRegKeyName,
- OpenCLRegKeyNameSize,
- QueryArgs.ValueName,
- ARRAYSIZE(QueryArgs.ValueName));
- D3DKMT_QUERYADAPTERINFO QueryAdapterInfo = {0};
- QueryAdapterInfo.hAdapter = pAdapterInfo[AdapterIndex].hAdapter;
- QueryAdapterInfo.Type = KMTQAITYPE_QUERYREGISTRY;
- QueryAdapterInfo.pPrivateDriverData = &QueryArgs;
- QueryAdapterInfo.PrivateDriverDataSize = sizeof(QueryArgs);
- Status = D3DKMTQueryAdapterInfo(&QueryAdapterInfo);
+ szOpenCLRegKeyName,
+ queryArgs.ValueName,
+ ARRAYSIZE(queryArgs.ValueName));
+ D3DKMT_QUERYADAPTERINFO queryAdapterInfo = {0};
+ queryAdapterInfo.hAdapter = pAdapterInfo[AdapterIndex].hAdapter;
+ queryAdapterInfo.Type = KMTQAITYPE_QUERYREGISTRY;
+ queryAdapterInfo.pPrivateDriverData = &queryArgs;
+ queryAdapterInfo.PrivateDriverDataSize = sizeof(queryArgs);
+ Status = D3DKMTQueryAdapterInfo(&queryAdapterInfo);
if (!NT_SUCCESS(Status))
{
// Continue trying to get as much info on each adapter as possible.
@@ -115,12 +118,12 @@
}
if (NT_SUCCESS(Status) && pQueryArgs->Status == D3DDDI_QUERYREGISTRY_STATUS_BUFFER_OVERFLOW)
{
- ULONG QueryBufferSize = sizeof(D3DDDI_QUERYREGISTRY_INFO) + QueryArgs.OutputValueSize;
- pQueryBuffer = (D3DDDI_QUERYREGISTRY_INFO*)malloc(QueryBufferSize);
- memcpy(pQueryBuffer, &QueryArgs, sizeof(D3DDDI_QUERYREGISTRY_INFO));
- QueryAdapterInfo.pPrivateDriverData = pQueryBuffer;
- QueryAdapterInfo.PrivateDriverDataSize = QueryBufferSize;
- Status = D3DKMTQueryAdapterInfo(&QueryAdapterInfo);
+ ULONG queryBufferSize = sizeof(D3DDDI_QUERYREGISTRY_INFO) + queryArgs.OutputValueSize;
+ pQueryBuffer = (D3DDDI_QUERYREGISTRY_INFO*)malloc(queryBufferSize);
+ memcpy(pQueryBuffer, &queryArgs, sizeof(D3DDDI_QUERYREGISTRY_INFO));
+ queryAdapterInfo.pPrivateDriverData = pQueryBuffer;
+ queryAdapterInfo.PrivateDriverDataSize = queryBufferSize;
+ Status = D3DKMTQueryAdapterInfo(&queryAdapterInfo);
pQueryArgs = pQueryBuffer;
}
if (NT_SUCCESS(Status) && pQueryArgs->Status == D3DDDI_QUERYREGISTRY_STATUS_SUCCESS)
@@ -130,7 +133,7 @@
{
size_t len = wcstombs(cszLibraryName, pWchar, sizeof(cszLibraryName));
KHR_ICD_ASSERT(len == (sizeof(cszLibraryName) - 1));
- AdapterAdd(cszLibraryName, pAdapterInfo[AdapterIndex].AdapterLuid);
+ adapterAdd(cszLibraryName, pAdapterInfo[AdapterIndex].AdapterLuid);
}
}
else if (Status == STATUS_INVALID_PARAMETER && pQueryArgs->Status == D3DDDI_QUERYREGISTRY_STATUS_FAIL)
@@ -143,8 +146,10 @@
ret = true;
out:
free(pAdapterInfo);
- FreeLibrary(h);
}
+
+ FreeLibrary(h);
+
#endif
#endif
return ret;
diff --git a/loader/windows/icd_windows_hkr.c b/loader/windows/icd_windows_hkr.c
index b006372..791dc79 100644
--- a/loader/windows/icd_windows_hkr.c
+++ b/loader/windows/icd_windows_hkr.c
@@ -137,7 +137,7 @@
KHR_ICD_TRACE(" Path: %s\n", cszOclPath);
- AdapterAdd(cszOclPath, ZeroLuid);
+ adapterAdd(cszOclPath, ZeroLuid);
bRet = true;
}
diff --git a/loader/windows/icd_windows_hkr.h b/loader/windows/icd_windows_hkr.h
index 46b75a5..fcaa93a 100644
--- a/loader/windows/icd_windows_hkr.h
+++ b/loader/windows/icd_windows_hkr.h
@@ -21,9 +21,9 @@
bool khrIcdOsVendorsEnumerateHKR(void);
-extern LUID ZeroLuid;
+extern const LUID ZeroLuid;
-void AdapterAdd(const char* szName, LUID luid);
+void adapterAdd(const char* szName, LUID luid);
// Do not free the memory returned by this function.
const char* GetOpenCLRegKeyName(void);