This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 314b034a3495739438adf9894e6fb7a84a0279b6 Author: Niklas Haas <[email protected]> AuthorDate: Sat Nov 7 14:35:16 2026 +0100 Commit: Niklas Haas <[email protected]> CommitDate: Sun Nov 8 01:48:12 2026 +0000 swscale/aarch64/ops: add helper to determine the priv size per op So that the generated kernels can, in a following commit, skip over the data that each kernel consumes. aarch64_priv_size() must match what aarch64_setup() packs, which is now also asserted. The generated code is unchanged. Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Niklas Haas <[email protected]> --- libswscale/aarch64/ops.c | 1 + libswscale/aarch64/ops_impl.h | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/libswscale/aarch64/ops.c b/libswscale/aarch64/ops.c index 6dfc20b420..46970f7bf5 100644 --- a/libswscale/aarch64/ops.c +++ b/libswscale/aarch64/ops.c @@ -192,6 +192,7 @@ static int compile_uops_aarch64(SwsContext *ctx, const SwsUOpList *uops, ret = aarch64_setup(&uops->ops[i], ¶ms, &res); if (ret < 0) goto error; + av_assert1(res.priv_size == aarch64_priv_size(¶ms)); ret = ff_sws_op_chain_append(chain, func, res.ref, &res.priv, sizeof(res.priv)); av_refstruct_unref(&res.ref); if (ret < 0) diff --git a/libswscale/aarch64/ops_impl.h b/libswscale/aarch64/ops_impl.h index ddd0c56bb4..d6a4f46135 100644 --- a/libswscale/aarch64/ops_impl.h +++ b/libswscale/aarch64/ops_impl.h @@ -82,6 +82,30 @@ static inline int linear_num_vregs(const SwsAArch64OpImplParams *params) return (count + nelems - 1) / nelems; } +/** + * Number of bytes of private data consumed by each kernel; must match what + * aarch64_setup() packs. + */ +static inline int aarch64_priv_size(const SwsAArch64OpImplParams *params) +{ + switch (params->uop) { + case SWS_UOP_READ_BIT: + case SWS_UOP_WRITE_BIT: + case SWS_UOP_CLEAR: + case SWS_UOP_MIN: + case SWS_UOP_MAX: + return 16; /* one full vector register */ + case SWS_UOP_SCALE: + return ff_sws_pixel_type_size(params->type); + case SWS_UOP_LINEAR: + case SWS_UOP_LINEAR_FMA: + case SWS_UOP_DITHER: + return 8; /* pointer */ + default: + return 0; + } +} + /** * These values will be used by ops_asmgen to access fields inside of * SwsOpExec and SwsOpImpl. The sizes are checked in aarch64/ops.c when -- To stop receiving notification emails like this one, please contact [email protected]. _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
