Home - Waterfall Grid T-Grid Console Builders Recent Builds Buildslaves Changesources - JSON API - About

Builder ffmpeg-solaris10-i386 Build #13932

Results:

Failed shell_2 shell_3 shell_4 shell_5

SourceStamp:

Projectffmpeg
Repositoryhttps://git.ffmpeg.org/ffmpeg.git
Branchmaster
Revision941a35149b68d29c780896b50c962f3f544114d0
Got Revision941a35149b68d29c780896b50c962f3f544114d0
Changes34 changes

BuildSlave:

unstable10x

Reason:

The SingleBranchScheduler scheduler named 'schedule-ffmpeg-solaris10-i386' triggered this build

Steps and Logfiles:

  1. git update ( 11 secs )
    1. stdio
  2. shell 'gsed -i ...' ( 0 secs )
    1. stdio
  3. shell_1 'gsed -i ...' ( 0 secs )
    1. stdio
  4. shell_2 'gsed -i ...' failed ( 0 secs )
    1. stdio
  5. shell_3 './configure --samples="../../../ffmpeg/fate-suite" ...' failed ( 8 secs )
    1. stdio
    2. config.log
  6. shell_4 'gmake fate-rsync' failed ( 0 secs )
    1. stdio
  7. shell_5 '../../../ffmpeg/fate.sh ../../../ffmpeg/fate_config.sh' failed ( 0 secs )
    1. stdio
    2. configure.log
    3. compile.log
    4. test.log

Build Properties:

NameValueSource
branch master Build
builddir /export/home/buildbot/slave/ffmpeg-solaris10-i386 slave
buildername ffmpeg-solaris10-i386 Builder
buildnumber 13932 Build
codebase Build
got_revision 941a35149b68d29c780896b50c962f3f544114d0 Git
project ffmpeg Build
repository https://git.ffmpeg.org/ffmpeg.git Build
revision 941a35149b68d29c780896b50c962f3f544114d0 Build
scheduler schedule-ffmpeg-solaris10-i386 Scheduler
slavename unstable10x BuildSlave
workdir /export/home/buildbot/slave/ffmpeg-solaris10-i386 slave (deprecated)

Forced Build Properties:

NameLabelValue

Responsible Users:

  1. Niklas Haas

Timing:

StartTue Jun 9 19:05:10 2026
EndTue Jun 9 19:05:32 2026
Elapsed21 secs

All Changes:

