In filtering, and SDR encoding, we use storage images. This fixes using Vulkan filters on Intel. Tested not to break anything on the three major vendors.
Showing the changes to libavcodec (1 of 1 file). Show all
Unified · Split
| @@ -1070,7 +1070,8 @@ int ff_vk_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx) · 1069 unmodified lines | |||
| 1070 | 1070 | ||
| 1071 | hwfc->format[0] = vkfmt; | 1071 | hwfc->format[0] = vkfmt; |
| 1072 | hwfc->tiling = VK_IMAGE_TILING_OPTIMAL; | 1072 | hwfc->tiling = VK_IMAGE_TILING_OPTIMAL; |
| 1073 | hwfc->usage = VK_IMAGE_USAGE_TRANSFER_SRC_BIT | | 1073 | hwfc->usage = VK_IMAGE_USAGE_TRANSFER_SRC_BIT | |
| 1074 | VK_IMAGE_USAGE_STORAGE_BIT | | ||
| 1074 | VK_IMAGE_USAGE_SAMPLED_BIT; | 1075 | VK_IMAGE_USAGE_SAMPLED_BIT; |
| 1075 | 1076 | ||
| 1076 | if (prof) { | 1077 | if (prof) { |
| @@ -1084,8 +1085,6 @@ int ff_vk_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx) · 7 unmodified lines | |||
| 1084 | if (ctx->s.extensions & (FF_VK_EXT_VIDEO_ENCODE_QUEUE | | 1085 | if (ctx->s.extensions & (FF_VK_EXT_VIDEO_ENCODE_QUEUE | |
| 1085 | FF_VK_EXT_VIDEO_MAINTENANCE_1)) | 1086 | FF_VK_EXT_VIDEO_MAINTENANCE_1)) |
| 1086 | hwfc->usage |= VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR; | 1087 | hwfc->usage |= VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR; |
| 1087 | } else if (DECODER_IS_SDR(avctx->codec_id)) { | ||
| 1088 | hwfc->usage |= VK_IMAGE_USAGE_STORAGE_BIT; | ||
| 1089 | } | 1088 | } |
| 1090 | 1089 | ||
| 1091 | return err; | 1090 | return err; |