mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
hwcontext_vulkan: support user-provided pools
If an external pool was provided we skipped all of frames init, including the exec context.
This commit is contained in:
parent
c0b0807871
commit
3dd3d1b7fb
@ -1697,9 +1697,6 @@ static int vulkan_frames_init(AVHWFramesContext *hwfc)
|
|||||||
AVVulkanDeviceContext *dev_hwctx = hwfc->device_ctx->hwctx;
|
AVVulkanDeviceContext *dev_hwctx = hwfc->device_ctx->hwctx;
|
||||||
VulkanDevicePriv *p = hwfc->device_ctx->internal->priv;
|
VulkanDevicePriv *p = hwfc->device_ctx->internal->priv;
|
||||||
|
|
||||||
if (hwfc->pool)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* Default pool flags */
|
/* Default pool flags */
|
||||||
hwctx->tiling = hwctx->tiling ? hwctx->tiling : p->use_linear_images ?
|
hwctx->tiling = hwctx->tiling ? hwctx->tiling : p->use_linear_images ?
|
||||||
VK_IMAGE_TILING_LINEAR : VK_IMAGE_TILING_OPTIMAL;
|
VK_IMAGE_TILING_LINEAR : VK_IMAGE_TILING_OPTIMAL;
|
||||||
@ -1722,12 +1719,16 @@ static int vulkan_frames_init(AVHWFramesContext *hwfc)
|
|||||||
|
|
||||||
vulkan_frame_free(hwfc, (uint8_t *)f);
|
vulkan_frame_free(hwfc, (uint8_t *)f);
|
||||||
|
|
||||||
hwfc->internal->pool_internal = av_buffer_pool_init2(sizeof(AVVkFrame),
|
/* If user did not specify a pool, hwfc->pool will be set to the internal one
|
||||||
hwfc, vulkan_pool_alloc,
|
* in hwcontext.c just after this gets called */
|
||||||
NULL);
|
if (!hwfc->pool) {
|
||||||
if (!hwfc->internal->pool_internal) {
|
hwfc->internal->pool_internal = av_buffer_pool_init2(sizeof(AVVkFrame),
|
||||||
free_exec_ctx(hwfc->device_ctx, &p->cmd);
|
hwfc, vulkan_pool_alloc,
|
||||||
return AVERROR(ENOMEM);
|
NULL);
|
||||||
|
if (!hwfc->internal->pool_internal) {
|
||||||
|
free_exec_ctx(hwfc->device_ctx, &p->cmd);
|
||||||
|
return AVERROR(ENOMEM);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user