:

  1. Change #270172

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Mon 08 Jun 2026 18:24:45
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 48a42b5f215a54271d212d9e388ec3b4c88194dc

    Comments

    configure: add -P to $CC_E flag
    This suppresses the addition of #line directives in the preprocessed output,
    which is what we want when we're invoking the hostcc just to preprocess some
    files. (Currently, this variable is only used for configure-internal checks
    anyways, but I want to use it to preprocess a NASM file)
    
    On MSVC/Intel, /EP is the equivalent syntax, though we use -EP instead for
    consistency.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • configure
  2. Change #270173

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Mon 08 Jun 2026 18:29:02
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision ae6f3ce02cd60deb7076222a3f385a8170b50729

    Comments

    swscale/uops: split off from ops.h
    Forming what will be the start of a larger helper file for backend-internal
    translation of higher-level ops into lower level kernels. This header file
    needs to be includable from independent source files, as it will be used to
    provide definitions for build-time code generation (e.g. ops_asmgen.c), so
    it must be self-contained.
    
    Pulling in all of ops.h from uops.h would be too large dependency, since
    ops.h pulls in graph.h, refstruct, bprint, etc. It's easier to start from a
    fresh file that is documented as being usable at compile time.
    
    For now, just declare the common types that will be needed by the uops layer.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/ops.h
    • libswscale/uops.h
  3. Change #270174

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 01:09:34
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision dc88bcdf8c7e49b2c831418cc68d26f1f20a20e1

    Comments

    swscale/uops: add uop definitions
    Taken from AARCH64_OP_*, but generalized/simplified a bit and updated to add
    missing op types, especially for special cases that already have dedicated
    implementations on x86.
    
    This initial definition is kept intentionally simple and close to SwsOp, to
    make it easier to port the existing ops backends to the new infrastructure.
    However, in the future, this will be refactored dramatically - distinctions
    like convert vs expand will cease to exist on the SwsOp level, and will
    instead be introduced by separate optimization passes on the uops level.
    
    SWS_UOP_LINEAR in particular will most likely be broken up into multiple
    uops. I also took this opportunity to redefine the mask in a more useful way.
    
    I decided to split up SWS_OP_CONVERT as well, because it was making x86
    codegen unnecessarily difficult due to the strong interaction between exact
    pixel sizes.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/Makefile
    • libswscale/uops.c
    • libswscale/uops.h
  4. Change #270175

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 01:10:39
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision aaf6a52fe67811e192bf278b40405916de99854d

    Comments

    swscale/uops: add uop translation logic
    This will replace the fuzzy matching logic in op_match() that is used by the
    C and x86 implementations, as well as the translation to AARCH64_OP_* that is
    used by the NEON asmgen backend.
    
    Down the line, this function will also take a set of flags to enable
    backend-specific kernels like FMA variants, but I also decided to keep it
    initially simple to ease the transition.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/uops.c
    • libswscale/uops.h
  5. Change #270176

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 01:10:49
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision dcfe3d3b904076afeb9aedb5387ea6b758bd160f

    Comments

    Revert "swscale/tests/sws_ops: add option for summarizing all operation patterns"
    This reverts commit f76aa4e4087569f99af1b4d87c04f160fb2378ce.
    
    This is no longer needed once we switch to uops_macros.h, which will do the
    same thing except better.

    Changed files

    • libswscale/tests/sws_ops.c
  6. Change #270177

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 01:10:54
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 6b751667583c392e3fd941e0691cdaf0e0284238

    Comments

    swscale/tests/sws_ops: minor cleanup / consistency
    Clean up after the previous revert.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/tests/sws_ops.c
  7. Change #270178

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 01:10:57
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 3a7331d311e4fee2562da5bf7c9d10839f5240d6

    Comments

    swscale/ops: remove unused function ff_sws_enum_ops()
    Users can trivially recreate this logic anyways.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/ops.c
    • libswscale/ops.h
  8. Change #270179

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 01:11:01
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 8ad7cc6ccd570898fe3b1df3a6817eacdc64fa8e

    Comments

    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 <git@haasn.dev>

    Changed files

    • libswscale/tests/sws_ops.c
    • tests/ref/fate/sws-ops-list
  9. Change #270180

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision adaf1426470614259c1960a9cfc3c31b071eaefc

    Comments

    swscale/uops: generate uop helper macros
    This follows the same approach as is used currently by ops_entries_aarch64,
    except I decided to have the generation logic live directly in uops.c
    to allow re-using internal helpers and move it closer to the other helpers
    that depend on the exact set of uops and their fields.
    
    Unlike libswscale/tests/sws_ops.c, we make an effort to actually test all
    relevant flag combinations, since these can affect the generated op lists.
    
    I will use these macros to auto-generate both the C template-based kernels,
    as well as the entire x86 backend, in the near future, hence their excessive
    flexibility.
    
    Re-use the libswscale/tests/sws_ops.c that we already compile. We could put it
    in its own file but this is just as convenient, and it's easily moved anyways.
    Having it be a FATE test ensures that it is always up-to-date.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/tests/sws_ops.c
    • libswscale/uops.c
    • libswscale/uops.h
    • libswscale/uops_macros.h
    • tests/fate/libswscale.mak
    • tests/ref/fate/source
  10. Change #270181

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 1e268fbedf893ed827453c13f0b139ca67f0696e

    Comments

    swscale/ops_chain: add uop-based helpers to assemble SwsOpChain
    This will eventually replace the existing op_match() and
    ff_sws_op_compile_tables(), but I've decided to introduce it separately first
    so that I can incrementally update the backends to use the new API, at the
    cost of some temporary code duplication.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/ops_chain.c
    • libswscale/ops_chain.h
  11. Change #270182

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 8118e964bbe5acd0ec6a7665208ec9d3038c692f

    Comments

    swscale/uops: auto-generate reference C backend from uops_macros.h
    Instead of choosing by hand which kernels to implement, this rewrite focuses
    on leveraging the power of uops_macros.h to auto-generate all needed kernels.
    This not only simplifies maintenance, but also improves performance.
    
    I have decided to develop the replacement backend as a separate file, under
    a separate prefix, for the explicit purpose of being able to verify the
    correctness of the rewrite using the current backend as a checkasm reference.
    
    The code for the kernels themselves has been largely copied from the old
    C backend, modified slightly to conform to the uop template style. This does
    result in some code duplication, but a following commit will clean it up.
    I nonetheless want to preserve this commit for bisection purposes, to ensure
    we have one commit that contains both backends side-by-side.
    
    Overall speedup=1.182x faster, min=0.197x max=3.450x
    
    The big slowdowns are flukes caused by tiny deviations in the runtime of
    a noop memcpy conversion.
    
    As a nice side benefit, the compiled binary is now also ~10% smaller, and
    the code ~50% smaller.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/Makefile
    • libswscale/ops.c
    • libswscale/uops_backend.c
    • libswscale/uops_tmpl.c
    • libswscale/uops_tmpl.h
  12. Change #270183

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision c5c9c6d996d8543c64667bebf67665037f63ff7b

    Comments

    swscale/x86: rename ops_common.asm to ops_include.asm
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/aarch64/ops_asmgen.c
    • libswscale/x86/ops_common.asm
    • libswscale/x86/ops_float.asm
    • libswscale/x86/ops_include.asm
    • libswscale/x86/ops_int.asm
  13. Change #270184

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision b328e152a49ae6c96ae978c28a8205feb7777570

    Comments

    swscale/x86: move entry points to ops_common.asm
    As well as the packed shuffle solver. These don't really interact with
    the rest of the code in ops_int.asm, which is, by name at least, intended for
    integer op kernels.
    
    More importantly, these functions will be shared with the uops rewrite.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/x86/Makefile
    • libswscale/x86/ops_common.asm
    • libswscale/x86/ops_int.asm
  14. Change #270185

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 19652a83a28c8b01be4039e65cd23d95310ec645

    Comments

    swscale/x86/ops_include: use %assign instead of %xdefine
    For numeric 1/0 constants. As an aside, fix the broken comment.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/x86/ops_include.asm
  15. Change #270186

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision ca8774b9d61bef432a75f77e5b9461f18800d83c

    Comments

    swscale/x86: remove broken and unnecessary 1x1 dither fast path
    This is broken because it fails to check dither.y_offset[] to determine if
    dithering for a channel is requested or not.
    
    This is unnecessary because the generic dither code already jumps over unused
    components, which is cheap enough not to worry about this special case for
    now.
    
    This code will, in any case, soon be replaced by a uops_macros.h-derived
    approach. This commit is only needed as a stopgap to make checkasm continue
    working after the sws_uops refactor.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/x86/ops.c
    • libswscale/x86/ops_float.asm
  16. Change #270187

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 636b9eda7526c644c296003f52d317dc6688ad73

    Comments

    swscale/ops_tmpl_float: allow arbitrary values for 1x1 dither
    Removes the 1x1 dither fast path, mirroring the previous commit.
    
    This is not really needed nor useful but it will make the transition to
    the uops architecture slightly easier, as 1x1 dither gets reinterpreted
    as SWS_UOP_ADD there.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/ops_tmpl_float.c
  17. Change #270188

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 100ce4ac412ca80146f7f7d0042acce9c77ab006

    Comments

    tests/checkasm/sw_ops: rewrite using uops_macros.h
    This ensures 100% coverage of all uop primitives by generating the set of
    tests exactly from the list of seen primitives, using the uops macros.
    
    There are some annoying quirks still because of the fact that we have to
    essentially "untranslate" the UOPs back to SwsOps that result back in the
    intended uop after the translation, but overall it's not too bad and still
    much better than the status quo of hand-rolling the list of test cases.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • tests/checkasm/sw_ops.c
  18. Change #270189

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision b7a80a9f0df760fbd5960374d25d450d7040f810

    Comments

    swscale/ops_backend: delete ops-based C backend
    And make uops_backend.c the new reference.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/Makefile
    • libswscale/ops.c
    • libswscale/ops_backend.c
    • libswscale/ops_backend.h
    • libswscale/ops_tmpl_common.c
    • libswscale/ops_tmpl_float.c
    • libswscale/ops_tmpl_int.c
    • libswscale/uops_backend.c
  19. Change #270190

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 3f9219d60527ffeb30f4c35557e67f8c1e0b4f54

    Comments

    swscale/uops: add SwsUOpFlags to ff_sws_ops_translate()
    These will be used to e.g. enable extra uops during translation.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/tests/sws_ops.c
    • libswscale/uops.c
    • libswscale/uops.h
    • libswscale/uops_backend.c
  20. Change #270191

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 02a168a576c19aa1c2f0ba58bc4055cfb1f32079

    Comments

    swscale/uops: keep track of input range during op translation
    Needed for the FMA decision logic.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/uops.c
  21. Change #270192

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision f97ba8cbe78a750f9dc1c8d894f943ecdd7675d6

    Comments

    swscale/uops: loop over all flags when generating macros
    This list is currently empty but will be expanded by the following commit.
    
    I briefly tested whether it would be worth avoiding the free/realloc on
    the uops array, but found the performance difference to be negligible.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/uops.c
  22. Change #270193

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 157f586e5cd3bf0bc083f02c9f8e16740bb5ceba

    Comments

    swscale/uops: thread SwsContext through ff_sws_ops_translate()
    Needed to access ctx->flags, in particular SWS_BITEXACT.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/tests/sws_ops.c
    • libswscale/uops.c
    • libswscale/uops.h
    • libswscale/uops_backend.c
  23. Change #270194

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 4e18068165c7bbc965068d5fad9377ececb9ca60

    Comments

    swscale/uops: also generate macros under SWS_BITEXACT
    And SWS_BITEXACT|SWS_ACCURATE_RND, for completeness. This roughly doubles
    the runtime of the uops macros generation. Let's hope it doesn't explode
    further.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/uops.c
  24. Change #270195

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision dbe961b4cdb9e669890424f02082d90d4483faa3

    Comments

    swscale/uops: add SWS_UOP_LINEAR_FMA and SWS_UOP_FLAG_FMA
    This is like SWS_UOP_LINEAR but parametrized by which matrix entries can use
    FMA instead of bitexact IEEE mul/add instructions.
    
    I decided to make these a separate uop to avoid bogging down the reference
    backend with arch-specific details like FMA. However, I think FMA ops are quite
    common/universal so I pre-emptively split it into its own separate flag rather
    than defining something like SWS_UOP_FLAG_X86.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/uops.c
    • libswscale/uops.h
    • libswscale/uops_macros.h
  25. Change #270196

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 4a8a1f5b8b70bfd563b83e88a9c20b5e55ecb39e

    Comments

    swscale/uops: add SWS_UOP_READ_PLANAR_FV_FMA
    Analog of SWS_UOP_READ_PLANAR_FV for FMA-enabled backends.
    The logic for determining when we can safely use FMA is maybe a bit
    obtuse, given that a `return type == SWS_PIXEL_U8` would have just done
    the trick as well, but better to be safe than sorry, if we ever decide to
    tune this constant in the future.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/uops.c
    • libswscale/uops.h
    • libswscale/uops_macros.h
  26. Change #270197

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 6057759ffc86406d5839fbd4d485a784f3ef3285

    Comments

    swscale/uops: parametrize filter op result type
    The ops.h infrastructure currently hard-codes this as SWS_PIXEL_F32,
    but I want to at least properly parametrize this in case we ever
    decide to revisit this decision in the future. In particular, it
    may become relevant for trivial kernels or kernels whose intermediates
    are bounded, exact integers (which could possibly be output directly
    as e.g. U16 or U32).
    
    The FATE change is just because the filter op names gained a suffix.
    
    Sponsored-by: Sovereign Tech Fund
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/uops.c
    • libswscale/uops.h
    • libswscale/uops_macros.h
    • libswscale/uops_tmpl.c
    • tests/ref/fate/sws-ops-list
  27. Change #270198

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 6deae052a232194f6794936196fd9783d09f9784

    Comments

    swscale/x86/uops: generate NASM macros using uops_macros.h
    Rather than hard-coding a separate set of NASM macros, or generating them
    with a separate function, we can just leverage the C preprocessor to generate
    a NASM source file *from* the existing ops macros.
    
    This is maybe a bit unorthodox, but it avoids unnecessary overhead from
    re-generating the macros twice, avoids manual updating of the NASM macros,
    and generally does not come with any real downside except being a bit ugly.
    
    The main source of ugliness is the fact that the C preprocessor expands
    everything into a single line, whereas NASM expects separate statements to
    be on separate lines. Very fortunately, we can work around this by writing a
    another NASM macro to take its arguments and dump them onto multiple lines.
    
    It may seem premature, but I went ahead and defined all the macros, since
    it was easy enough to do.
    
    I added the %include in this commit to trigger build errors that occur only
    as a result of introducing this file in the same commit that introduces it.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • .gitignore
    • ffbuild/common.mak
    • libswscale/x86/Makefile
    • libswscale/x86/ops_include.asm
    • libswscale/x86/uops_macros.asm.h
    • tests/ref/fate/source
  28. Change #270199

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 2a09d0346e9ea02547b98b7d3a9eaf01e574d265

    Comments

    swscale/x86/ops_include: clarify/fix some comments
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/x86/ops_include.asm
  29. Change #270200

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 257f1438a51dc48eb394a7e64a7635e027eace98

    Comments

    swscale/x86/ops: simplify mmsize determination
    No reason for this to be a separate function also, it just obscures
    the error path for no reason.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/x86/ops.c
  30. Change #270201

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 43a8e2da01f446c1bddc0edc5cd561bbef7890b1

    Comments

    swscale/x86/ops: rewrite based on uops_macros.h
    This is a ground-up refactor of the existing x86 ops code, using the new
    uops macros to auto-generate every single kernel instance without guesswork.
    
    While I was at it, I also cleaned up the file a bit and made sure we have only
    a single, consistent way of writing/defining the kernels. This also gets rid
    of some of the old boilerplate like decl_pattern.
    
    Most kernels are trivial ports, but a few deserve attention or note:
    
    - SWS_UOP_LINEAR is now generated more efficiently, thanks to the distinction
      between 0/1/arbitrary components. I also rewrote the code to keep track of
      whether the output was initialized yet or not, which lets us skip the
      initial `xorps` and `addps` for the first component.
    
    - SWS_UOP_PERMUTE is generated automatically by using some NASM logic to
      detect permutation cycles and emit the minimal sequence of `mova`
      instructions. SWS_UOP_COPY, on the other hand, is implemented naively. I
      originally had a more complex implementation that could handle both, but
      I decided it really isn't worth the complication just to save 2-3 cycles.
    
    - SWS_UOP_SCALE now has a native 8-bit implementation, which is faster than
      falling back to C code.
    
    - SWS_UOP_SWAP_BYTES is no longer compiled as a type-agnostic pshufb, instead
      we hard-code the shuffle mask
    
    - SWS_UOP_DITHER is now much simpler and avoids branching etc. entirely
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/x86/ops.c
    • libswscale/x86/ops_float.asm
    • libswscale/x86/ops_include.asm
    • libswscale/x86/ops_int.asm
  31. Change #270202

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision a7c6a5f74e93cfb2fe69a00d82bbce84f588c664

    Comments

    swscale/ops_chain: remove dead code
    This is no longer needed now that both C and x86 are ported to uops.
    The other ff_sws_setup_*() functions are still used by the aarch64 backend.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/ops_chain.c
    • libswscale/ops_chain.h
    • libswscale/uops_backend.c
    • libswscale/x86/ops.c
  32. Change #270203

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 228ef8d97bc021630a5956cafb041d017cbe1593

    Comments

    swscale/ops: make compile() take const SwsOpList *
    The old x86 backend was the only backend that actually mutated the ops list.
    With this gone, we can constify this parameter.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/aarch64/ops.c
    • libswscale/ops_dispatch.h
    • libswscale/ops_memcpy.c
    • libswscale/tests/sws_ops.c
    • libswscale/uops.c
    • libswscale/uops_backend.c
    • libswscale/vulkan/ops.c
    • libswscale/x86/ops.c
  33. Change #270204

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 36004d681f9aa9dcd32af8abef0dec589e3717c9

    Comments

    swscale/uops: add SWS_UOP_MOVE for optimal register-register swizzles
    This decomposes a swizzle mask into a series of optimal register-register
    moves, using at most two temporary scratch registers.
    
    This is a better match for ASM-style backends than the existing PERMUTE/COPY
    uops that are designed for the needs of the C backend (or other backends which
    either apply the swizzle mask directly or permute pointers).
    
    I originally had logic equivalent to this written in NASM macros, but it was
    just such a complicated mess that I think it's better to rewrite it in C and
    have the resulting metadata be an explicit part of the uop definition.
    
    This commit only adds the uop, I'll update the x86 implementation in the
    next step.
    
    Co-authored-by: Ramiro Polla <ramiro.polla@gmail.com>
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/uops.c
    • libswscale/uops.h
    • libswscale/uops_macros.h
  34. Change #270205

    Category ffmpeg
    Changed by Niklas Haas <gitohnoyoudont@haasn.dev>
    Changed at Tue 09 Jun 2026 18:27:20
    Repository https://git.ffmpeg.org/ffmpeg.git
    Project ffmpeg
    Branch master
    Revision 941a35149b68d29c780896b50c962f3f544114d0

    Comments

    swscale/x86/ops_int: switch to SWS_UOP_MOVE
    Instead of SWS_UOP_PERMUTE/SWS_UOP_COPY.
    
    No real measurable difference in performance (it just eliminates a few
    practically free register renames), but definitely simpler.
    
    Signed-off-by: Niklas Haas <git@haasn.dev>

    Changed files

    • libswscale/x86/ops.c
    • libswscale/x86/ops_int.asm
    • libswscale/x86/uops_macros.asm.h