MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / ff_vk_exec_pool_init

Function ff_vk_exec_pool_init

libavutil/vulkan.c:357–518  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

355}
356
357int ff_vk_exec_pool_init(FFVulkanContext *s, AVVulkanDeviceQueueFamily *qf,
358 FFVkExecPool *pool, int nb_contexts,
359 int nb_queries, VkQueryType query_type, int query_64bit,
360 const void *query_create_pnext)
361{
362 int err;
363 VkResult ret;
364 FFVulkanFunctions *vk = &s->vkfn;
365
366 VkCommandPoolCreateInfo cqueue_create;
367 VkCommandBufferAllocateInfo cbuf_create;
368
369 const VkQueryPoolVideoEncodeFeedbackCreateInfoKHR *ef = NULL;
370
371 atomic_init(&pool->idx, 0);
372
373 if (query_type == VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR) {
374 ef = ff_vk_find_struct(query_create_pnext,
375 VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR);
376 if (!ef)
377 return AVERROR(EINVAL);
378 }
379
380 /* Allocate space for command buffer pools */
381 pool->cmd_buf_pools = av_malloc(nb_contexts*sizeof(*pool->cmd_buf_pools));
382 if (!pool->cmd_buf_pools) {
383 err = AVERROR(ENOMEM);
384 goto fail;
385 }
386
387 /* Allocate space for command buffers */
388 pool->cmd_bufs = av_malloc(nb_contexts*sizeof(*pool->cmd_bufs));
389 if (!pool->cmd_bufs) {
390 err = AVERROR(ENOMEM);
391 goto fail;
392 }
393
394 for (int i = 0; i < nb_contexts; i++) {
395 /* Create command pool */
396 cqueue_create = (VkCommandPoolCreateInfo) {
397 .sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
398 .flags = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT |
399 VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,
400 .queueFamilyIndex = qf->idx,
401 };
402
403 ret = vk->CreateCommandPool(s->hwctx->act_dev, &cqueue_create,
404 s->hwctx->alloc, &pool->cmd_buf_pools[i]);
405 if (ret != VK_SUCCESS) {
406 av_log(s, AV_LOG_ERROR, "Command pool creation failure: %s\n",
407 ff_vk_ret2str(ret));
408 err = AVERROR_EXTERNAL;
409 goto fail;
410 }
411
412 /* Allocate command buffer */
413 cbuf_create = (VkCommandBufferAllocateInfo) {
414 .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,

Callers 15

vulkan_frames_initFunction · 0.85
ff_vulkan_encode_initFunction · 0.85
ff_vk_decode_initFunction · 0.85
encode_initFunction · 0.85
vulkan_encode_ffv1_initFunction · 0.85
ff_sws_vk_initFunction · 0.85
init_filterFunction · 0.85
init_filterFunction · 0.85
init_gblur_pipelineFunction · 0.85
init_filterFunction · 0.85
init_vulkanFunction · 0.85
init_filterFunction · 0.85

Calls 6

ff_vk_find_structFunction · 0.85
av_logFunction · 0.85
ff_vk_ret2strFunction · 0.85
av_callocFunction · 0.85
ff_vk_exec_pool_freeFunction · 0.85
av_mallocFunction · 0.70

Tested by 1

init_filterFunction · 0.68