• Home
  • Raw
  • Download

Lines Matching full:instance

50 vk_instance_init(struct vk_instance *instance,  in vk_instance_init()  argument
56 memset(instance, 0, sizeof(*instance)); in vk_instance_init()
57 vk_object_base_instance_init(instance, &instance->base, VK_OBJECT_TYPE_INSTANCE); in vk_instance_init()
58 instance->alloc = *alloc; in vk_instance_init()
67 list_inithead(&instance->debug_utils.instance_callbacks); in vk_instance_init()
78 return vk_error(instance, VK_ERROR_OUT_OF_HOST_MEMORY); in vk_instance_init()
80 vk_object_base_instance_init(instance, &messenger->base, in vk_instance_init()
90 &instance->debug_utils.instance_callbacks); in vk_instance_init()
98 instance->app_info = (struct vk_app_info) { .api_version = 0 }; in vk_instance_init()
102 instance->app_info.app_name = in vk_instance_init()
103 vk_strdup(&instance->alloc, app->pApplicationName, in vk_instance_init()
105 instance->app_info.app_version = app->applicationVersion; in vk_instance_init()
107 instance->app_info.engine_name = in vk_instance_init()
108 vk_strdup(&instance->alloc, app->pEngineName, in vk_instance_init()
110 instance->app_info.engine_version = app->engineVersion; in vk_instance_init()
112 instance->app_info.api_version = app->apiVersion; in vk_instance_init()
123 if (instance->app_info.api_version == 0) in vk_instance_init()
124 instance->app_info.api_version = VK_API_VERSION_1_0; in vk_instance_init()
133 assert(instance->app_info.api_version >= VK_API_VERSION_1_0); in vk_instance_init()
143 !VERSION_IS_1_0(instance->app_info.api_version)) in vk_instance_init()
146 instance->supported_extensions = supported_extensions; in vk_instance_init()
157 return vk_errorf(instance, VK_ERROR_EXTENSION_NOT_PRESENT, in vk_instance_init()
162 return vk_errorf(instance, VK_ERROR_EXTENSION_NOT_PRESENT, in vk_instance_init()
168 return vk_errorf(instance, VK_ERROR_EXTENSION_NOT_PRESENT, in vk_instance_init()
173 instance->enabled_extensions.extensions[idx] = true; in vk_instance_init()
176 instance->dispatch_table = *dispatch_table; in vk_instance_init()
180 &instance->dispatch_table, &vk_common_instance_entrypoints, false); in vk_instance_init()
182 if (mtx_init(&instance->debug_report.callbacks_mutex, mtx_plain) != 0) in vk_instance_init()
183 return vk_error(instance, VK_ERROR_INITIALIZATION_FAILED); in vk_instance_init()
185 list_inithead(&instance->debug_report.callbacks); in vk_instance_init()
187 if (mtx_init(&instance->debug_utils.callbacks_mutex, mtx_plain) != 0) { in vk_instance_init()
188 mtx_destroy(&instance->debug_report.callbacks_mutex); in vk_instance_init()
189 return vk_error(instance, VK_ERROR_INITIALIZATION_FAILED); in vk_instance_init()
192 list_inithead(&instance->debug_utils.callbacks); in vk_instance_init()
194 list_inithead(&instance->physical_devices.list); in vk_instance_init()
196 if (mtx_init(&instance->physical_devices.mutex, mtx_plain) != 0) { in vk_instance_init()
197 mtx_destroy(&instance->debug_report.callbacks_mutex); in vk_instance_init()
198 mtx_destroy(&instance->debug_utils.callbacks_mutex); in vk_instance_init()
199 return vk_error(instance, VK_ERROR_INITIALIZATION_FAILED); in vk_instance_init()
202 instance->trace_mode = parse_debug_string(getenv("MESA_VK_TRACE"), trace_options); in vk_instance_init()
203 instance->trace_per_submit = debug_get_bool_option("MESA_VK_TRACE_PER_SUBMIT", false); in vk_instance_init()
204 if (!instance->trace_per_submit) { in vk_instance_init()
205 instance->trace_frame = (uint32_t)debug_get_num_option("MESA_VK_TRACE_FRAME", 0xFFFFFFFF); in vk_instance_init()
206 instance->trace_trigger_file = secure_getenv("MESA_VK_TRACE_TRIGGER"); in vk_instance_init()
217 destroy_physical_devices(struct vk_instance *instance) in destroy_physical_devices() argument
220 &instance->physical_devices.list, link) { in destroy_physical_devices()
222 instance->physical_devices.destroy(pdevice); in destroy_physical_devices()
227 vk_instance_finish(struct vk_instance *instance) in vk_instance_finish() argument
229 destroy_physical_devices(instance); in vk_instance_finish()
235 if (unlikely(!list_is_empty(&instance->debug_utils.callbacks))) { in vk_instance_finish()
237 &instance->debug_utils.callbacks, link) { in vk_instance_finish()
240 vk_free2(&instance->alloc, &messenger->alloc, messenger); in vk_instance_finish()
243 if (unlikely(!list_is_empty(&instance->debug_utils.instance_callbacks))) { in vk_instance_finish()
245 &instance->debug_utils.instance_callbacks, in vk_instance_finish()
249 vk_free2(&instance->alloc, &messenger->alloc, messenger); in vk_instance_finish()
252 mtx_destroy(&instance->debug_report.callbacks_mutex); in vk_instance_finish()
253 mtx_destroy(&instance->debug_utils.callbacks_mutex); in vk_instance_finish()
254 mtx_destroy(&instance->physical_devices.mutex); in vk_instance_finish()
255 vk_free(&instance->alloc, (char *)instance->app_info.app_name); in vk_instance_finish()
256 vk_free(&instance->alloc, (char *)instance->app_info.engine_name); in vk_instance_finish()
257 vk_object_base_finish(&instance->base); in vk_instance_finish()
286 vk_instance_get_proc_addr(const struct vk_instance *instance, in vk_instance_get_proc_addr() argument
308 /* GetInstanceProcAddr() can also be called with a NULL instance. in vk_instance_get_proc_addr()
328 if (instance == NULL) in vk_instance_get_proc_addr()
331 func = vk_instance_dispatch_table_get_if_supported(&instance->dispatch_table, in vk_instance_get_proc_addr()
333 instance->app_info.api_version, in vk_instance_get_proc_addr()
334 &instance->enabled_extensions); in vk_instance_get_proc_addr()
340 instance->app_info.api_version, in vk_instance_get_proc_addr()
341 &instance->enabled_extensions); in vk_instance_get_proc_addr()
347 instance->app_info.api_version, in vk_instance_get_proc_addr()
348 &instance->enabled_extensions, in vk_instance_get_proc_addr()
357 vk_instance_get_proc_addr_unchecked(const struct vk_instance *instance, in vk_instance_get_proc_addr_unchecked() argument
362 if (instance == NULL || name == NULL) in vk_instance_get_proc_addr_unchecked()
365 func = vk_instance_dispatch_table_get(&instance->dispatch_table, name); in vk_instance_get_proc_addr_unchecked()
382 vk_instance_get_physical_device_proc_addr(const struct vk_instance *instance, in vk_instance_get_physical_device_proc_addr() argument
385 if (instance == NULL || name == NULL) in vk_instance_get_physical_device_proc_addr()
390 instance->app_info.api_version, in vk_instance_get_physical_device_proc_addr()
391 &instance->enabled_extensions); in vk_instance_get_physical_device_proc_addr()
395 vk_instance_add_driver_trace_modes(struct vk_instance *instance, in vk_instance_add_driver_trace_modes() argument
398 instance->trace_mode |= parse_debug_string(getenv("MESA_VK_TRACE"), modes); in vk_instance_add_driver_trace_modes()
402 enumerate_drm_physical_devices_locked(struct vk_instance *instance) in enumerate_drm_physical_devices_locked() argument
414 result = instance->physical_devices.try_create_for_drm(instance, devices[i], &pdevice); in enumerate_drm_physical_devices_locked()
426 list_addtail(&pdevice->link, &instance->physical_devices.list); in enumerate_drm_physical_devices_locked()
434 enumerate_physical_devices_locked(struct vk_instance *instance) in enumerate_physical_devices_locked() argument
436 if (instance->physical_devices.enumerate) { in enumerate_physical_devices_locked()
437 VkResult result = instance->physical_devices.enumerate(instance); in enumerate_physical_devices_locked()
444 if (instance->physical_devices.try_create_for_drm) { in enumerate_physical_devices_locked()
445 result = enumerate_drm_physical_devices_locked(instance); in enumerate_physical_devices_locked()
447 destroy_physical_devices(instance); in enumerate_physical_devices_locked()
456 enumerate_physical_devices(struct vk_instance *instance) in enumerate_physical_devices() argument
460 mtx_lock(&instance->physical_devices.mutex); in enumerate_physical_devices()
461 if (!instance->physical_devices.enumerated) { in enumerate_physical_devices()
462 result = enumerate_physical_devices_locked(instance); in enumerate_physical_devices()
464 instance->physical_devices.enumerated = true; in enumerate_physical_devices()
466 mtx_unlock(&instance->physical_devices.mutex); in enumerate_physical_devices()
475 VK_FROM_HANDLE(vk_instance, instance, _instance); in vk_common_EnumeratePhysicalDevices()
478 VkResult result = enumerate_physical_devices(instance); in vk_common_EnumeratePhysicalDevices()
483 &instance->physical_devices.list, link) { in vk_common_EnumeratePhysicalDevices()
504 VK_FROM_HANDLE(vk_instance, instance, _instance); in vk_icdEnumerateAdapterPhysicalDevices()
507 VkResult result = enumerate_physical_devices(instance); in vk_icdEnumerateAdapterPhysicalDevices()
512 &instance->physical_devices.list, link) { in vk_icdEnumerateAdapterPhysicalDevices()
529 VK_FROM_HANDLE(vk_instance, instance, _instance); in vk_common_EnumeratePhysicalDeviceGroups()
533 VkResult result = enumerate_physical_devices(instance); in vk_common_EnumeratePhysicalDeviceGroups()
538 &instance->physical_devices.list, link) { in vk_common_EnumeratePhysicalDeviceGroups()
567 VK_FROM_HANDLE(vk_instance, instance, _instance); in vk_icdGetPhysicalDeviceProcAddr()
568 return vk_instance_get_physical_device_proc_addr(instance, pName); in vk_icdGetPhysicalDeviceProcAddr()