From d507cdbeb574392ec1bd06a7b4334e54dca513b4 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Date: Mon, 31 Mar 2025 08:48:31 +0200 Subject: [PATCH 2/2] tools/source2c: Avoid indirection and relocations Don't use non-const pointers to string literals (which entails a relocation and an indirection); instead use an ordinary const char[]. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- libavcodec/ffv1enc_vulkan.c | 24 ++++++++++++------------ libavcodec/vulkan/Makefile | 2 +- libavcodec/vulkan_ffv1.c | 16 ++++++++-------- libavfilter/Makefile | 2 +- libavfilter/opencl_source.h | 28 ++++++++++++++-------------- libavfilter/vf_bwdif_vulkan.c | 2 +- libavfilter/vulkan/Makefile | 2 +- tools/source2c | 2 +- 8 files changed, 39 insertions(+), 39 deletions(-) diff --git a/libavcodec/ffv1enc_vulkan.c b/libavcodec/ffv1enc_vulkan.c index 5409927589..d1a30b0dd7 100644 --- a/libavcodec/ffv1enc_vulkan.c +++ b/libavcodec/ffv1enc_vulkan.c @@ -109,18 +109,18 @@ typedef struct VulkanEncodeFFv1Context { int chunks; } VulkanEncodeFFv1Context; -extern const char *ff_source_common_comp; -extern const char *ff_source_rangecoder_comp; -extern const char *ff_source_ffv1_vlc_comp; -extern const char *ff_source_ffv1_common_comp; -extern const char *ff_source_ffv1_reset_comp; -extern const char *ff_source_ffv1_enc_common_comp; -extern const char *ff_source_ffv1_enc_rct_comp; -extern const char *ff_source_ffv1_enc_vlc_comp; -extern const char *ff_source_ffv1_enc_ac_comp; -extern const char *ff_source_ffv1_enc_setup_comp; -extern const char *ff_source_ffv1_enc_comp; -extern const char *ff_source_ffv1_enc_rgb_comp; +extern const char ff_source_common_comp[]; +extern const char ff_source_rangecoder_comp[]; +extern const char ff_source_ffv1_vlc_comp[]; +extern const char ff_source_ffv1_common_comp[]; +extern const char ff_source_ffv1_reset_comp[]; +extern const char ff_source_ffv1_enc_common_comp[]; +extern const char ff_source_ffv1_enc_rct_comp[]; +extern const char ff_source_ffv1_enc_vlc_comp[]; +extern const char ff_source_ffv1_enc_ac_comp[]; +extern const char ff_source_ffv1_enc_setup_comp[]; +extern const char ff_source_ffv1_enc_comp[]; +extern const char ff_source_ffv1_enc_rgb_comp[]; typedef struct FFv1VkParameters { VkDeviceAddress slice_state; diff --git a/libavcodec/vulkan/Makefile b/libavcodec/vulkan/Makefile index e6bad486bd..655df11f4a 100644 --- a/libavcodec/vulkan/Makefile +++ b/libavcodec/vulkan/Makefile @@ -20,5 +20,5 @@ OBJS-$(CONFIG_FFV1_VULKAN_HWACCEL) += vulkan/common.o \ VULKAN = $(subst $(SRC_PATH)/,,$(wildcard $(SRC_PATH)/libavcodec/vulkan/*.comp)) .SECONDARY: $(VULKAN:.comp=.c) libavcodec/vulkan/%.c: TAG = VULKAN -libavcodec/vulkan/%.c: $(SRC_PATH)/libavcodec/vulkan/%.comp +libavcodec/vulkan/%.c: $(SRC_PATH)/libavcodec/vulkan/%.comp $(SRC_PATH)/tools/source2c $(M)$(SRC_PATH)/tools/source2c $< $@ diff --git a/libavcodec/vulkan_ffv1.c b/libavcodec/vulkan_ffv1.c index 17bfc943d4..2a28db2e7c 100644 --- a/libavcodec/vulkan_ffv1.c +++ b/libavcodec/vulkan_ffv1.c @@ -26,14 +26,14 @@ #include "libavutil/vulkan_spirv.h" #include "libavutil/mem.h" -extern const char *ff_source_common_comp; -extern const char *ff_source_rangecoder_comp; -extern const char *ff_source_ffv1_vlc_comp; -extern const char *ff_source_ffv1_common_comp; -extern const char *ff_source_ffv1_dec_setup_comp; -extern const char *ff_source_ffv1_reset_comp; -extern const char *ff_source_ffv1_dec_comp; -extern const char *ff_source_ffv1_dec_rct_comp; +extern const char ff_source_common_comp[]; +extern const char ff_source_rangecoder_comp[]; +extern const char ff_source_ffv1_vlc_comp[]; +extern const char ff_source_ffv1_common_comp[]; +extern const char ff_source_ffv1_dec_setup_comp[]; +extern const char ff_source_ffv1_reset_comp[]; +extern const char ff_source_ffv1_dec_comp[]; +extern const char ff_source_ffv1_dec_rct_comp[]; const FFVulkanDecodeDescriptor ff_vk_dec_ffv1_desc = { .codec_id = AV_CODEC_ID_FFV1, diff --git a/libavfilter/Makefile b/libavfilter/Makefile index 7c0d879ec9..2376e11bc7 100644 --- a/libavfilter/Makefile +++ b/libavfilter/Makefile @@ -683,5 +683,5 @@ clean:: OPENCL = $(subst $(SRC_PATH)/,,$(wildcard $(SRC_PATH)/libavfilter/opencl/*.cl)) .SECONDARY: $(OPENCL:.cl=.c) libavfilter/opencl/%.c: TAG = OPENCL -libavfilter/opencl/%.c: $(SRC_PATH)/libavfilter/opencl/%.cl +libavfilter/opencl/%.c: $(SRC_PATH)/libavfilter/opencl/%.cl $(SRC_PATH)/tools/source2c $(M)$(SRC_PATH)/tools/source2c $< $@ diff --git a/libavfilter/opencl_source.h b/libavfilter/opencl_source.h index b6930fb686..a1c89c4cbf 100644 --- a/libavfilter/opencl_source.h +++ b/libavfilter/opencl_source.h @@ -19,19 +19,19 @@ #ifndef AVFILTER_OPENCL_SOURCE_H #define AVFILTER_OPENCL_SOURCE_H -extern const char *ff_source_avgblur_cl; -extern const char *ff_source_colorkey_cl; -extern const char *ff_source_colorspace_common_cl; -extern const char *ff_source_convolution_cl; -extern const char *ff_source_deshake_cl; -extern const char *ff_source_neighbor_cl; -extern const char *ff_source_nlmeans_cl; -extern const char *ff_source_overlay_cl; -extern const char *ff_source_pad_cl; -extern const char *ff_source_remap_cl; -extern const char *ff_source_tonemap_cl; -extern const char *ff_source_transpose_cl; -extern const char *ff_source_unsharp_cl; -extern const char *ff_source_xfade_cl; +extern const char ff_source_avgblur_cl[]; +extern const char ff_source_colorkey_cl[]; +extern const char ff_source_colorspace_common_cl[]; +extern const char ff_source_convolution_cl[]; +extern const char ff_source_deshake_cl[]; +extern const char ff_source_neighbor_cl[]; +extern const char ff_source_nlmeans_cl[]; +extern const char ff_source_overlay_cl[]; +extern const char ff_source_pad_cl[]; +extern const char ff_source_remap_cl[]; +extern const char ff_source_tonemap_cl[]; +extern const char ff_source_transpose_cl[]; +extern const char ff_source_unsharp_cl[]; +extern const char ff_source_xfade_cl[]; #endif /* AVFILTER_OPENCL_SOURCE_H */ diff --git a/libavfilter/vf_bwdif_vulkan.c b/libavfilter/vf_bwdif_vulkan.c index 549e814886..981bf76711 100644 --- a/libavfilter/vf_bwdif_vulkan.c +++ b/libavfilter/vf_bwdif_vulkan.c @@ -43,7 +43,7 @@ typedef struct BWDIFParameters { int current_field; } BWDIFParameters; -extern const char *ff_source_bwdif_comp; +extern const char ff_source_bwdif_comp[]; static av_cold int init_filter(AVFilterContext *ctx) { diff --git a/libavfilter/vulkan/Makefile b/libavfilter/vulkan/Makefile index 573eee32c7..b64e687224 100644 --- a/libavfilter/vulkan/Makefile +++ b/libavfilter/vulkan/Makefile @@ -8,5 +8,5 @@ OBJS-$(CONFIG_BWDIF_VULKAN_FILTER) += vulkan/bwdif.o VULKAN = $(subst $(SRC_PATH)/,,$(wildcard $(SRC_PATH)/libavfilter/vulkan/*.comp)) .SECONDARY: $(VULKAN:.comp=.c) libavfilter/vulkan/%.c: TAG = VULKAN -libavfilter/vulkan/%.c: $(SRC_PATH)/libavfilter/vulkan/%.comp +libavfilter/vulkan/%.c: $(SRC_PATH)/libavfilter/vulkan/%.comp $(SRC_PATH)/tools/source2c $(M)$(SRC_PATH)/tools/source2c $< $@ diff --git a/tools/source2c b/tools/source2c index 6e5f123144..05a69bbbff 100755 --- a/tools/source2c +++ b/tools/source2c @@ -25,7 +25,7 @@ name=$(basename "$input" | sed 's/\./_/') cat >$output <<EOF // Generated from $input -const char *ff_source_$name = +const char ff_source_$name[] = EOF # Convert \ to \\ and " to \", then add " to the start and end of the line. -- 2.45.2