This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 8ad7cc6ccd570898fe3b1df3a6817eacdc64fa8e Author: Niklas Haas <[email protected]> AuthorDate: Sun May 17 13:20:37 2026 +0200 Commit: Niklas Haas <[email protected]> CommitDate: Tue Jun 9 01:11:01 2026 +0200 swscale/tests/sws_ops: also print/test micro-op list Tests for changes or regressions in the generated micro-ops. This will be instrumental in my development of the micro-ops optimizer, and my plans to phase out some of the macro-op optimization passes in favor of doing those optimizations on the uop level instead. rgb24 16x16 -> rgb24 16x32: [ u8 +++X] SWS_OP_READ : 3 elem(s) packed >> 0 min: {0 0 0 _}, max: {255 255 255 _} [ u8 ...X] SWS_OP_FILTER_V : 16 -> 32 bilinear (2 taps) min: {0 0 0 _}, max: {255 255 255 _} [f32 ...X] SWS_OP_DITHER : 16x16 matrix + {0 3 2 -1} min: {1/512 1/512 1/512 _}, max: {255.998047 255.998047 255.998047 _} [f32 ...X] SWS_OP_MIN : x <= {255 255 255 _} min: {1/512 1/512 1/512 _}, max: {255 255 255 _} [f32 +++X] SWS_OP_CONVERT : f32 -> u8 min: {0 0 0 _}, max: {255 255 255 _} [ u8 XXXX] SWS_OP_WRITE : 3 elem(s) packed >> 0 (X = unused, z = byteswapped, + = exact, 0 = zero) Retrying with split passes: [ u8 +++X] SWS_OP_READ : 3 elem(s) packed >> 0 min: {0 0 0 _}, max: {255 255 255 _} [ u8 XXXX] SWS_OP_WRITE : 3 elem(s) planar >> 0 (X = unused, z = byteswapped, + = exact, 0 = zero) + translated micro-ops: + u8_read_packed_xyz + u8_write_planar_xyz Sub-pass #1: [ u8 ...X] SWS_OP_READ : 3 elem(s) planar >> 0 + 2 tap bilinear filter (V) min: {0 0 0 _}, max: {255 255 255 _} [f32 ...X] SWS_OP_DITHER : 16x16 matrix + {0 3 2 -1} min: {1/512 1/512 1/512 _}, max: {255.998047 255.998047 255.998047 _} [f32 ...X] SWS_OP_MIN : x <= {255 255 255 _} min: {1/512 1/512 1/512 _}, max: {255 255 255 _} [f32 +++X] SWS_OP_CONVERT : f32 -> u8 min: {0 0 0 _}, max: {255 255 255 _} [ u8 XXXX] SWS_OP_WRITE : 3 elem(s) packed >> 0 (X = unused, z = byteswapped, + = exact, 0 = zero) + translated micro-ops: + u8_read_planar_fv_xyz + f32_dither_xyz_0_3_2_16x16 + f32_min_xyz + f32_to_u8_xyz + u8_write_packed_xyz ... Signed-off-by: Niklas Haas <[email protected]> --- libswscale/tests/sws_ops.c | 33 ++++++++++++++++++++++----------- tests/ref/fate/sws-ops-list | 2 +- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/libswscale/tests/sws_ops.c b/libswscale/tests/sws_ops.c index f3fe518e96..32fcece1b6 100644 --- a/libswscale/tests/sws_ops.c +++ b/libswscale/tests/sws_ops.c @@ -21,6 +21,7 @@ #include "libavutil/pixdesc.h" #include "libswscale/ops.h" #include "libswscale/ops_dispatch.h" +#include "libswscale/ops_internal.h" #include "libswscale/format.h" #ifdef _WIN32 @@ -36,24 +37,34 @@ static int print_ops(SwsContext *ctx, SwsOpList *ops, SwsCompiledOp *out) av_log(NULL, AV_LOG_INFO, " Sub-pass #%d:\n", pass_idx); ff_sws_op_list_print(NULL, AV_LOG_INFO, AV_LOG_INFO, ops); - *out = (SwsCompiledOp) {0}; /* dummy value, will be immediately freed */ - bool has_filters = false; - for (int i = 0; i < ops->num_ops; i++) { - const SwsOp *op = &ops->ops[i]; - if (op->op == SWS_OP_FILTER_H || op->op == SWS_OP_FILTER_V) { - has_filters = true; - break; - } - } + SwsUOpList *uops = ff_sws_uop_list_alloc(); + if (!uops) + return AVERROR(ENOMEM); - if (has_filters) { + int ret = ff_sws_ops_translate(ops, uops); + if (ret == AVERROR(ENOTSUP)) { av_log(NULL, AV_LOG_INFO, " Retrying with split passes:\n"); - return AVERROR(ENOTSUP); + goto fail; + } else if (ret < 0) { + av_log(NULL, AV_LOG_ERROR, "Error translating ops: %s\n", av_err2str(ret)); + goto fail; } + av_log(NULL, AV_LOG_INFO, " translated micro-ops:\n"); + for (int i = 0; i < uops->num_ops; i++) { + char name[SWS_UOP_NAME_MAX]; + ff_sws_uop_name(&uops->ops[i], name); + av_log(NULL, AV_LOG_INFO, " %s\n", name); + } + + *out = (SwsCompiledOp) {0}; /* dummy value, will be immediately freed */ pass_idx++; return 0; + +fail: + ff_sws_uop_list_free(&uops); + return ret; } /* Dummy backend that just prints all seen op lists */ diff --git a/tests/ref/fate/sws-ops-list b/tests/ref/fate/sws-ops-list index 705b26e5cc..44b615a0c8 100644 --- a/tests/ref/fate/sws-ops-list +++ b/tests/ref/fate/sws-ops-list @@ -1 +1 @@ -09abbf1916b75341a4f9a643c8afb97f +900da2b2c6276da01ae3f158d02abf0b _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
