• Home
  • Raw
  • Download

Lines Matching full:instance

24  * Instance extensions add instance-level or physical-device-level
74 vn_instance_init_renderer_versions(struct vn_instance *instance) in vn_instance_init_renderer_versions() argument
77 VkResult result = vn_call_vkEnumerateInstanceVersion(instance->ring.ring, in vn_instance_init_renderer_versions()
81 vn_log(instance, "failed to enumerate renderer instance version"); in vn_instance_init_renderer_versions()
87 vn_log(instance, "unsupported renderer instance version %d.%d", in vn_instance_init_renderer_versions()
95 vn_log(instance, "renderer instance version %d.%d.%d", in vn_instance_init_renderer_versions()
102 instance->renderer_api_version = in vn_instance_init_renderer_versions()
103 MAX2(instance->base.base.app_info.api_version, VN_MIN_RENDERER_VERSION); in vn_instance_init_renderer_versions()
105 /* instance version for internal use is capped */ in vn_instance_init_renderer_versions()
106 instance_version = MIN3(instance_version, instance->renderer_api_version, in vn_instance_init_renderer_versions()
107 instance->renderer->info.vk_xml_version); in vn_instance_init_renderer_versions()
110 instance->renderer_version = instance_version; in vn_instance_init_renderer_versions()
116 vn_instance_fini_ring(struct vn_instance *instance) in vn_instance_fini_ring() argument
118 mtx_destroy(&instance->ring.roundtrip_mutex); in vn_instance_fini_ring()
120 vn_watchdog_fini(&instance->ring.watchdog); in vn_instance_fini_ring()
123 &instance->ring.tls_rings, vk_head) in vn_instance_fini_ring()
126 vn_ring_destroy(instance->ring.ring); in vn_instance_fini_ring()
130 vn_instance_init_ring(struct vn_instance *instance) in vn_instance_init_ring() argument
135 /* default instance ring size */ in vn_instance_init_ring()
144 instance->ring.ring = vn_ring_create(instance, &layout, direct_order); in vn_instance_init_ring()
145 if (!instance->ring.ring) in vn_instance_init_ring()
148 list_inithead(&instance->ring.tls_rings); in vn_instance_init_ring()
150 vn_watchdog_init(&instance->ring.watchdog); in vn_instance_init_ring()
152 mtx_init(&instance->ring.roundtrip_mutex, mtx_plain); in vn_instance_init_ring()
153 instance->ring.roundtrip_next = 1; in vn_instance_init_ring()
159 vn_instance_init_renderer(struct vn_instance *instance) in vn_instance_init_renderer() argument
161 const VkAllocationCallbacks *alloc = &instance->base.base.alloc; in vn_instance_init_renderer()
163 VkResult result = vn_renderer_create(instance, alloc, &instance->renderer); in vn_instance_init_renderer()
167 struct vn_renderer_info *renderer_info = &instance->renderer->info; in vn_instance_init_renderer()
171 vn_log(instance, "wire format version %d != %d", in vn_instance_init_renderer()
182 vn_log(instance, "vk xml version %d.%d.%d < %d.%d.%d", in vn_instance_init_renderer()
205 vn_log(instance, "connected to renderer"); in vn_instance_init_renderer()
206 vn_log(instance, "wire format version %d", in vn_instance_init_renderer()
208 vn_log(instance, "vk xml version %d.%d.%d", in vn_instance_init_renderer()
212 vn_log(instance, "VK_EXT_command_serialization spec version %d", in vn_instance_init_renderer()
214 vn_log(instance, "VK_MESA_venus_protocol spec version %d", in vn_instance_init_renderer()
216 vn_log(instance, "supports blob id 0: %d", in vn_instance_init_renderer()
218 vn_log(instance, "allow_vk_wait_syncs: %d", in vn_instance_init_renderer()
220 vn_log(instance, "supports_multiple_timelines: %d", in vn_instance_init_renderer()
228 vn_instance_submit_roundtrip(struct vn_instance *instance, in vn_instance_submit_roundtrip() argument
231 const uint64_t ring_id = vn_ring_get_id(instance->ring.ring); in vn_instance_submit_roundtrip()
236 mtx_lock(&instance->ring.roundtrip_mutex); in vn_instance_submit_roundtrip()
237 const uint64_t seqno = instance->ring.roundtrip_next++; in vn_instance_submit_roundtrip()
240 instance->renderer, local_data, vn_cs_encoder_get_len(&local_enc)); in vn_instance_submit_roundtrip()
241 mtx_unlock(&instance->ring.roundtrip_mutex); in vn_instance_submit_roundtrip()
248 vn_instance_wait_roundtrip(struct vn_instance *instance, in vn_instance_wait_roundtrip() argument
251 vn_async_vkWaitVirtqueueSeqnoMESA(instance->ring.ring, roundtrip_seqno); in vn_instance_wait_roundtrip()
254 /* instance commands */
293 struct vn_instance *instance; in vn_CreateInstance() local
298 instance = vk_zalloc(alloc, sizeof(*instance), VN_DEFAULT_ALIGN, in vn_CreateInstance()
300 if (!instance) in vn_CreateInstance()
308 result = vn_instance_base_init(&instance->base, in vn_CreateInstance()
312 vk_free(alloc, instance); in vn_CreateInstance()
317 instance->ring_idx_used_mask = 0x1; in vn_CreateInstance()
319 mtx_init(&instance->physical_device.mutex, mtx_plain); in vn_CreateInstance()
320 mtx_init(&instance->ring_idx_mutex, mtx_plain); in vn_CreateInstance()
323 instance->base.base.app_info.api_version)) { in vn_CreateInstance()
333 result = vn_instance_init_renderer(instance); in vn_CreateInstance()
337 vn_cs_renderer_protocol_info_init(instance); in vn_CreateInstance()
339 vn_renderer_shmem_pool_init(instance->renderer, &instance->cs_shmem_pool, in vn_CreateInstance()
342 vn_renderer_shmem_pool_init(instance->renderer, in vn_CreateInstance()
343 &instance->reply_shmem_pool, 1u << 20); in vn_CreateInstance()
345 result = vn_instance_init_ring(instance); in vn_CreateInstance()
349 result = vn_instance_init_renderer_versions(instance); in vn_CreateInstance()
359 if (instance->base.base.app_info.api_version < in vn_CreateInstance()
360 instance->renderer_api_version) { in vn_CreateInstance()
363 local_app_info.apiVersion = instance->renderer_api_version; in vn_CreateInstance()
367 .apiVersion = instance->renderer_api_version, in vn_CreateInstance()
373 VkInstance instance_handle = vn_instance_to_handle(instance); in vn_CreateInstance()
374 result = vn_call_vkCreateInstance(instance->ring.ring, pCreateInfo, NULL, in vn_CreateInstance()
379 driParseOptionInfo(&instance->available_dri_options, vn_dri_options, in vn_CreateInstance()
381 driParseConfigFiles(&instance->dri_options, in vn_CreateInstance()
382 &instance->available_dri_options, 0, "venus", NULL, in vn_CreateInstance()
383 NULL, instance->base.base.app_info.app_name, in vn_CreateInstance()
384 instance->base.base.app_info.app_version, in vn_CreateInstance()
385 instance->base.base.app_info.engine_name, in vn_CreateInstance()
386 instance->base.base.app_info.engine_version); in vn_CreateInstance()
388 instance->renderer->info.has_implicit_fencing = in vn_CreateInstance()
389 driQueryOptionb(&instance->dri_options, "venus_implicit_fencing"); in vn_CreateInstance()
390 instance->enable_wsi_multi_plane_modifiers = driQueryOptionb( in vn_CreateInstance()
391 &instance->dri_options, "venus_wsi_multi_plane_modifiers"); in vn_CreateInstance()
394 vn_log(instance, "supports multi-plane wsi format modifiers: %s", in vn_CreateInstance()
395 instance->enable_wsi_multi_plane_modifiers ? "yes" : "no"); in vn_CreateInstance()
398 const char *engine_name = instance->base.base.app_info.engine_name; in vn_CreateInstance()
400 instance->engine_is_zink = strcmp(engine_name, "mesa zink") == 0; in vn_CreateInstance()
408 vn_instance_fini_ring(instance); in vn_CreateInstance()
411 vn_renderer_shmem_pool_fini(instance->renderer, in vn_CreateInstance()
412 &instance->reply_shmem_pool); in vn_CreateInstance()
413 vn_renderer_shmem_pool_fini(instance->renderer, &instance->cs_shmem_pool); in vn_CreateInstance()
414 vn_renderer_destroy(instance->renderer, alloc); in vn_CreateInstance()
417 mtx_destroy(&instance->physical_device.mutex); in vn_CreateInstance()
418 mtx_destroy(&instance->ring_idx_mutex); in vn_CreateInstance()
420 vn_instance_base_fini(&instance->base); in vn_CreateInstance()
421 vk_free(alloc, instance); in vn_CreateInstance()
431 struct vn_instance *instance = vn_instance_from_handle(_instance); in vn_DestroyInstance() local
433 pAllocator ? pAllocator : &instance->base.base.alloc; in vn_DestroyInstance()
435 if (!instance) in vn_DestroyInstance()
438 if (instance->physical_device.initialized) { in vn_DestroyInstance()
439 for (uint32_t i = 0; i < instance->physical_device.device_count; i++) in vn_DestroyInstance()
440 vn_physical_device_fini(&instance->physical_device.devices[i]); in vn_DestroyInstance()
441 vk_free(alloc, instance->physical_device.devices); in vn_DestroyInstance()
442 vk_free(alloc, instance->physical_device.groups); in vn_DestroyInstance()
444 mtx_destroy(&instance->physical_device.mutex); in vn_DestroyInstance()
445 mtx_destroy(&instance->ring_idx_mutex); in vn_DestroyInstance()
447 vn_call_vkDestroyInstance(instance->ring.ring, _instance, NULL); in vn_DestroyInstance()
449 vn_instance_fini_ring(instance); in vn_DestroyInstance()
451 vn_renderer_shmem_pool_fini(instance->renderer, in vn_DestroyInstance()
452 &instance->reply_shmem_pool); in vn_DestroyInstance()
454 vn_renderer_shmem_pool_fini(instance->renderer, &instance->cs_shmem_pool); in vn_DestroyInstance()
456 vn_renderer_destroy(instance->renderer, alloc); in vn_DestroyInstance()
458 driDestroyOptionCache(&instance->dri_options); in vn_DestroyInstance()
459 driDestroyOptionInfo(&instance->available_dri_options); in vn_DestroyInstance()
461 vn_instance_base_fini(&instance->base); in vn_DestroyInstance()
462 vk_free(alloc, instance); in vn_DestroyInstance()
468 struct vn_instance *instance = vn_instance_from_handle(_instance); in vn_GetInstanceProcAddr() local
469 return vk_instance_get_proc_addr(&instance->base.base, in vn_GetInstanceProcAddr()