Fix variable naming, array size and cleanup paths.
authorNikhil Joshi <nikhilj@nvidia.com>
Thu, 22 Aug 2019 08:35:36 +0000 (14:05 +0530)
committerNikhil Joshi <nikhilj@nvidia.com>
Thu, 22 Aug 2019 13:38:35 +0000 (19:08 +0530)
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.

loader/windows/icd_windows.c
loader/windows/icd_windows_dxgk.c
loader/windows/icd_windows_hkr.c
loader/windows/icd_windows_hkr.h

index 22b296b511fb72babe438acabaaa048de44ec2e8..cf6ff739f7644bf20d2dc67ac4818b3e3fd086d7 100644 (file)
@@ -35,43 +35,43 @@ typedef struct WinAdapter
     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 @@ BOOL CALLBACK khrIcdOsVendorsEnumerate(PINIT_ONCE InitOnce, PVOID Parameter, PVO
                 continue;
             }
             // add the library
-            AdapterAdd(cszLibraryName, ZeroLuid);
+            adapterAdd(cszLibraryName, ZeroLuid);
         }
     }
 
index 8530c8e30002762a78a5d98e2ed92547af472679..542f2ea07df233f947b5b6f06cae9e0d3067384f 100644 (file)
@@ -39,7 +39,10 @@ bool khrIcdOsVendorsEnumerateDXGK(void)
 #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 @@ bool khrIcdOsVendorsEnumerateDXGK(void)
             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 @@ bool khrIcdOsVendorsEnumerateDXGK(void)
             }
             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 @@ bool khrIcdOsVendorsEnumerateDXGK(void)
                 {
                     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 @@ bool khrIcdOsVendorsEnumerateDXGK(void)
         ret = true;
 out:
       free(pAdapterInfo);
-      FreeLibrary(h);
     }
+
+    FreeLibrary(h);
+
 #endif
 #endif
     return ret;
index b006372306649f0f0017f4ac62a732049fcbe404..791dc79c171f6a730b2c39a52ebfb89e9c87a236 100644 (file)
@@ -137,7 +137,7 @@ static bool ReadOpenCLKey(DEVINST dnDevNode)
 
         KHR_ICD_TRACE("    Path: %s\n", cszOclPath);
 
-        AdapterAdd(cszOclPath, ZeroLuid);
+        adapterAdd(cszOclPath, ZeroLuid);
 
         bRet = true;
     }
index 46b75a59ff0f0228797c48a3333a3ec2318573a4..fcaa93a7a06a134945f88a56e513690f8173a90c 100644 (file)
@@ -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);