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.
Unified · Split
| @@ -1070,7 +1070,8 @@ int ff_vk_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx) · 1069 unmodified lines | ||
| 1070 | 1070 | |
| 1071 | 1071 | hwfc->format[0] = vkfmt; |
| 1072 | 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 | 1075 | VK_IMAGE_USAGE_SAMPLED_BIT; |
| 1075 | 1076 | |
| 1076 | 1077 | if (prof) { |
| @@ -1084,8 +1085,6 @@ int ff_vk_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx) · 7 unmodified lines | ||
| 1084 | 1085 | if (ctx->s.extensions & (FF_VK_EXT_VIDEO_ENCODE_QUEUE | |
| 1085 | 1086 | FF_VK_EXT_VIDEO_MAINTENANCE_1)) |
| 1086 | 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 | 1090 | return err; |