diff options
| author | Jon Ashburn <jon@lunarg.com> | 2016-03-24 15:49:57 -0600 |
|---|---|---|
| committer | Jon Ashburn <jon@lunarg.com> | 2016-03-24 16:12:07 -0600 |
| commit | f010bec856e17cfb59851235cb951b291ec73f2e (patch) | |
| tree | 0aab574b92d17ea72c93f7a0c4fb7758eafd013d /loader/loader.h | |
| parent | e44bdadaa2fb39bd85e8c8835a6a2929ec8d3e75 (diff) | |
| download | usermoji-f010bec856e17cfb59851235cb951b291ec73f2e.tar.xz | |
loader: ghlvl 116 Fix CreateDevice to use the proper ICDs PhysDev
This is needed for querying extensoins from the ICD.
Change-Id: I5655d33d15bf0ea6de506f81821a30dd81ca3d5a
Diffstat (limited to 'loader/loader.h')
| -rw-r--r-- | loader/loader.h | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/loader/loader.h b/loader/loader.h index b0b36632..cae78cc9 100644 --- a/loader/loader.h +++ b/loader/loader.h @@ -199,7 +199,6 @@ struct loader_icd { // pointers to find other structs const struct loader_scanned_icds *this_icd_lib; const struct loader_instance *this_instance; - VkPhysicalDevice *phys_devs; // physicalDevice object from icd struct loader_device *logical_device_list; VkInstance instance; // instance object from the icd PFN_vkGetDeviceProcAddr GetDeviceProcAddr; @@ -276,7 +275,7 @@ struct loader_instance { uint32_t total_gpu_count; // count of the next two arrays struct loader_physical_device *phys_devs_term; - struct loader_physical_device *phys_devs; // tramp wrapped physDev obj list + struct loader_physical_device_tramp *phys_devs; // tramp wrapped physDev obj list uint32_t total_icd_count; struct loader_icd *icds; struct loader_instance *next; @@ -335,10 +334,18 @@ struct loader_instance { /* per enumerated PhysicalDevice structure, used to wrap in trampoline code and also same structure used to wrap in terminator code */ +struct loader_physical_device_tramp { + VkLayerInstanceDispatchTable *disp; // must be first entry in structure + struct loader_icd *this_icd; + VkPhysicalDevice phys_dev; // object from layers/loader terminator + VkPhysicalDevice icd_phys_dev; // object from icd +}; + +/* per enumerated PhysicalDevice structure, used to wrap in terminator code */ struct loader_physical_device { VkLayerInstanceDispatchTable *disp; // must be first entry in structure struct loader_icd *this_icd; - VkPhysicalDevice phys_dev; // object from ICD/layers/loader terminator + VkPhysicalDevice phys_dev; // object from ICD }; struct loader_struct { @@ -527,14 +534,14 @@ loader_enable_device_layers(const struct loader_instance *inst, const VkDeviceCreateInfo *pCreateInfo, const struct loader_layer_list *device_layers); -VkResult loader_create_device_chain(const struct loader_physical_device *pd, +VkResult loader_create_device_chain(const struct loader_physical_device_tramp *pd, const VkDeviceCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, const struct loader_instance *inst, struct loader_icd *icd, struct loader_device *dev); VkResult loader_validate_device_extensions( - struct loader_physical_device *phys_dev, + struct loader_physical_device_tramp *phys_dev, const struct loader_layer_list *activated_device_layers, const struct loader_extension_list *icd_exts, const VkDeviceCreateInfo *pCreateInfo); |
