From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id D41C649B41 for ; Sun, 3 Mar 2024 18:41:07 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7626968D369; Sun, 3 Mar 2024 20:41:06 +0200 (EET) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04olkn2069.outbound.protection.outlook.com [40.92.74.69]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1095B68C978 for ; Sun, 3 Mar 2024 20:41:00 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WAg1Jgt0J+CO/jQ1oMJjB5nwSNzHIThr+8dxMVbQV3UImStj0J1NjpBug7Of2qfRQMSgx5ETQqZ6D5dGDId3nIjA4H2PUQvscbaWICWFix89q5i+Zu11RjdYUrKirdxfHlkdZiHzRB5bV/5mck+xRXrJSjyECwpWsF2BKOMN3HttKyotQTvdjfgb0drsatlnvwBuJJHmiixZHOvOBSlMZsywREeaYoicvMgc32HAFw0OsrUeJSnZNKQFXDcS14JZvn4THbKBgsfUgFZAE/9ONWrQfDwyJmV/bfwka1K70AbRB2M8QL+XaT6bIpnxIrtLVcAVT3+knAhJpE4oIcxMrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=mhEz+tuDAW2c3SNT9/MJj/0wXF9RcOZ2NRJcTdAvjzs=; b=RXDzATJFCvg+JVkSylmN52markbDeLrs4CKJN6ekrPTuSEpFSJBgxkynOH26+BopXNFk8KyaeQ3kEl3h7jSkncTDMvU2emBRz+ddydyN870qayiWnUYChYtlnZ86qOc7gXJaUZeqvCzLQeylVRdW1VAe+IaRPXJvas9hvybOpbl1OeNp8Jx9LUqlDJG8x/t3/czLUXAffWfBGIc9mGL0ps0J2xU2DtGMJWouLUNkZzXQH4Tro1a++EfDKNyzabr+Bh/BjZjStXxAprbzkL8fDjaiWa5CnGFf7TXcT786RaRsJtQW3v8X2gqQERILe57y71KGWznvqJ2qzhzZV/TGvA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mhEz+tuDAW2c3SNT9/MJj/0wXF9RcOZ2NRJcTdAvjzs=; b=Q8dDQW4mHlH27ipXxy6EivmjRg/KDOTdVW7So9/BPAUUtcnqruVZuYTGiVEBDcJH0HpesZDwMyf5yYmjfMYEnjeuxRJ7aHrjJ9RxWw58/FIrIngaIwPpFfG451Bt8m6yGSUQSoOQ3LMQnvSrS81V9udlY6plRuw5lp+TvRL1qSb91tlvgrbRvwtIhBEMh9Y4r+rymmiup0QfP8Qcw7KyYaKQbqL2jmZKjGh5wLFFstA+agYbPkKlMU7SYPzMAw2dX+ySBve/Bgov78LBBmkpA1hCLtSR5LAouquO7PZ52mHhVBQQ7nMVoRqAyGIMpljdAuMd+CBv8oy7SB8DONYWmw== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PRAP250MB0538.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:295::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7339.37; Sun, 3 Mar 2024 18:40:58 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7316.023; Sun, 3 Mar 2024 18:40:58 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Mar 2024 19:42:44 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [NfvCGhXTsAb/sQ+YyjAd+uxfGwwamxmvUgzFBhTMUXU=] X-ClientProxiedBy: ZR2P278CA0066.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:52::20) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240303184250.541590-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PRAP250MB0538:EE_ X-MS-Office365-Filtering-Correlation-Id: 6449e25a-eb0d-422f-743b-08dc3bb17765 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnqnx/C+6DC/TIciLJ1/n0VppyECWal18tgCc953MNGsoNsOdqytkif56EoTRph/Sg/WqjUrACA1ZHr9AuENlUwb82sHcmiROYVq4uNJ1bCvwU3JHtPYwsViWfIn+3veGsIiV9glnRjMEHhrovg70fPnOpBoohh6VSvab79e0hLPyD91dh/WRjQ9FRTdlEHUh58SiToxfXZHrshhhmq4DPImklGFuXNNQfEJuADLXMNTAoxYCG0KRzYpvsDqfUPT1BRhjMUbn37IGAU0EI1ueReWR8AXqSxo67kS+OkEa0aaL7kzSMMFSOapUjxM5hPBTUEepTqXeXt294WfehV9djREJncZycD2loG4RG+UfwRzV3hvAfEq/uqvbAECX6eihKEVSTdRt2FLdyy4KQFkJeKiW+gofP8J3Jae0TqpABwl9vKWpbrk4A1PP6Rmy3xaLyz0yWKfDhY8k0v9YOMx3NBo5CEmFdWKFW4sSdY6YzdfUiRZQ57csguOj88rHyxFNzUV1s3HGIev4VdjcPD8cuJlPeAXqXx+9dSOViGW2wFe4j9eEV0YjiB4q85wz/xIxQaoxGTTdhX2dV02929GSSqkStIBmdiFGDQ2x+cQhDWLb/zjxXwkra/RHWi8AwtLYK95EsYjRpXOOKJqjsuFk6TVMcMEesjf7bX4eAhnux/4+zjoDsm0EwQe1PZX+ZQGDIKp2anuPqgF30EvVfiZ331TEAkl48mvVP6RB95kSHGjeL7ZDsXSoR1sgGXb9XFBhec= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OK3S8H0pCrbLdCjzKWb/s7GFzP8vFUtLfky/yCAR4Y4b21BKDK38Vl5kldFFDJ2JwSf4Le3KhtvVdg9YDRdm8rfTEMZSJIWEvvDJFIlAIVUtUQY6MMQX6cfseMf3BiVtqvsKpgGFhJBJbezIdyHXcZRqNETWRJC7MFBmzMaS7EtbNcZ/ed545wDbXcX/HQSVZzBi3wC26y/dGfGlOk1JhAmbAFl8XltexeLU7/6/Vui9QnrD650Ai1ZF1kldLX7gsN19v+vnky44PiJCXgnu213tRzBR8CIZ8rkOlTwZZz8EV2XyPI2vdSjLDPpa8L4HPMpt4GF95PvZeeC5lOzNtmKwcGmZ/Yo0iIaKEEdvian6ArUDgBKZb8+6XMiwJNiCq079AoFHt9Y6u6uEQvtmbu5o70XktoBDQxY6bA7XJsaDd5mtZu+BHMteUY0qKdbhQK1Qzhcr9TzdIqkSqvHD09Rol2Utw0wIdOG1RTLang1SUXpbSB9msKdlQSiaQyAaqW/gdTU8jxrzsHGaRfV4jeTMhK/TztP7jPujuUGeLes5uQmvwewXfU2iZsRA0IhgXVtLqKf2PXZaHxj8GbGmyTvVQFkv5Or9qnNfK02CJlmxbdoiY4sWAmLoCBb+uDk7 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?HuPVL97GwOEfR6z+hMUKOJiUTJUOw2uNUK69ynwiXD+m/P6FiHYSVRQ9nfBB?= =?us-ascii?Q?J861af2r8iJKR8WkF5en5YpZl8KFVf+4v+rWinHYeqHJSkRtIIXkYF6kU/ca?= =?us-ascii?Q?iq6phlggE8+03R2JAGF47As6i8p7ULCK6cmjPS0H+deGeJuSlgpMyy18QPr0?= =?us-ascii?Q?HIEkWklmLVKvlt1u/TmOhkC4CsnhejlGsQPXSmCLrj2PrqT4cJoKR8GKflIW?= =?us-ascii?Q?KoUv1cbLFKboEHa0/avWsS+Uf+xzHmehkhvqiKCrZmGtU5g+USY3UWnllqZB?= =?us-ascii?Q?e7qBNd302QZTRyFiMc7ZDBQitvkAsfHIDLUBrhAh2N2FcNtI+hGAykzo72FF?= =?us-ascii?Q?QqF8l4GCH++JHT+Lf0Xz+8u7IxyM43Kr4pXZzJoN51e/gbrfZJK0OivVWUdw?= =?us-ascii?Q?OoGefi3yGRSqbzSmyr5Adudmkm+yGX0Smc9z0+HqL4iKOQZr4muP6ZymKAni?= =?us-ascii?Q?+0nYAkWkGSSTnEtMw9MzQY51RBPptl4mw+1zZUd7A8fwMeGotUnosTkm+JiK?= =?us-ascii?Q?quNB1QfGDFoUdUhisRtXZ0hvh2iaOUCClfnohLrnqKe8eEPop3S8j2ltT1LM?= =?us-ascii?Q?6AYrxZsk58khKhYTOdTF7bfHeFHelUPGMyRSXk4MnlyI8oC4prIFA5AuJ3O+?= =?us-ascii?Q?BVsh2Up3HnKB5TTp/SXri+c8ThzeZp77liVxvcIxfmVCCYu677ePz4t5MGCG?= =?us-ascii?Q?8UML70LYz8N3UmxtqiSzYlak4iwrOmtpmexYnof7oG/yDXfL7qp/oGy98LyF?= =?us-ascii?Q?/0VyrtS2DbKPXQD+Mf66g2HphBGB+Csyh4Q879gAiHMy0Z6/z81oxvxfSaAv?= =?us-ascii?Q?MBzrzehQfwRqMOB3gXeRG4GTnB+zPc5eWYr+zzM5F4LwvGbb6epxle9G9GfX?= =?us-ascii?Q?M/ZZ+Z+FTDSL4szDUO89qvO2YUGByeEezUp6/FqKRNOPlEdaHqAFmF1x2riD?= =?us-ascii?Q?bIkc0FQSdKBG07shLR7qG2viqr0TJ29eScznrGzprGBCaxlXqnVRLMHH1cM8?= =?us-ascii?Q?uwJ1uOAVI12sSPbLuRa0AwRI99+5SHG9XCSjwqX/EENAc/9+ASlEF4BP7umd?= =?us-ascii?Q?eQCFe+Uwf2QpdLfROGCJjSMXawql1fIVvugVA8wpkuzqDqCVMPZfMsaPYga/?= =?us-ascii?Q?81AMi4Vf9Ecrw61+DBfRpJGi25aKFmo12eVg560TFcVXvYMvsgX0hLdsD5+w?= =?us-ascii?Q?U/gqmyW2DHPD1M6yoRmokbCyO2i9xn3Zt4I1tjGX4SlJLufdpp9U5/jsH5S/?= =?us-ascii?Q?ToLIGibTEVGFLGgl+xViunTRsmYpgOxvrbyKxsuEUA=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6449e25a-eb0d-422f-743b-08dc3bb17765 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Mar 2024 18:40:57.9695 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PRAP250MB0538 Subject: [FFmpeg-devel] [PATCH 2/8] avutil/vulkan_loader: Avoid redundant strings and relocations 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: , Reply-To: FFmpeg development discussions and patches Cc: Andreas Rheinhardt Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: There are three possible names for the functions requested; they only differ in an extension: "", "EXT" or "KHR". Yet vk_load_info contained pointers to all these strings. This is wasteful and this commit changes it to avoid the latter two strings. This saves 6353B of strings, 1776 B of .data.rel.ro as well as 5328 B due to the removed relocations (corresponding to 2 * 111 removed pointers) in lavc/vulkan_decode.o alone (ff_vk_load_functions() is inlined in lavfi/vulkan_filter.c, lavu/hwcontext_vulkan.c and lavc_vulkan_decode.c, so the savings are three times this for shared builds; for static builds, the number may be smaller depending upon whether strings are deduplicated). Signed-off-by: Andreas Rheinhardt --- libavutil/vulkan_loader.h | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/libavutil/vulkan_loader.h b/libavutil/vulkan_loader.h index f88722f28f..07b6316089 100644 --- a/libavutil/vulkan_loader.h +++ b/libavutil/vulkan_loader.h @@ -19,6 +19,9 @@ #ifndef AVUTIL_VULKAN_LOADER_H #define AVUTIL_VULKAN_LOADER_H +#include + +#include "avassert.h" #include "vulkan_functions.h" /* Macro to turn a function name into a loader struct */ @@ -28,7 +31,7 @@ req_dev, \ offsetof(FFVulkanFunctions, name), \ ext_flag, \ - { "vk"#name, "vk"#name"EXT", "vk"#name"KHR" } \ + "vk"#name, \ }, static inline uint64_t ff_vk_extensions_to_mask(const char * const *extensions, @@ -98,7 +101,7 @@ static inline int ff_vk_load_functions(AVHWDeviceContext *ctx, int req_dev; size_t struct_offset; FFVulkanExtensions ext_flag; - const char *names[3]; + const char *name; } vk_load_info[] = { FN_LIST(PFN_LOAD_INFO) #ifdef _WIN32 @@ -108,6 +111,8 @@ static inline int ff_vk_load_functions(AVHWDeviceContext *ctx, for (int i = 0; i < FF_ARRAY_ELEMS(vk_load_info); i++) { const struct FunctionLoadInfo *load = &vk_load_info[i]; + static const char extensions[][4] = { "", "EXT", "KHR" }; + const char *name = load->name; PFN_vkVoidFunction fn; if (load->req_dev && !has_dev) @@ -115,15 +120,19 @@ static inline int ff_vk_load_functions(AVHWDeviceContext *ctx, if (load->req_inst && !has_inst) continue; - for (int j = 0; j < FF_ARRAY_ELEMS(load->names); j++) { - const char *name = load->names[j]; + for (int j = 0; j < FF_ARRAY_ELEMS(extensions); j++) { + char ext_name[128]; + av_unused int n; + + n = snprintf(ext_name, sizeof(ext_name), "%s%s", name, extensions[j]); + av_assert1(n < sizeof(ext_name)); if (load->req_dev) - fn = vk->GetDeviceProcAddr(hwctx->act_dev, name); + fn = vk->GetDeviceProcAddr(hwctx->act_dev, ext_name); else if (load->req_inst) - fn = hwctx->get_proc_addr(hwctx->inst, name); + fn = hwctx->get_proc_addr(hwctx->inst, ext_name); else - fn = hwctx->get_proc_addr(NULL, name); + fn = hwctx->get_proc_addr(NULL, ext_name); if (fn) break; @@ -131,7 +140,7 @@ static inline int ff_vk_load_functions(AVHWDeviceContext *ctx, if (!fn && ((extensions_mask &~ FF_VK_EXT_NO_FLAG) & load->ext_flag)) { av_log(ctx, AV_LOG_ERROR, "Loader error, function \"%s\" indicated " - "as supported, but got NULL function pointer!\n", load->names[0]); + "as supported, but got NULL function pointer!\n", name); return AVERROR_EXTERNAL; } -- 2.40.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".