[FFmpeg-devel] [PATCH v7 1/9] libavutil: add hwcontext_d3d12va and AV_PIX_FMT_D3D12
Lynne
dev at lynne.ee
Wed Aug 30 00:09:04 EEST 2023
Aug 29, 2023, 06:15 by tong1.wu-at-intel.com at ffmpeg.org:
> +
> + /**
> + * Specifed by sync=1 when init d3d12va
> + *
> + * Execute commands as sync mode
> + */
> + int sync;
>
This is not needed, particularly in the public API.
> + if (download) {
> + ID3D12GraphicsCommandList_ResourceBarrier(s->command_list, 1, &barrier);
> +
> + ID3D12GraphicsCommandList_CopyTextureRegion(s->command_list,
> + &staging_y_location, 0, 0, 0, &texture_y_location, NULL);
> +
> + ID3D12GraphicsCommandList_CopyTextureRegion(s->command_list,
> + &staging_uv_location, 0, 0, 0, &texture_uv_location, NULL);
> +
> + barrier.Transition.StateBefore = barrier.Transition.StateAfter;
> + barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COMMON;
> + ID3D12GraphicsCommandList_ResourceBarrier(s->command_list, 1, &barrier);
> +
> + DX_CHECK(ID3D12GraphicsCommandList_Close(s->command_list));
> +
> + if (!hwctx->sync)
> + DX_CHECK(ID3D12CommandQueue_Wait(s->command_queue, sync_ctx->fence, sync_ctx->fence_value));
This is wrong. When downloading to RAM, the frames must
always be available and fully downloaded by the time the function
returns. Therefore, a wait must always occur.
Since this is the only place where sync is used, better remove the
option altogether.
More information about the ffmpeg-devel
mailing list