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