[PATCH v3 0/2] VVC: AVX2 planar intra prediction

Gudikandula Samith via ffmpeg-devel <[email protected]>
Newsgroups gmane.comp.video.ffmpeg.devel
Message-ID <[email protected]>
This series adds an AVX2 implementation of the VVC planar intra
prediction kernel, which currently has no SIMD implementation on any
architecture. Only 8-bit is implemented here; the 10 and 12-bit paths
still use the C reference and can be added in a follow-up.

Patch 1 adds a checkasm test so the second patch can be verified. The
test iterates 8, 10 and 12 bit, so it will also cover the higher depths
once SIMD for them is added.
Patch 2 adds the 8-bit kernel and wires up x86 dispatch.

Tested on AMD Ryzen 7 5825U:
  - checkasm --test=vvc_intra passes (all 25 subtests): the 8-bit AVX2
    kernel is bit-exact to the C reference
  - fate-vvc passes, unchanged from before the series
  - framemd5 output is identical with and without -cpuflags 0

Changes since v2:
  - asm: align the rodata and instruction operand commas to a consistent
    column and space the operators in the memory operands
    ([%1 + %3 * 2]). Whitespace only; the assembled .text and .rodata
    are byte for byte identical to v2.

Changes since v1:
  - checkasm: use separate top0/top1 and left0/left1 buffers so call_ref
    cannot modify call_new's input
  - checkasm: use MIN_TU_SIZE/MAX_TB_SIZE instead of magic 4/64
  - checkasm: use checkasm_check_pixel instead of memcmp/fail
  - asm: compute per-row A and B iteratively (faster; suggested by Frank)
  - asm: index left[h] via r8 and drop r13, saving a mov

Thanks to Frank for the reviews.

Gudikandula Samith (2):
  tests/checkasm: add vvc_intra test for pred_planar
  lavc/vvc: add AVX2 planar intra prediction

 libavcodec/x86/vvc/Makefile   |   1 +
 libavcodec/x86/vvc/dsp_init.c |  13 ++
 libavcodec/x86/vvc/intra.asm  | 232 ++++++++++++++++++++++++++++++++++
 tests/checkasm/Makefile       |   2 +-
 tests/checkasm/checkasm.c     |   7 +-
 tests/checkasm/checkasm.h     |   1 +
 tests/checkasm/vvc_intra.c    |  89 +++++++++++++
 7 files changed, 341 insertions(+), 4 deletions(-)
 create mode 100644 libavcodec/x86/vvc/intra.asm
 create mode 100644 tests/checkasm/vvc_intra.c

-- 
2.53.0

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.