Lines Matching +full:venus +full:- +full:protocol
3 * SPDX-License-Identifier: MIT
14 #include "venus-protocol/vn_protocol_driver_info.h"
15 #include "venus-protocol/vn_protocol_driver_instance.h"
16 #include "venus-protocol/vn_protocol_driver_transport.h"
24 * Instance extensions add instance-level or physical-device-level
57 /* clang-format off */
70 /* clang-format on */
77 VkResult result = vn_call_vkEnumerateInstanceVersion(instance->ring.ring, 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()
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()
118 vn_watchdog_fini(&instance->ring.watchdog); in vn_instance_fini_ring()
121 &instance->ring.tls_rings, vk_head) in vn_instance_fini_ring()
124 vn_ring_destroy(instance->ring.ring); in vn_instance_fini_ring()
130 /* 32-bit seqno for renderer roundtrips */ in vn_instance_init_ring()
142 instance->ring.ring = vn_ring_create(instance, &layout, direct_order, in vn_instance_init_ring()
144 if (!instance->ring.ring) in vn_instance_init_ring()
147 list_inithead(&instance->ring.tls_rings); in vn_instance_init_ring()
149 vn_watchdog_init(&instance->ring.watchdog); in vn_instance_init_ring()
157 const VkAllocationCallbacks *alloc = &instance->base.base.alloc; in vn_instance_init_renderer()
159 VkResult result = vn_renderer_create(instance, alloc, &instance->renderer); in vn_instance_init_renderer()
163 struct vn_renderer_info *renderer_info = &instance->renderer->info; in vn_instance_init_renderer()
165 if (renderer_info->wire_format_version != version) { in vn_instance_init_renderer()
168 renderer_info->wire_format_version, version); in vn_instance_init_renderer()
174 if (renderer_info->vk_xml_version > version) in vn_instance_init_renderer()
175 renderer_info->vk_xml_version = version; in vn_instance_init_renderer()
176 if (renderer_info->vk_xml_version < VN_MIN_RENDERER_VERSION) { in vn_instance_init_renderer()
179 VK_VERSION_MAJOR(renderer_info->vk_xml_version), in vn_instance_init_renderer()
180 VK_VERSION_MINOR(renderer_info->vk_xml_version), in vn_instance_init_renderer()
181 VK_VERSION_PATCH(renderer_info->vk_xml_version), in vn_instance_init_renderer()
191 if (renderer_info->vk_ext_command_serialization_spec_version > in vn_instance_init_renderer()
193 renderer_info->vk_ext_command_serialization_spec_version = spec_version; in vn_instance_init_renderer()
197 if (renderer_info->vk_mesa_venus_protocol_spec_version > spec_version) in vn_instance_init_renderer()
198 renderer_info->vk_mesa_venus_protocol_spec_version = spec_version; in vn_instance_init_renderer()
203 renderer_info->wire_format_version); in vn_instance_init_renderer()
205 VK_VERSION_MAJOR(renderer_info->vk_xml_version), in vn_instance_init_renderer()
206 VK_VERSION_MINOR(renderer_info->vk_xml_version), in vn_instance_init_renderer()
207 VK_VERSION_PATCH(renderer_info->vk_xml_version)); in vn_instance_init_renderer()
209 renderer_info->vk_ext_command_serialization_spec_version); in vn_instance_init_renderer()
211 renderer_info->vk_mesa_venus_protocol_spec_version); in vn_instance_init_renderer()
271 result = vn_instance_base_init(&instance->base, in vn_CreateInstance()
281 instance->ring_idx_used_mask = 0x1; in vn_CreateInstance()
283 mtx_init(&instance->physical_device.mutex, mtx_plain); in vn_CreateInstance()
284 mtx_init(&instance->ring_idx_mutex, mtx_plain); in vn_CreateInstance()
287 instance->base.base.app_info.api_version)) { in vn_CreateInstance()
292 if (pCreateInfo->enabledLayerCount) { in vn_CreateInstance()
307 vn_renderer_shmem_pool_init(instance->renderer, &instance->cs_shmem_pool, in vn_CreateInstance()
310 vn_renderer_shmem_pool_init(instance->renderer, in vn_CreateInstance()
311 &instance->reply_shmem_pool, 1u << 20); in vn_CreateInstance()
327 if (instance->base.base.app_info.api_version < in vn_CreateInstance()
328 instance->renderer_api_version) { in vn_CreateInstance()
329 if (pCreateInfo->pApplicationInfo) { in vn_CreateInstance()
330 local_app_info = *pCreateInfo->pApplicationInfo; in vn_CreateInstance()
331 local_app_info.apiVersion = instance->renderer_api_version; in vn_CreateInstance()
335 .apiVersion = instance->renderer_api_version, in vn_CreateInstance()
341 result = vn_call_vkCreateInstance(instance->ring.ring, pCreateInfo, NULL, in vn_CreateInstance()
346 driParseOptionInfo(&instance->available_dri_options, vn_dri_options, in vn_CreateInstance()
348 driParseConfigFiles(&instance->dri_options, in vn_CreateInstance()
349 &instance->available_dri_options, 0, "venus", NULL, in vn_CreateInstance()
350 NULL, instance->base.base.app_info.app_name, in vn_CreateInstance()
351 instance->base.base.app_info.app_version, in vn_CreateInstance()
352 instance->base.base.app_info.engine_name, in vn_CreateInstance()
353 instance->base.base.app_info.engine_version); in vn_CreateInstance()
355 instance->renderer->info.has_implicit_fencing = in vn_CreateInstance()
356 driQueryOptionb(&instance->dri_options, "venus_implicit_fencing"); in vn_CreateInstance()
357 instance->enable_wsi_multi_plane_modifiers = driQueryOptionb( in vn_CreateInstance()
358 &instance->dri_options, "venus_wsi_multi_plane_modifiers"); in vn_CreateInstance()
361 vn_log(instance, "supports multi-plane wsi format modifiers: %s", in vn_CreateInstance()
362 instance->enable_wsi_multi_plane_modifiers ? "yes" : "no"); in vn_CreateInstance()
365 const char *engine_name = instance->base.base.app_info.engine_name; in vn_CreateInstance()
367 instance->engine_is_zink = strcmp(engine_name, "mesa zink") == 0; in vn_CreateInstance()
378 vn_renderer_shmem_pool_fini(instance->renderer, in vn_CreateInstance()
379 &instance->reply_shmem_pool); in vn_CreateInstance()
380 vn_renderer_shmem_pool_fini(instance->renderer, &instance->cs_shmem_pool); in vn_CreateInstance()
381 vn_renderer_destroy(instance->renderer, alloc); in vn_CreateInstance()
384 mtx_destroy(&instance->physical_device.mutex); in vn_CreateInstance()
385 mtx_destroy(&instance->ring_idx_mutex); in vn_CreateInstance()
387 vn_instance_base_fini(&instance->base); in vn_CreateInstance()
400 pAllocator ? pAllocator : &instance->base.base.alloc; in vn_DestroyInstance()
405 if (instance->physical_device.initialized) { in vn_DestroyInstance()
406 for (uint32_t i = 0; i < instance->physical_device.device_count; i++) in vn_DestroyInstance()
407 vn_physical_device_fini(&instance->physical_device.devices[i]); in vn_DestroyInstance()
408 vk_free(alloc, instance->physical_device.devices); in vn_DestroyInstance()
409 vk_free(alloc, instance->physical_device.groups); in vn_DestroyInstance()
411 mtx_destroy(&instance->physical_device.mutex); in vn_DestroyInstance()
412 mtx_destroy(&instance->ring_idx_mutex); in vn_DestroyInstance()
414 if (instance->renderer) { in vn_DestroyInstance()
415 vn_call_vkDestroyInstance(instance->ring.ring, _instance, NULL); in vn_DestroyInstance()
419 vn_renderer_shmem_pool_fini(instance->renderer, in vn_DestroyInstance()
420 &instance->reply_shmem_pool); in vn_DestroyInstance()
422 vn_renderer_shmem_pool_fini(instance->renderer, &instance->cs_shmem_pool); in vn_DestroyInstance()
424 vn_renderer_destroy(instance->renderer, alloc); in vn_DestroyInstance()
427 driDestroyOptionCache(&instance->dri_options); in vn_DestroyInstance()
428 driDestroyOptionInfo(&instance->available_dri_options); in vn_DestroyInstance()
430 vn_instance_base_fini(&instance->base); in vn_DestroyInstance()
438 return vk_instance_get_proc_addr(&instance->base.base, in vn_GetInstanceProcAddr()