Lines Matching +full:venus +full:- +full:protocol
3 * SPDX-License-Identifier: MIT
15 #include "venus-protocol/vn_protocol_driver_device.h"
27 VkDevice dev_handle = vk_device_to_handle(queue->base.base.base.device); in vn_queue_fini()
29 if (queue->wait_fence != VK_NULL_HANDLE) { in vn_queue_fini()
30 vn_DestroyFence(dev_handle, queue->wait_fence, NULL); in vn_queue_fini()
32 if (queue->sparse_semaphore != VK_NULL_HANDLE) { in vn_queue_fini()
33 vn_DestroySemaphore(dev_handle, queue->sparse_semaphore, NULL); in vn_queue_fini()
35 vn_cached_storage_fini(&queue->storage); in vn_queue_fini()
36 vn_queue_base_fini(&queue->base); in vn_queue_fini()
46 vn_queue_base_init(&queue->base, &dev->base, queue_info, queue_index); in vn_queue_init()
50 vn_cached_storage_init(&queue->storage, &dev->base.base.alloc); in vn_queue_init()
52 const int ring_idx = vn_instance_acquire_ring_idx(dev->instance); in vn_queue_init()
54 vn_log(dev->instance, "failed binding VkQueue to renderer timeline"); in vn_queue_init()
57 queue->ring_idx = (uint32_t)ring_idx; in vn_queue_init()
61 .ringIdx = queue->ring_idx, in vn_queue_init()
66 .flags = queue_info->flags, in vn_queue_init()
67 .queueFamilyIndex = queue_info->queueFamilyIndex, in vn_queue_init()
72 vn_async_vkGetDeviceQueue2(dev->primary_ring, vn_device_to_handle(dev), in vn_queue_init()
82 const VkAllocationCallbacks *alloc = &dev->base.base.alloc; in vn_device_init_queues()
85 for (uint32_t i = 0; i < create_info->queueCreateInfoCount; i++) in vn_device_init_queues()
86 count += create_info->pQueueCreateInfos[i].queueCount; in vn_device_init_queues()
95 for (uint32_t i = 0; i < create_info->queueCreateInfoCount; i++) { in vn_device_init_queues()
99 &create_info->pQueueCreateInfos[i]; in vn_device_init_queues()
100 for (uint32_t j = 0; j < queue_info->queueCount; j++) { in vn_device_init_queues()
114 dev->queues = queues; in vn_device_init_queues()
115 dev->queue_count = count; in vn_device_init_queues()
124 const VkAllocationCallbacks *alloc = &dev->base.base.alloc; in vn_device_queue_family_init()
129 alloc, sizeof(*queue_families) * create_info->queueCreateInfoCount, in vn_device_queue_family_init()
134 for (uint32_t i = 0; i < create_info->queueCreateInfoCount; i++) { in vn_device_queue_family_init()
136 create_info->pQueueCreateInfos[i].queueFamilyIndex; in vn_device_queue_family_init()
149 dev->queue_families = queue_families; in vn_device_queue_family_init()
150 dev->queue_family_count = count; in vn_device_queue_family_init()
158 vk_free(&dev->base.base.alloc, dev->queue_families); in vn_device_queue_family_fini()
165 const struct vk_features *app_feats = &dev->base.base.enabled_features; in vn_device_memory_report_init()
166 if (!app_feats->deviceMemoryReport) in vn_device_memory_report_init()
170 vk_foreach_struct_const(pnext, create_info->pNext) { in vn_device_memory_report_init()
171 if (pnext->sType == in vn_device_memory_report_init()
179 vk_alloc(&dev->base.base.alloc, sizeof(*mem_reports) * count, in vn_device_memory_report_init()
186 vk_foreach_struct_const(pnext, create_info->pNext) { in vn_device_memory_report_init()
187 if (pnext->sType == in vn_device_memory_report_init()
191 mem_reports[count].callback = report->pfnUserCallback; in vn_device_memory_report_init()
192 mem_reports[count].data = report->pUserData; in vn_device_memory_report_init()
197 dev->memory_report_count = count; in vn_device_memory_report_init()
198 dev->memory_reports = mem_reports; in vn_device_memory_report_init()
206 vk_free(&dev->base.base.alloc, dev->memory_reports); in vn_device_memory_report_fini()
259 const struct vn_physical_device *physical_dev = dev->physical_device; in vn_device_fix_create_info()
261 &dev->base.base.enabled_extensions; in vn_device_fix_create_info()
270 app_exts->KHR_swapchain || app_exts->ANDROID_native_buffer || in vn_device_fix_create_info()
271 app_exts->ANDROID_external_memory_android_hardware_buffer; in vn_device_fix_create_info()
273 if (!app_exts->EXT_image_drm_format_modifier) { in vn_device_fix_create_info()
277 if (physical_dev->renderer_version < VK_API_VERSION_1_2 && in vn_device_fix_create_info()
278 !app_exts->KHR_image_format_list) { in vn_device_fix_create_info()
284 if (!app_exts->EXT_queue_family_foreign) { in vn_device_fix_create_info()
289 if (app_exts->KHR_swapchain) { in vn_device_fix_create_info()
298 if (app_exts->ANDROID_native_buffer) { in vn_device_fix_create_info()
300 if (!app_exts->KHR_external_fence_fd) { in vn_device_fix_create_info()
301 assert(physical_dev->renderer_sync_fd.fence_exportable); in vn_device_fix_create_info()
309 if (app_exts->ANDROID_external_memory_android_hardware_buffer) { in vn_device_fix_create_info()
315 if (app_exts->KHR_external_memory_fd || in vn_device_fix_create_info()
316 app_exts->EXT_external_memory_dma_buf || has_wsi) { in vn_device_fix_create_info()
317 if (physical_dev->external_memory.renderer_handle_type == in vn_device_fix_create_info()
319 if (!app_exts->EXT_external_memory_dma_buf) { in vn_device_fix_create_info()
323 if (!app_exts->KHR_external_memory_fd) { in vn_device_fix_create_info()
331 if (!app_exts->KHR_external_semaphore_fd && has_wsi) { in vn_device_fix_create_info()
332 assert(physical_dev->renderer_sync_fd.semaphore_importable); in vn_device_fix_create_info()
338 physical_dev->renderer_extensions in vn_device_fix_create_info()
340 !app_exts->EXT_external_memory_acquire_unmodified && has_wsi) { in vn_device_fix_create_info()
345 if (app_exts->EXT_device_memory_report) { in vn_device_fix_create_info()
350 if (app_exts->EXT_physical_device_drm) { in vn_device_fix_create_info()
355 if (app_exts->EXT_tooling_info) { in vn_device_fix_create_info()
360 if (app_exts->EXT_pci_bus_info) { in vn_device_fix_create_info()
368 if (!extra_count && (!block_count || !dev_info->enabledExtensionCount)) in vn_device_fix_create_info()
372 if (!merge_extension_names(dev_info->ppEnabledExtensionNames, in vn_device_fix_create_info()
373 dev_info->enabledExtensionCount, extra_exts, in vn_device_fix_create_info()
375 &local_info->ppEnabledExtensionNames, in vn_device_fix_create_info()
376 &local_info->enabledExtensionCount)) in vn_device_fix_create_info()
390 const VkAllocationCallbacks *alloc = &dev->base.base.alloc; in vn_device_feedback_pool_init()
396 return vn_feedback_pool_init(dev, &dev->feedback_pool, pool_size, alloc); in vn_device_feedback_pool_init()
406 vn_feedback_pool_fini(&dev->feedback_pool); in vn_device_feedback_pool_fini()
412 /* venus utilizes the host side shader cache. in vn_device_update_shader_cache_id()
418 * and not utilized by venus. in vn_device_update_shader_cache_id()
422 dev->physical_device->base.base.properties.pipelineCacheUUID; in vn_device_update_shader_cache_id()
427 struct disk_cache *cache = disk_cache_create("venus", uuid, 0); in vn_device_update_shader_cache_id()
450 struct vn_instance *instance = physical_dev->instance; in vn_device_init()
457 dev->instance = instance; in vn_device_init()
458 dev->physical_device = physical_dev; in vn_device_init()
459 dev->device_mask = 1; in vn_device_init()
460 dev->renderer = instance->renderer; in vn_device_init()
461 dev->primary_ring = instance->ring.ring; in vn_device_init()
469 create_info->pNext, DEVICE_GROUP_DEVICE_CREATE_INFO); in vn_device_init()
470 if (group && group->physicalDeviceCount) in vn_device_init()
471 dev->device_mask = (1 << group->physicalDeviceCount) - 1; in vn_device_init()
473 result = vn_call_vkCreateDevice(dev->primary_ring, physical_dev_handle, in vn_device_init()
478 vk_free(alloc, (void *)create_info->ppEnabledExtensionNames); in vn_device_init()
527 vn_call_vkDestroyDevice(dev->primary_ring, dev_handle, NULL); in vn_device_init()
541 struct vn_instance *instance = physical_dev->instance; in vn_CreateDevice()
543 pAllocator ? pAllocator : &instance->base.base.alloc; in vn_CreateDevice()
557 result = vn_device_base_init(&dev->base, &physical_dev->base, in vn_CreateDevice()
566 vn_device_base_fini(&dev->base); in vn_CreateDevice()
572 vn_log(instance, "%s", physical_dev->base.base.properties.deviceName); in vn_CreateDevice()
573 vn_log(instance, "%s", physical_dev->base.base.properties.driverInfo); in vn_CreateDevice()
589 pAllocator ? pAllocator : &dev->base.base.alloc; in vn_DestroyDevice()
597 for (uint32_t i = 0; i < dev->queue_count; i++) in vn_DestroyDevice()
598 vn_queue_fini(&dev->queues[i]); in vn_DestroyDevice()
608 vn_async_vkDestroyDevice(dev->primary_ring, device, NULL); in vn_DestroyDevice()
614 for (uint32_t i = 0; i < dev->queue_count; i++) { in vn_DestroyDevice()
615 vn_instance_release_ring_idx(dev->instance, dev->queues[i].ring_idx); in vn_DestroyDevice()
618 vk_free(alloc, dev->queues); in vn_DestroyDevice()
620 vn_device_base_fini(&dev->base); in vn_DestroyDevice()
628 return vk_device_get_proc_addr(&dev->base.base, pName); in vn_GetDeviceProcAddr()
643 dev->primary_ring, device, heapIndex, localDeviceIndex, in vn_GetDeviceGroupPeerMemoryFeatures()
672 dev->primary_ring, device, 1, &pTimestampInfos[domain], in vn_GetCalibratedTimestampsEXT()
676 return vn_error(dev->instance, ret); in vn_GetCalibratedTimestampsEXT()