History

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.

Lynne committed 1 year ago

Commit b72ada01 parent 45d7abf1 file · +7 −12Browse files

Unified · Split

libavcodec/vulkan_ffv1.c+7−12
@@ -182,14 +182,11 @@ static int vk_ffv1_start_frame(AVCodecContext *avctx, · 181 unmodified lines
182182 fp->crc_checked = f->ec && (avctx->err_recognition & AV_EF_CRCCHECK);
183183
184184 /* Host map the input slices data if supported */
185− if (ctx->s.extensions & FF_VK_EXT_EXTERNAL_HOST_MEMORY) {
186− err = ff_vk_host_map_buffer(&ctx->s, &vp->slices_buf, buffer_ref->data,
187− buffer_ref,
188− VK_BUFFER_USAGE_STORAGE_BUFFER_BIT |
189− VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT);
190− if (err < 0)
191− return err;
192− }
185+ if (ctx->s.extensions & FF_VK_EXT_EXTERNAL_HOST_MEMORY)
186+ ff_vk_host_map_buffer(&ctx->s, &vp->slices_buf, buffer_ref->data,
187+ buffer_ref,
188+ VK_BUFFER_USAGE_STORAGE_BUFFER_BIT |
189+ VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT);
193190
194191 /* Allocate slice state data */
195192 if (f->picture.f->flags & AV_FRAME_FLAG_KEY) {
@@ -266,16 +263,14 @@ static int vk_ffv1_decode_slice(AVCodecContext *avctx, · 70 unmodified lines
266263 uint32_t size)
267264 {
268265 FFV1Context *f = avctx->priv_data;
269− FFVulkanDecodeContext *dec = avctx->internal->hwaccel_priv_data;
270− FFVulkanDecodeShared *ctx = dec->shared_ctx;
271266
272267 FFv1VulkanDecodePicture *fp = f->hwaccel_picture_private;
273268 FFVulkanDecodePicture *vp = &fp->vp;
274269
275270 FFVkBuffer *slice_offset = (FFVkBuffer *)fp->slice_offset_buf->data;
271+ FFVkBuffer *slices_buf = vp->slices_buf ? (FFVkBuffer *)vp->slices_buf->data : NULL;
276272
277− if (ctx->s.extensions & FF_VK_EXT_EXTERNAL_HOST_MEMORY) {
278− FFVkBuffer *slices_buf = (FFVkBuffer *)vp->slices_buf->data;
273+ if (slices_buf && slices_buf->host_ref) {
279274 AV_WN32(slice_offset->mapped_mem + (2*fp->slice_num + 0)*sizeof(uint32_t),
280275 data - slices_buf->mapped_mem);
281276 AV_WN32(slice_offset->mapped_mem + (2*fp->slice_num + 1)*sizeof(uint32_t),

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t