ffmpeg | branch: master | Lynne <d...@lynne.ee> | Sat Apr 5 05:13:02 2025 +0000| [b72ada0a9652c24ac0bd7133e51839e727bdae8a] | committer: Lynne
vulkan_ffv1: fallback to upload if mapping packet fails, fix fallback The commit which added support for host mapping accidentally broke the original, upload route. For drivers without host-mapping (very few), fix it. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b72ada0a9652c24ac0bd7133e51839e727bdae8a --- libavcodec/vulkan_ffv1.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/libavcodec/vulkan_ffv1.c b/libavcodec/vulkan_ffv1.c index 9747721f0d..ccff927200 100644 --- a/libavcodec/vulkan_ffv1.c +++ b/libavcodec/vulkan_ffv1.c @@ -182,14 +182,11 @@ static int vk_ffv1_start_frame(AVCodecContext *avctx, fp->crc_checked = f->ec && (avctx->err_recognition & AV_EF_CRCCHECK); /* Host map the input slices data if supported */ - if (ctx->s.extensions & FF_VK_EXT_EXTERNAL_HOST_MEMORY) { - err = ff_vk_host_map_buffer(&ctx->s, &vp->slices_buf, buffer_ref->data, - buffer_ref, - VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | - VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT); - if (err < 0) - return err; - } + if (ctx->s.extensions & FF_VK_EXT_EXTERNAL_HOST_MEMORY) + ff_vk_host_map_buffer(&ctx->s, &vp->slices_buf, buffer_ref->data, + buffer_ref, + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT); /* Allocate slice state data */ if (f->picture.f->flags & AV_FRAME_FLAG_KEY) { @@ -266,16 +263,14 @@ static int vk_ffv1_decode_slice(AVCodecContext *avctx, uint32_t size) { FFV1Context *f = avctx->priv_data; - FFVulkanDecodeContext *dec = avctx->internal->hwaccel_priv_data; - FFVulkanDecodeShared *ctx = dec->shared_ctx; FFv1VulkanDecodePicture *fp = f->hwaccel_picture_private; FFVulkanDecodePicture *vp = &fp->vp; FFVkBuffer *slice_offset = (FFVkBuffer *)fp->slice_offset_buf->data; + FFVkBuffer *slices_buf = vp->slices_buf ? (FFVkBuffer *)vp->slices_buf->data : NULL; - if (ctx->s.extensions & FF_VK_EXT_EXTERNAL_HOST_MEMORY) { - FFVkBuffer *slices_buf = (FFVkBuffer *)vp->slices_buf->data; + if (slices_buf && slices_buf->host_ref) { AV_WN32(slice_offset->mapped_mem + (2*fp->slice_num + 0)*sizeof(uint32_t), data - slices_buf->mapped_mem); AV_WN32(slice_offset->mapped_mem + (2*fp->slice_num + 1)*sizeof(uint32_t), _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".