From patchwork Thu Oct 3 05:51:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lynne X-Patchwork-Id: 51993 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:b18c:0:b0:48e:c0f8:d0de with SMTP id q12csp145864vqn; Wed, 2 Oct 2024 22:52:37 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUPwG0ta4JGb//4CmnmveGVKjuq2Ia+c0zqBb2LzQgSiwsMAAvT9FraESdBdL/b7Y5Hs4AygXXKfafo2j5Paqvk@gmail.com X-Google-Smtp-Source: AGHT+IFGTNwSOwlH/s3Pr+RnufPRi/JkHnqSamHPDK3WN2TmAcZ7Z8w9syatAVCxjI48l8OKecKU X-Received: by 2002:a05:6402:90c:b0:5c8:a023:6b8b with SMTP id 4fb4d7f45d1cf-5c8c0a47642mr1941936a12.15.1727934756648; Wed, 02 Oct 2024 22:52:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727934756; cv=none; d=google.com; s=arc-20240605; b=OVk48d+ilfrEEq0/t2NK6VfV+iROqEhz6zqofV/gLN9e4V5JUo7ta1Xc8X2oTmPuyL NVDKIOhh4b10c8tZ7ZRuPPHh528wJF0k1diuq0MJWEK5LDQoiw08mtns1d+mxrNblzdj ISvOLOG7BM4LzIGJ+U0iFzpgLAGG70uoUGZmHHhJd6Wi58IzgLyM5mZq61V17ubzWFSu ayHQ04KDEGngtoQeeTuf2QK/6VuD3pcqyWMKMqToh5aD4gE9fMK9tpBbptYHh1lbYv5j LZf1pzSbTX/sAqgvNP19xLgqZTlBct819o273PDp2kmfHI/heEgthSgKCgVttzeokA1c EpqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:cc:reply-to:from :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:delivered-to; bh=TjU3IQVtbWAPFeP0U8pNhtt8lrBfOY5nAFegVSFXt8U=; fh=nenT92/WZoU6unXd3J6UhGUdod4piddKfVtctNBOh6k=; b=I2o8N/EaO7uWtQczNEfqpOZSl4JaERSO2RDkJOmdHO6zPatDaX1+YfPTEf4q9Z/Jqt 4mcCry0kZXBH3NkIAUWji7vUGfmuJWsC4W5P7TqXUq9Rx/eeBTn05i8JG2L4aLtP9I30 xZULTzngIoUHu+7slpcaESZ4C6dGe2EZV579/h4zq9UJDXxXAz9JsYqZi8NcNMts5HsP LDUFDGv8gY1EzTwxzlZnD8WNPI/xau4SjLOHR42+Zmnw9ClYuicuPHymQwAPGJ1wBh0j 9SffiFSUNMPFrfOYX3i562vdFIKp1ID7GyUAf1bspnOf2xbN5WnXVnVe9AvasOSBNapL oRLA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-5c8ca4b24c3si375756a12.534.2024.10.02.22.52.35; Wed, 02 Oct 2024 22:52:36 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 23F1668DAA3; Thu, 3 Oct 2024 08:51:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from vidala.lynne.ee (vidala.pars.ee [116.203.72.101]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BBF5E68DA0A for ; Thu, 3 Oct 2024 08:51:44 +0300 (EEST) To: ffmpeg-devel@ffmpeg.org Date: Thu, 3 Oct 2024 07:51:32 +0200 Message-ID: <20241003055141.415483-5-dev@lynne.ee> X-Mailer: git-send-email 2.45.2.753.g447d99e1c3b In-Reply-To: <20241003055141.415483-1-dev@lynne.ee> References: <20241003055141.415483-1-dev@lynne.ee> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 5/8] lavfi/*vulkan: forward FFVulkanContext to SPIR-V compilers X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Lynne via ffmpeg-devel From: Lynne Reply-To: FFmpeg development discussions and patches Cc: Lynne Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 63t290EjKods We need to know what extensions are supported. --- libavfilter/vf_avgblur_vulkan.c | 2 +- libavfilter/vf_blend_vulkan.c | 2 +- libavfilter/vf_bwdif_vulkan.c | 2 +- libavfilter/vf_chromaber_vulkan.c | 2 +- libavfilter/vf_flip_vulkan.c | 2 +- libavfilter/vf_gblur_vulkan.c | 2 +- libavfilter/vf_nlmeans_vulkan.c | 4 ++-- libavfilter/vf_overlay_vulkan.c | 2 +- libavfilter/vf_scale_vulkan.c | 2 +- libavfilter/vf_transpose_vulkan.c | 2 +- libavfilter/vf_xfade_vulkan.c | 2 +- libavfilter/vsrc_testsrc_vulkan.c | 2 +- libavfilter/vulkan_glslang.c | 20 ++++++++++---------- libavfilter/vulkan_shaderc.c | 8 ++++---- libavfilter/vulkan_spirv.h | 4 ++-- 15 files changed, 29 insertions(+), 29 deletions(-) diff --git a/libavfilter/vf_avgblur_vulkan.c b/libavfilter/vf_avgblur_vulkan.c index 3972ea0cbb..9214ebcc0f 100644 --- a/libavfilter/vf_avgblur_vulkan.c +++ b/libavfilter/vf_avgblur_vulkan.c @@ -137,7 +137,7 @@ static av_cold int init_filter(AVFilterContext *ctx, AVFrame *in) } GLSLC(0, } ); - RET(spv->compile_shader(spv, ctx, &s->shd, &spv_data, &spv_len, "main", + RET(spv->compile_shader(vkctx, spv, &s->shd, &spv_data, &spv_len, "main", &spv_opaque)); RET(ff_vk_shader_link(vkctx, &s->shd, spv_data, spv_len, "main")); diff --git a/libavfilter/vf_blend_vulkan.c b/libavfilter/vf_blend_vulkan.c index ccc025fe6b..406b087503 100644 --- a/libavfilter/vf_blend_vulkan.c +++ b/libavfilter/vf_blend_vulkan.c @@ -208,7 +208,7 @@ static av_cold int init_filter(AVFilterContext *avctx) } GLSLC(0, } ); - RET(spv->compile_shader(spv, avctx, shd, &spv_data, &spv_len, "main", + RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main", &spv_opaque)); RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main")); diff --git a/libavfilter/vf_bwdif_vulkan.c b/libavfilter/vf_bwdif_vulkan.c index 3164eb3395..2ea9512fcb 100644 --- a/libavfilter/vf_bwdif_vulkan.c +++ b/libavfilter/vf_bwdif_vulkan.c @@ -244,7 +244,7 @@ static av_cold int init_filter(AVFilterContext *ctx) GLSLC(0, } ); - RET(spv->compile_shader(spv, ctx, &s->shd, &spv_data, &spv_len, "main", + RET(spv->compile_shader(vkctx, spv, &s->shd, &spv_data, &spv_len, "main", &spv_opaque)); RET(ff_vk_shader_link(vkctx, &s->shd, spv_data, spv_len, "main")); diff --git a/libavfilter/vf_chromaber_vulkan.c b/libavfilter/vf_chromaber_vulkan.c index 450715b36c..8a62e514fa 100644 --- a/libavfilter/vf_chromaber_vulkan.c +++ b/libavfilter/vf_chromaber_vulkan.c @@ -148,7 +148,7 @@ static av_cold int init_filter(AVFilterContext *ctx, AVFrame *in) } GLSLC(0, } ); - RET(spv->compile_shader(spv, ctx, shd, &spv_data, &spv_len, "main", + RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main", &spv_opaque)); RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main")); diff --git a/libavfilter/vf_flip_vulkan.c b/libavfilter/vf_flip_vulkan.c index 2b89a9a6a3..3e0a7ebc85 100644 --- a/libavfilter/vf_flip_vulkan.c +++ b/libavfilter/vf_flip_vulkan.c @@ -121,7 +121,7 @@ static av_cold int init_filter(AVFilterContext *ctx, AVFrame *in, enum FlipType } GLSLC(0, } ); - RET(spv->compile_shader(spv, ctx, shd, &spv_data, &spv_len, "main", + RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main", &spv_opaque)); RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main")); diff --git a/libavfilter/vf_gblur_vulkan.c b/libavfilter/vf_gblur_vulkan.c index a56a6ece00..9632a084e4 100644 --- a/libavfilter/vf_gblur_vulkan.c +++ b/libavfilter/vf_gblur_vulkan.c @@ -169,7 +169,7 @@ static int init_gblur_pipeline(GBlurVulkanContext *s, } GLSLC(0, } ); - RET(spv->compile_shader(spv, s, shd, &spv_data, &spv_len, "main", + RET(spv->compile_shader(&s->vkctx, spv, shd, &spv_data, &spv_len, "main", &spv_opaque)); RET(ff_vk_shader_link(&s->vkctx, shd, spv_data, spv_len, "main")); diff --git a/libavfilter/vf_nlmeans_vulkan.c b/libavfilter/vf_nlmeans_vulkan.c index b413194035..9ad12eb7b6 100644 --- a/libavfilter/vf_nlmeans_vulkan.c +++ b/libavfilter/vf_nlmeans_vulkan.c @@ -402,7 +402,7 @@ static av_cold int init_weights_pipeline(FFVulkanContext *vkctx, FFVkExecPool *e GLSLC(0, } ); - RET(spv->compile_shader(spv, vkctx, shd, &spv_data, &spv_len, "main", &spv_opaque)); + RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main", &spv_opaque)); RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main")); RET(ff_vk_shader_register_exec(vkctx, exec, shd)); @@ -553,7 +553,7 @@ static av_cold int init_denoise_pipeline(FFVulkanContext *vkctx, FFVkExecPool *e GLSLC(1, imageStore(output_img[plane], pos, r); ); GLSLC(0, } ); - RET(spv->compile_shader(spv, vkctx, shd, &spv_data, &spv_len, "main", &spv_opaque)); + RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main", &spv_opaque)); RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main")); RET(ff_vk_shader_register_exec(vkctx, exec, shd)); diff --git a/libavfilter/vf_overlay_vulkan.c b/libavfilter/vf_overlay_vulkan.c index f1ad27167e..3af2482772 100644 --- a/libavfilter/vf_overlay_vulkan.c +++ b/libavfilter/vf_overlay_vulkan.c @@ -163,7 +163,7 @@ static av_cold int init_filter(AVFilterContext *ctx) GLSLC(1, } ); GLSLC(0, } ); - RET(spv->compile_shader(spv, ctx, shd, &spv_data, &spv_len, "main", + RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main", &spv_opaque)); RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main")); diff --git a/libavfilter/vf_scale_vulkan.c b/libavfilter/vf_scale_vulkan.c index e39bc62aa8..95cc25f8d7 100644 --- a/libavfilter/vf_scale_vulkan.c +++ b/libavfilter/vf_scale_vulkan.c @@ -247,7 +247,7 @@ static av_cold int init_filter(AVFilterContext *ctx, AVFrame *in) s->opts.yuv_matrix[3][3] = 1.0; } - RET(spv->compile_shader(spv, ctx, shd, &spv_data, &spv_len, "main", + RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main", &spv_opaque)); RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main")); diff --git a/libavfilter/vf_transpose_vulkan.c b/libavfilter/vf_transpose_vulkan.c index c3282339af..8ab782cc79 100644 --- a/libavfilter/vf_transpose_vulkan.c +++ b/libavfilter/vf_transpose_vulkan.c @@ -113,7 +113,7 @@ static av_cold int init_filter(AVFilterContext *ctx, AVFrame *in) } GLSLC(0, } ); - RET(spv->compile_shader(spv, ctx, shd, &spv_data, &spv_len, "main", + RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main", &spv_opaque)); RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main")); diff --git a/libavfilter/vf_xfade_vulkan.c b/libavfilter/vf_xfade_vulkan.c index c230f5d833..0b6f1350fb 100644 --- a/libavfilter/vf_xfade_vulkan.c +++ b/libavfilter/vf_xfade_vulkan.c @@ -393,7 +393,7 @@ static av_cold int init_vulkan(AVFilterContext *avctx) GLSLC(1, } ); GLSLC(0, } ); - RET(spv->compile_shader(spv, avctx, shd, &spv_data, &spv_len, "main", + RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main", &spv_opaque)); RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main")); diff --git a/libavfilter/vsrc_testsrc_vulkan.c b/libavfilter/vsrc_testsrc_vulkan.c index bfef38ce51..0641beed5b 100644 --- a/libavfilter/vsrc_testsrc_vulkan.c +++ b/libavfilter/vsrc_testsrc_vulkan.c @@ -179,7 +179,7 @@ static av_cold int init_filter(AVFilterContext *ctx, enum TestSrcVulkanMode mode } GLSLC(0, } ); - RET(spv->compile_shader(spv, ctx, shd, &spv_data, &spv_len, "main", + RET(spv->compile_shader(vkctx, spv, shd, &spv_data, &spv_len, "main", &spv_opaque)); RET(ff_vk_shader_link(vkctx, shd, spv_data, spv_len, "main")); diff --git a/libavfilter/vulkan_glslang.c b/libavfilter/vulkan_glslang.c index 3c1b0a8fe6..7ac7d6b2c4 100644 --- a/libavfilter/vulkan_glslang.c +++ b/libavfilter/vulkan_glslang.c @@ -136,7 +136,7 @@ static const glslang_resource_t glslc_resource_limits = { } }; -static int glslc_shader_compile(FFVkSPIRVCompiler *ctx, void *avctx, +static int glslc_shader_compile(FFVulkanContext *s, FFVkSPIRVCompiler *ctx, FFVulkanShader *shd, uint8_t **data, size_t *size, const char *entrypoint, void **opaque) @@ -183,8 +183,8 @@ static int glslc_shader_compile(FFVkSPIRVCompiler *ctx, void *avctx, return AVERROR(ENOMEM); if (!glslang_shader_preprocess(glslc_shader, &glslc_input)) { - ff_vk_shader_print(avctx, shd, AV_LOG_WARNING); - av_log(avctx, AV_LOG_ERROR, "Unable to preprocess shader: %s (%s)!\n", + ff_vk_shader_print(s, shd, AV_LOG_WARNING); + av_log(s, AV_LOG_ERROR, "Unable to preprocess shader: %s (%s)!\n", glslang_shader_get_info_log(glslc_shader), glslang_shader_get_info_debug_log(glslc_shader)); glslang_shader_delete(glslc_shader); @@ -192,8 +192,8 @@ static int glslc_shader_compile(FFVkSPIRVCompiler *ctx, void *avctx, } if (!glslang_shader_parse(glslc_shader, &glslc_input)) { - ff_vk_shader_print(avctx, shd, AV_LOG_WARNING); - av_log(avctx, AV_LOG_ERROR, "Unable to parse shader: %s (%s)!\n", + ff_vk_shader_print(s, shd, AV_LOG_WARNING); + av_log(s, AV_LOG_ERROR, "Unable to parse shader: %s (%s)!\n", glslang_shader_get_info_log(glslc_shader), glslang_shader_get_info_debug_log(glslc_shader)); glslang_shader_delete(glslc_shader); @@ -209,8 +209,8 @@ static int glslc_shader_compile(FFVkSPIRVCompiler *ctx, void *avctx, if (!glslang_program_link(glslc_program, GLSLANG_MSG_SPV_RULES_BIT | GLSLANG_MSG_VULKAN_RULES_BIT)) { - ff_vk_shader_print(avctx, shd, AV_LOG_WARNING); - av_log(avctx, AV_LOG_ERROR, "Unable to link shader: %s (%s)!\n", + ff_vk_shader_print(s, shd, AV_LOG_WARNING); + av_log(s, AV_LOG_ERROR, "Unable to link shader: %s (%s)!\n", glslang_program_get_info_log(glslc_program), glslang_program_get_info_debug_log(glslc_program)); glslang_program_delete(glslc_program); @@ -222,10 +222,10 @@ static int glslc_shader_compile(FFVkSPIRVCompiler *ctx, void *avctx, messages = glslang_program_SPIRV_get_messages(glslc_program); if (messages) { - ff_vk_shader_print(avctx, shd, AV_LOG_WARNING); - av_log(avctx, AV_LOG_WARNING, "%s\n", messages); + ff_vk_shader_print(s, shd, AV_LOG_WARNING); + av_log(s, AV_LOG_WARNING, "%s\n", messages); } else { - ff_vk_shader_print(avctx, shd, AV_LOG_VERBOSE); + ff_vk_shader_print(s, shd, AV_LOG_VERBOSE); } glslang_shader_delete(glslc_shader); diff --git a/libavfilter/vulkan_shaderc.c b/libavfilter/vulkan_shaderc.c index d2bd60e7ef..56a2c0eef5 100644 --- a/libavfilter/vulkan_shaderc.c +++ b/libavfilter/vulkan_shaderc.c @@ -21,7 +21,7 @@ #include "libavutil/mem.h" #include "vulkan_spirv.h" -static int shdc_shader_compile(FFVkSPIRVCompiler *ctx, void *avctx, +static int shdc_shader_compile(FFVulkanContext *s, FFVkSPIRVCompiler *ctx, FFVulkanShader *shd, uint8_t **data, size_t *size, const char *entrypoint, void **opaque) @@ -71,11 +71,11 @@ static int shdc_shader_compile(FFVkSPIRVCompiler *ctx, void *avctx, loglevel = err ? AV_LOG_ERROR : warn ? AV_LOG_WARNING : AV_LOG_VERBOSE; - ff_vk_shader_print(avctx, shd, loglevel); + ff_vk_shader_print(s, shd, loglevel); if (message && (err || warn)) - av_log(avctx, loglevel, "%s\n", message); + av_log(s, loglevel, "%s\n", message); status = ret < FF_ARRAY_ELEMS(shdc_result) ? shdc_result[ret] : "unknown"; - av_log(avctx, loglevel, "shaderc compile status '%s' (%d errors, %d warnings)\n", + av_log(s, loglevel, "shaderc compile status '%s' (%d errors, %d warnings)\n", status, err, warn); if (err > 0) diff --git a/libavfilter/vulkan_spirv.h b/libavfilter/vulkan_spirv.h index c46c9e52da..d008804ab2 100644 --- a/libavfilter/vulkan_spirv.h +++ b/libavfilter/vulkan_spirv.h @@ -26,8 +26,8 @@ typedef struct FFVkSPIRVCompiler { void *priv; - int (*compile_shader)(struct FFVkSPIRVCompiler *ctx, void *avctx, - struct FFVulkanShader *shd, uint8_t **data, + int (*compile_shader)(FFVulkanContext *s, struct FFVkSPIRVCompiler *ctx, + FFVulkanShader *shd, uint8_t **data, size_t *size, const char *entrypoint, void **opaque); void (*free_shader)(struct FFVkSPIRVCompiler *ctx, void **opaque); void (*uninit)(struct FFVkSPIRVCompiler **ctx);