loader: Move device dispatch table to CreateDevice from EnumeratePhysDev

For now just have a static array for these will fix this in later commit

Conflicts:
	loader/loader.c
diff --git a/loader/loader.c b/loader/loader.c
index 315b858..56df352 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -515,7 +515,6 @@
 {
     ptr_inst->total_icd_count--;
     free(icd->gpus);
-    free(icd->loader_dispatch);
     free(icd);
 }
 
@@ -1504,7 +1503,6 @@
 
     icd = ptr_instance->icds;
     while (icd) {
-        PFN_vkGetDeviceProcAddr get_proc_addr = icd->GetDeviceProcAddr;
 
         n = icd->gpu_count;
         icd->gpus = (VkPhysicalDevice *) malloc(n * sizeof(VkPhysicalDevice));
@@ -1518,13 +1516,8 @@
                                         icd->gpus);
         if ((res == VK_SUCCESS) && (n == icd->gpu_count)) {
 
-            icd->loader_dispatch = (VkLayerDispatchTable *) malloc(n *
-                                    sizeof(VkLayerDispatchTable));
             for (unsigned int i = 0; i < n; i++) {
 
-                loader_init_device_dispatch_table(icd->loader_dispatch + i,
-                                           get_proc_addr, icd->gpus[i], icd->gpus[i]);
-
                 loader_init_dispatch(icd->gpus[i], ptr_instance->disp);
 
                 if (!loader_init_ext_list(&icd->device_extension_cache[i])) {
@@ -1637,6 +1630,9 @@
         if (res != VK_SUCCESS) {
             return res;
         }
+        PFN_vkGetDeviceProcAddr get_proc_addr = icd->GetDeviceProcAddr;
+        loader_init_device_dispatch_table(icd->loader_dispatch + gpu_index,
+                                          get_proc_addr, icd->gpus[gpu_index], icd->gpus[gpu_index]);
 
         VkLayerDispatchTable *dev_disp = icd->loader_dispatch + gpu_index;
         loader_init_dispatch(*pDevice, dev_disp);