• 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_frame = (uint32_t)debug_get_num_option("MESA_VK_TRACE_FRAME", 0xFFFFFFFF); in vk_instance_init()
204 instance->trace_trigger_file = secure_getenv("MESA_VK_TRACE_TRIGGER"); in vk_instance_init()
214 destroy_physical_devices(struct vk_instance *instance) in destroy_physical_devices() argument
217 &instance->physical_devices.list, link) { in destroy_physical_devices()
219 instance->physical_devices.destroy(pdevice); in destroy_physical_devices()
224 vk_instance_finish(struct vk_instance *instance) in vk_instance_finish() argument
226 destroy_physical_devices(instance); in vk_instance_finish()
232 if (unlikely(!list_is_empty(&instance->debug_utils.callbacks))) { in vk_instance_finish()
234 &instance->debug_utils.callbacks, link) { in vk_instance_finish()
237 vk_free2(&instance->alloc, &messenger->alloc, messenger); in vk_instance_finish()
240 if (unlikely(!list_is_empty(&instance->debug_utils.instance_callbacks))) { in vk_instance_finish()
242 &instance->debug_utils.instance_callbacks, in vk_instance_finish()
246 vk_free2(&instance->alloc, &messenger->alloc, messenger); in vk_instance_finish()
249 mtx_destroy(&instance->debug_report.callbacks_mutex); in vk_instance_finish()
250 mtx_destroy(&instance->debug_utils.callbacks_mutex); in vk_instance_finish()
251 mtx_destroy(&instance->physical_devices.mutex); in vk_instance_finish()
252 vk_free(&instance->alloc, (char *)instance->app_info.app_name); in vk_instance_finish()
253 vk_free(&instance->alloc, (char *)instance->app_info.engine_name); in vk_instance_finish()
254 vk_object_base_finish(&instance->base); in vk_instance_finish()
283 vk_instance_get_proc_addr(const struct vk_instance *instance, in vk_instance_get_proc_addr() argument
305 /* GetInstanceProcAddr() can also be called with a NULL instance. in vk_instance_get_proc_addr()
325 if (instance == NULL) in vk_instance_get_proc_addr()
328 func = vk_instance_dispatch_table_get_if_supported(&instance->dispatch_table, in vk_instance_get_proc_addr()
330 instance->app_info.api_version, in vk_instance_get_proc_addr()
331 &instance->enabled_extensions); in vk_instance_get_proc_addr()
337 instance->app_info.api_version, in vk_instance_get_proc_addr()
338 &instance->enabled_extensions); in vk_instance_get_proc_addr()
344 instance->app_info.api_version, in vk_instance_get_proc_addr()
345 &instance->enabled_extensions, in vk_instance_get_proc_addr()
354 vk_instance_get_proc_addr_unchecked(const struct vk_instance *instance, in vk_instance_get_proc_addr_unchecked() argument
359 if (instance == NULL || name == NULL) in vk_instance_get_proc_addr_unchecked()
362 func = vk_instance_dispatch_table_get(&instance->dispatch_table, name); in vk_instance_get_proc_addr_unchecked()
379 vk_instance_get_physical_device_proc_addr(const struct vk_instance *instance, in vk_instance_get_physical_device_proc_addr() argument
382 if (instance == NULL || name == NULL) in vk_instance_get_physical_device_proc_addr()
387 instance->app_info.api_version, in vk_instance_get_physical_device_proc_addr()
388 &instance->enabled_extensions); in vk_instance_get_physical_device_proc_addr()
392 vk_instance_add_driver_trace_modes(struct vk_instance *instance, in vk_instance_add_driver_trace_modes() argument
395 instance->trace_mode |= parse_debug_string(getenv("MESA_VK_TRACE"), modes); in vk_instance_add_driver_trace_modes()
399 enumerate_drm_physical_devices_locked(struct vk_instance *instance) in enumerate_drm_physical_devices_locked() argument
411 result = instance->physical_devices.try_create_for_drm(instance, devices[i], &pdevice); in enumerate_drm_physical_devices_locked()
423 list_addtail(&pdevice->link, &instance->physical_devices.list); in enumerate_drm_physical_devices_locked()
431 enumerate_physical_devices_locked(struct vk_instance *instance) in enumerate_physical_devices_locked() argument
433 if (instance->physical_devices.enumerate) { in enumerate_physical_devices_locked()
434 VkResult result = instance->physical_devices.enumerate(instance); in enumerate_physical_devices_locked()
441 if (instance->physical_devices.try_create_for_drm) { in enumerate_physical_devices_locked()
442 result = enumerate_drm_physical_devices_locked(instance); in enumerate_physical_devices_locked()
444 destroy_physical_devices(instance); in enumerate_physical_devices_locked()
453 enumerate_physical_devices(struct vk_instance *instance) in enumerate_physical_devices() argument
457 mtx_lock(&instance->physical_devices.mutex); in enumerate_physical_devices()
458 if (!instance->physical_devices.enumerated) { in enumerate_physical_devices()
459 result = enumerate_physical_devices_locked(instance); in enumerate_physical_devices()
461 instance->physical_devices.enumerated = true; in enumerate_physical_devices()
463 mtx_unlock(&instance->physical_devices.mutex); in enumerate_physical_devices()
472 VK_FROM_HANDLE(vk_instance, instance, _instance); in vk_common_EnumeratePhysicalDevices()
475 VkResult result = enumerate_physical_devices(instance); in vk_common_EnumeratePhysicalDevices()
480 &instance->physical_devices.list, link) { in vk_common_EnumeratePhysicalDevices()
501 VK_FROM_HANDLE(vk_instance, instance, _instance); in vk_icdEnumerateAdapterPhysicalDevices()
504 VkResult result = enumerate_physical_devices(instance); in vk_icdEnumerateAdapterPhysicalDevices()
509 &instance->physical_devices.list, link) { in vk_icdEnumerateAdapterPhysicalDevices()
526 VK_FROM_HANDLE(vk_instance, instance, _instance); in vk_common_EnumeratePhysicalDeviceGroups()
530 VkResult result = enumerate_physical_devices(instance); in vk_common_EnumeratePhysicalDeviceGroups()
535 &instance->physical_devices.list, link) { in vk_common_EnumeratePhysicalDeviceGroups()
564 VK_FROM_HANDLE(vk_instance, instance, _instance); in vk_icdGetPhysicalDeviceProcAddr()
565 return vk_instance_get_physical_device_proc_addr(instance, pName); in vk_icdGetPhysicalDeviceProcAddr()