From patchwork Fri Jul 15 14:59:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Kelly X-Patchwork-Id: 36802 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:43a1:b0:8b:53c6:bec9 with SMTP id i33csp344037pzl; Fri, 15 Jul 2022 08:00:24 -0700 (PDT) X-Google-Smtp-Source: AGRyM1snabJuyubQXaunH1SigTdbQZoO4M27DDUFiA3fB4ag2RXzrraaMAKOcCxPX+RHchdff3eQ X-Received: by 2002:a17:907:7fa5:b0:72b:755a:b77e with SMTP id qk37-20020a1709077fa500b0072b755ab77emr14281342ejc.474.1657897223933; Fri, 15 Jul 2022 08:00:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657897223; cv=none; d=google.com; s=arc-20160816; b=cQLk1TxQ3inlBeYcEaCl9v2PqiHjzdSsHxOr0kEFJ8YM+8PXmmJv0I6bpszrs5R7zi hE2Bv5eUB4TO5XqA0mPrb3i+4jmXIbJeWVzUECTxkIr9l3ooElW3i+nL1PRHVGmspTN8 sxUHfdCJlCpmmQzZpI0UBkIB/AZ3+Dn+2RcNa+2z3HYPt9xpUmYfdkC13cUtdGRg4AjC T/y+KhqNC8SAha9hNkXnUkfVjyduxZFtsxHNc4T/sFj0tJkHTqeam9GovZsusSEn2Rx5 9hkyxCTa0rlh9rGTcvhZyBzBTewX1lFtXBhW7QkNGF9jXl1A2kqEO+5Ryfkh6u2UiAV/ 4ipg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:to:from:references:mime-version :message-id:in-reply-to:date:dkim-signature:delivered-to; bh=Q1mzbS+7OBAu6Hso4ep3b7f96y/U9ch+wS15u74dim0=; b=J6UKJq3cJ07YdS/gOZYyv+qfWDWx8prWQGrSnxjphwl7U75+/K109fsC9ylktYbnLh HIghUb017x1TCS7DJl7jv1OolAC0dkgBty8oXoL2an62eRrl28ELNFt7DwoWzNd065fm cO3pxWwcHksjaakkIusgTEwKLx9eJWe+P68SqTtx2H6lDauvepTsBP6nUnCU0x5bFdim Xu0+GBQGE8dZs95Bh0Ju9F7a78HN9OOYX6ELD1/XeKXYv+NaV0CSfHim16+/Rusbpz+T q5mY3HyLbcxhzhixw00DOvPOKXO7ymMZVl/ACQIOcFqPzpyrR10GVr7uTTrzzRnZkWk3 x2jg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20210112 header.b=ljjtmZlA; 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 f14-20020a0564021e8e00b0043aa2e733adsi5363829edf.306.2022.07.15.08.00.01; Fri, 15 Jul 2022 08:00:23 -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; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20210112 header.b=ljjtmZlA; 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 4F4E368B947; Fri, 15 Jul 2022 17:59:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f73.google.com (mail-ed1-f73.google.com [209.85.208.73]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A585468B874 for ; Fri, 15 Jul 2022 17:59:50 +0300 (EEST) Received: by mail-ed1-f73.google.com with SMTP id x8-20020a056402414800b0042d8498f50aso3661375eda.23 for ; Fri, 15 Jul 2022 07:59:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=Vy35k0FnRrFhKgF1HzxfAEfDvmRcIgz1FM5t6eInQVo=; b=ljjtmZlAicxoJRFKv28OjJM1+FNw/Y+nt+3yqHJW27KHvJyKwcIAQ/QfLyBOEhiZ82 2aJtb05J1dc+Noibda5P8bEIcA5bgwAYijEiRVTiGnFg85TLjQkWoZkJxEmkrQs9lRIN 4Lw2UYRZH5MldRf0TpkTi88HO4xAgS1c38KjcxkQhrl8LvM2N5tVmdwbdaYcYQFWP3P2 BJ46AxiPNLPhDpP1pCGdpXrRHylOXK9kKIPxy5/wI0DNx8iVLnNvKfum2/rf0yTOhuhb DUIjDTva7YArcqk1wg/9PKaoXYRa1WzrojXPi4MmqrcPEu/KbHZBQ/Pfb+2YfHq/SPcX 8gSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=Vy35k0FnRrFhKgF1HzxfAEfDvmRcIgz1FM5t6eInQVo=; b=H85fZEcpyX2bk5sn6wcziFmoBYvdVw9kC28qwoEWkyPaRr4TpWCOsqpNQtdulRw+5M 7LGzXamAmbW9V8FyFfV+UzYFRYMCOjoFQ59T5lavsbUhp1um2joWDXQVIgLI4qH9PFGS CT//VFzfvlAXh2ztIPVj1tvyb4ZfLgxpqpy2F1mEml4DbdUJRJ81OAzqxWG7JNVePQIL s/3KzXXn+GcBdAjiyBScnNNGDcZfvDJan66jAiVcBHWDpG87TZ2Ho/z5xR0XKTtgMqIP Nexr4tgcMkym20Yqj5NwwKfcceZoqoN9lNwcfyXOOXC+QCm7mMu+magqJizzH4fN6oVO f9Tw== X-Gm-Message-State: AJIora+43LMEIslRhZFXgif9Kmcs99Z2i8tn/BDfmCyIK5h4xV2Mij9X 94IjnyF9nKbQxmdcHcl1Ld4KQm7Y/smLSUQjJk8SfRe/SM2/UCLiwfize9ihHeINZ/2P3+7RLTx VwubE8MVC6R9uOuzk7nDi3hldgPLuvtaypWn3z8/jMYMEOwpTKPzfoWivYyOrL7krxOh6/Gc= X-Received: from alankelly0.zrh.corp.google.com ([2a00:79e0:9e:2:ccf9:727b:15d3:76a4]) (user=alankelly job=sendgmr) by 2002:a17:907:2854:b0:72b:7daf:cc0d with SMTP id el20-20020a170907285400b0072b7dafcc0dmr13766149ejc.524.1657897189753; Fri, 15 Jul 2022 07:59:49 -0700 (PDT) Date: Fri, 15 Jul 2022 16:59:43 +0200 In-Reply-To: <20220714165612.GC2088045@pb2> Message-Id: <20220715145943.3474147-1-alankelly@google.com> Mime-Version: 1.0 References: <20220714165612.GC2088045@pb2> X-Mailer: git-send-email 2.37.0.170.g444d1eabd0-goog From: Alan Kelly To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH v2 4/5] libswscale: Enable hscale_avx2 for all input sizes. 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: Alan Kelly Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 4VuPvzuyIsS5 ff_shuffle_filter_coefficients shuffles the tail as required. --- libswscale/utils.c | 19 ++++++++++++++++--- libswscale/x86/swscale.c | 6 ++---- tests/checkasm/sw_scale.c | 2 +- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/libswscale/utils.c b/libswscale/utils.c index cb4f5b521c..544b7fee96 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -266,8 +266,7 @@ int ff_shuffle_filter_coefficients(SwsContext *c, int *filterPos, #if ARCH_X86_64 int i, j, k; int cpu_flags = av_get_cpu_flags(); - // avx2 hscale filter processes 16 pixel blocks. - if (!filter || dstW % 16 != 0) + if (!filter) return 0; if (EXTERNAL_AVX2_FAST(cpu_flags) && !(cpu_flags & AV_CPU_FLAG_SLOW_GATHER)) { if ((c->srcBpc == 8) && (c->dstBpc <= 14)) { @@ -279,9 +278,11 @@ int ff_shuffle_filter_coefficients(SwsContext *c, int *filterPos, } // Do not swap filterPos for pixels which won't be processed by // the main loop. - for (i = 0; i + 8 <= dstW; i += 8) { + for (i = 0; i + 16 <= dstW; i += 16) { FFSWAP(int, filterPos[i + 2], filterPos[i + 4]); FFSWAP(int, filterPos[i + 3], filterPos[i + 5]); + FFSWAP(int, filterPos[i + 10], filterPos[i + 12]); + FFSWAP(int, filterPos[i + 11], filterPos[i + 13]); } if (filterSize > 4) { // 16 pixels are processed at a time. @@ -295,6 +296,18 @@ int ff_shuffle_filter_coefficients(SwsContext *c, int *filterPos, } } } + // 4 pixels are processed at a time in the tail. + for (; i < dstW; i += 4) { + // 4 filter coeffs are processed at a time. + int rem = dstW - i >= 4 ? 4 : dstW - i; + for (k = 0; k + 4 <= filterSize; k += 4) { + for (j = 0; j < rem; ++j) { + int from = (i + j) * filterSize + k; + int to = i * filterSize + j * 4 + k * 4; + memcpy(&filter[to], &filterCopy[from], 4 * sizeof(int16_t)); + } + } + } } av_free(filterCopy); } diff --git a/libswscale/x86/swscale.c b/libswscale/x86/swscale.c index 628f12137c..f628c71bd4 100644 --- a/libswscale/x86/swscale.c +++ b/libswscale/x86/swscale.c @@ -626,10 +626,8 @@ switch(c->dstBpc){ \ if (EXTERNAL_AVX2_FAST(cpu_flags) && !(cpu_flags & AV_CPU_FLAG_SLOW_GATHER)) { if ((c->srcBpc == 8) && (c->dstBpc <= 14)) { - if (c->chrDstW % 16 == 0) - ASSIGN_AVX2_SCALE_FUNC(c->hcScale, c->hChrFilterSize); - if (c->dstW % 16 == 0) - ASSIGN_AVX2_SCALE_FUNC(c->hyScale, c->hLumFilterSize); + ASSIGN_AVX2_SCALE_FUNC(c->hcScale, c->hChrFilterSize); + ASSIGN_AVX2_SCALE_FUNC(c->hyScale, c->hLumFilterSize); } } diff --git a/tests/checkasm/sw_scale.c b/tests/checkasm/sw_scale.c index b643a47c30..798990a6cf 100644 --- a/tests/checkasm/sw_scale.c +++ b/tests/checkasm/sw_scale.c @@ -223,7 +223,7 @@ static void check_hscale(void) ff_sws_init_scale(ctx); memcpy(filterAvx2, filter, sizeof(uint16_t) * (SRC_PIXELS * MAX_FILTER_WIDTH + MAX_FILTER_WIDTH)); if ((cpu_flags & AV_CPU_FLAG_AVX2) && !(cpu_flags & AV_CPU_FLAG_SLOW_GATHER)) - ff_shuffle_filter_coefficients(ctx, filterPosAvx, width, filterAvx2, SRC_PIXELS); + ff_shuffle_filter_coefficients(ctx, filterPosAvx, width, filterAvx2, ctx->dstW); if (check_func(ctx->hcScale, "hscale_%d_to_%d__fs_%d_dstW_%d", ctx->srcBpc, ctx->dstBpc + 1, width, ctx->dstW)) { memset(dst0, 0, SRC_PIXELS * sizeof(dst0[0])); From patchwork Fri Jul 15 15:01:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Kelly X-Patchwork-Id: 36803 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:43a1:b0:8b:53c6:bec9 with SMTP id i33csp345222pzl; Fri, 15 Jul 2022 08:01:57 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sEGQMrSdp/ChBKWN+YPIF9ONRQ8cij0wITNNEauUPt/swnVpFOrQ4rg3w5SbTMZMsKlqOV X-Received: by 2002:a05:6402:5418:b0:435:5a48:daa9 with SMTP id ev24-20020a056402541800b004355a48daa9mr19603488edb.304.1657897317465; Fri, 15 Jul 2022 08:01:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657897317; cv=none; d=google.com; s=arc-20160816; b=FwfhGa6B6giawR3s2FXSFrYy6VJRjGGX+axHLb3mI/ehCIpVFuZFUwlXJOzYhpoLMq h7ryHGyFD9ctG+o60Bj9zKN/pWxVA9rfbGWXVw2l1JB+3ibId0WaZgUMfP16J+7bM95n ANrKp1594UtyZ83EB21dbnjazw1RMOpxUgfvJsmH5wYArv4Dq8LIAkaJQLpw9brBKgOI dbtgBVPxW2lmCK/JM6rJLLIxqKbUSj21Jh7Pr2Kiv5afIJRwLmi3Yfpq3SxbBHrGR+oH YvHP6xLY9vN/f+/9sX9clTFa4oIN7O4h5RfZHbJLinkjWzxEXJD9ln2U2jVy3XO2kk3h AegA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:to:from:references:mime-version :message-id:in-reply-to:date:dkim-signature:delivered-to; bh=pi1Lf83vZIPCa7yxxJ4gwhQwhmShKne4Vg1d4wqa+ak=; b=d/M21w39N8XPGIeWg0xddcgD8NxcjDbtpwMzT6DvV3yh/9qA42NC4tkODqEuE7m9Wq DhihWDDR1KLG4l0PKq27p3fcWbb0MilLLmLZq/YOm75ICQ1aeSQBYF6ej0UGN7tcYbTI XdRQ4Qanl3EeFvVnCe10qjNY1hWSvDo8KEYnJB27FgkpFQnx+I4yT0sWjugXLyRHXSf2 QR7QXDEqTr6SLKutJQZnFwwjxv/xNE4bDCARcIva0mfs+3lqtY5KO765/wJi/PfLpkT0 i6chEWZ7KuS3F35qmweRioTTKvJUItLBlCfPj5duDKdv1lvW5R6eEoxZn1gNYFE4mmwW xUvw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20210112 header.b=QfVgXteP; 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 r9-20020a05640251c900b0043a5c64776asi513544edd.435.2022.07.15.08.01.44; Fri, 15 Jul 2022 08:01:57 -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; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20210112 header.b=QfVgXteP; 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 6F1CD68B74F; Fri, 15 Jul 2022 18:01:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f73.google.com (mail-ed1-f73.google.com [209.85.208.73]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A00E368B74F for ; Fri, 15 Jul 2022 18:01:35 +0300 (EEST) Received: by mail-ed1-f73.google.com with SMTP id f9-20020a056402354900b0043a902b7452so3605175edd.13 for ; Fri, 15 Jul 2022 08:01:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=g0Lltvkl7nGQqpxpSuI2QvObDJx3oRwmrnT5MSwCBZQ=; b=QfVgXtePASH5hzmQRprdghG7wpTrBPGKfJOI+fJj1i0ubrf5x0DfV9oKxyQZtqc9Kz tGA++KjFFj4L54zydtyw5mlwOyIpiagK7MCQSY0E+m8Ljvj/Z/T15B2zjv2Rag3u67lH l0T1HTaDD3UEQ8zN6uclNoe6SKZYgNd0Wy79yZTnBgO1FWQYDuqJ8+dXhLA1g5/FUFDq tmCr5MnxD6sxO6FoBoTB16ORV0cAfihZ3YABZi16r25gCzYH53M8xofctNEE1ogMgb2s eK6x9e3pU6MWB8AfyN/WRLS4KrCpEWXXZLdBC0qafvUAinXBoHz5JUC3bIWb6iGKyysM Go4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=g0Lltvkl7nGQqpxpSuI2QvObDJx3oRwmrnT5MSwCBZQ=; b=ynZG2W4/DqbHOgwso/4j9YJ38tTbMr6+QAzxj13QH6FZ75IAo++qcRmiFxjJTSLQaf szef/r0cK4a/1fkdVv6wiX7F3+epa8e5tLNNMQjs40KeRFIn5Q3zFoiWJJmpN+yTi4yr UmHkOFDgU2YHIS0V0ZJ3GxiCxhHLrxWO/3EvX+fMSN1gxn7+sz3/pgZ48wMTKhaK1bAN sDBF9Y3zq3XONFlc5aQ5zGYsITJWD0f3Cu276DHxy/r1u4yR64nvRF5hvOLK5no5V6Lq u8TR6nfCfi789SJGCFLMF3ojJFCNCBuUzquoSOaz34FzxMGNpxXUkxJyyPaUJMjDFni3 +yEA== X-Gm-Message-State: AJIora9Bsi4kiDWUi4pGk121V01WHOO6iO4QB45j97Pk6h5UhGFCu2xv zAVJvwAlw/VKzcvMF9pC0zJpj+0nyYsHL8Z0ZhRPqe8KQxz9jh2hAErHE0Ho4ttrKMyqYqB2R+X 9IAtdbKk9bYZB+aOW/DUi5EvE/DBB9TLPxhLlNfq/R19xO5SFzdhlGx7cSK5CiXo3NeoojiY= X-Received: from alankelly0.zrh.corp.google.com ([2a00:79e0:9e:2:ccf9:727b:15d3:76a4]) (user=alankelly job=sendgmr) by 2002:a05:6402:1c01:b0:43a:f714:bcbe with SMTP id ck1-20020a0564021c0100b0043af714bcbemr19895383edb.14.1657897295086; Fri, 15 Jul 2022 08:01:35 -0700 (PDT) Date: Fri, 15 Jul 2022 17:01:31 +0200 In-Reply-To: <20220217100433.1114010-1-alankelly@google.com> Message-Id: <20220715150131.3474842-1-alankelly@google.com> Mime-Version: 1.0 References: <20220217100433.1114010-1-alankelly@google.com> X-Mailer: git-send-email 2.37.0.170.g444d1eabd0-goog From: Alan Kelly To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH v2 5/5] checkasm/sw_scale: hscale does not requires cpuflag test. 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: Alan Kelly Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 2ahkIPkP4aD/ This is done in ff_shuffle_filter_coefficients. --- tests/checkasm/sw_scale.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tests/checkasm/sw_scale.c b/tests/checkasm/sw_scale.c index 798990a6cf..7be107bef1 100644 --- a/tests/checkasm/sw_scale.c +++ b/tests/checkasm/sw_scale.c @@ -172,8 +172,6 @@ static void check_hscale(void) const uint8_t *src, const int16_t *filter, const int32_t *filterPos, int filterSize); - int cpu_flags = av_get_cpu_flags(); - ctx = sws_alloc_context(); if (sws_init_context(ctx, NULL, NULL) < 0) fail(); @@ -222,8 +220,7 @@ static void check_hscale(void) ctx->dstW = ctx->chrDstW = input_sizes[dstWi]; ff_sws_init_scale(ctx); memcpy(filterAvx2, filter, sizeof(uint16_t) * (SRC_PIXELS * MAX_FILTER_WIDTH + MAX_FILTER_WIDTH)); - if ((cpu_flags & AV_CPU_FLAG_AVX2) && !(cpu_flags & AV_CPU_FLAG_SLOW_GATHER)) - ff_shuffle_filter_coefficients(ctx, filterPosAvx, width, filterAvx2, ctx->dstW); + ff_shuffle_filter_coefficients(ctx, filterPosAvx, width, filterAvx2, ctx->dstW); if (check_func(ctx->hcScale, "hscale_%d_to_%d__fs_%d_dstW_%d", ctx->srcBpc, ctx->dstBpc + 1, width, ctx->dstW)) { memset(dst0, 0, SRC_PIXELS * sizeof(dst0[0]));