linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Benjamin Gaignard <benjamin.gaignard@collabora.com>
To: Ezequiel Garcia <ezequiel@collabora.com>,
	hverkuil@xs4all.nl, p.zabel@pengutronix.de, mchehab@kernel.org,
	shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com,
	gregkh@linuxfoundation.org, mripard@kernel.org,
	paul.kocialkowski@bootlin.com, wens@csie.org,
	jernej.skrabec@siol.net, emil.l.velikov@gmail.com,
	andrzej.p@collabora.com, jc@kynesim.co.uk
Cc: kernel@pengutronix.de, linux-imx@nxp.com,
	linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 0/8] Additional features for Hantro HEVC
Date: Mon, 7 Jun 2021 13:20:37 +0200	[thread overview]
Message-ID: <74858817-e122-4731-3163-ed20c8b9df33@collabora.com> (raw)
In-Reply-To: <d0e28e5b7ca686162116148c2b94a8e19520bc1b.camel@collabora.com>


Le 04/06/2021 à 18:49, Ezequiel Garcia a écrit :
> Hi Benjamin,
>
> Thanks for posting this so quickly.
>
> On Fri, 2021-06-04 at 15:06 +0200, Benjamin Gaignard wrote:
>> Basic HEVC support has been added to Hantro driver in this pull request:
>> https://www.spinics.net/lists/linux-media/msg193744.html
>>
>> Thanks to that it is now possible to support more features for this driver.
>>
>> The first patch allow to log the hardware performance per macroblock.
>> The second patch makes the driver use compressed reference frames to
>> reduce memory bandwidth consumption.
> As I commented, it would be nice to do some measurements here

The performances measured by the first patch (the number of macroblock per cycle) remain
the same because the goal of using compressed frames is to save memory bandwidth.
That doesn't impact what is measure by the Hantro hardware block itself.
To give you an example that is the result of decoding one of the fluster reference file.

gst-launch-1.0 filesrc location=AMP_A_Samsung_7.hevc ! h265parse ! v4l2slh265dec ! fakesink

cat /sys/kernel/debug/tracing/trace
#
# entries-in-buffer/entries-written: 17/17   #P:4
#
#                                _-----=> irqs-off
#                               / _----=> need-resched
#                              | / _---=> hardirq/softirq
#                              || / _--=> preempt-depth
#                              ||| /     delay
#           TASK-PID     CPU#  ||||   TIMESTAMP  FUNCTION
#              | |         |   ||||      |         |
           <idle>-0       [000] d.h1   143.745124: hantro_hevc_perf: minor = 1,      180 cycles / mb
           <idle>-0       [000] d.h1   143.758086: hantro_hevc_perf: minor = 1,      172 cycles / mb
           <idle>-0       [000] d.h1   143.770829: hantro_hevc_perf: minor = 1,      167 cycles / mb
           <idle>-0       [000] d.h1   143.782757: hantro_hevc_perf: minor = 1,      166 cycles / mb
           <idle>-0       [000] d.h1   143.794866: hantro_hevc_perf: minor = 1,      165 cycles / mb
           <idle>-0       [000] d.h1   143.808012: hantro_hevc_perf: minor = 1,      165 cycles / mb
           <idle>-0       [000] d.h1   143.818225: hantro_hevc_perf: minor = 1,      166 cycles / mb
           <idle>-0       [000] d.h1   143.828063: hantro_hevc_perf: minor = 1,      165 cycles / mb
           <idle>-0       [000] d.h1   143.838217: hantro_hevc_perf: minor = 1,      165 cycles / mb
           <idle>-0       [000] d.h1   143.848728: hantro_hevc_perf: minor = 1,      172 cycles / mb
           <idle>-0       [000] d.h1   143.858677: hantro_hevc_perf: minor = 1,      167 cycles / mb
           <idle>-0       [000] d.h1   143.868576: hantro_hevc_perf: minor = 1,      166 cycles / mb
           <idle>-0       [000] d.h1   143.878431: hantro_hevc_perf: minor = 1,      165 cycles / mb
           <idle>-0       [000] d.h1   143.888684: hantro_hevc_perf: minor = 1,      165 cycles / mb
           <idle>-0       [000] d.h1   143.898827: hantro_hevc_perf: minor = 1,      166 cycles / mb
           <idle>-0       [000] d.h1   143.908645: hantro_hevc_perf: minor = 1,      165 cycles / mb
           <idle>-0       [000] d.h1   143.918772: hantro_hevc_perf: minor = 1,      165 cycles / mb

>
>> Patches 3 to 5 allow to decode and produce 10-bits P010 frames.
> I suppose this means that some 10-bit test vectors in Fluster HEVC
> test suite are now passing?
>
>> Patch 6 make usage of G2 post processor to scale down the frames.
>> Patches 7 and 8 add the support of HEVC scaling matrix by adding a new
>> control.
>>
> Ditto, the test vectors with scaling lists should now pass, any chance
> you post the test suite run before and after this series, just for reference?

Files like SLIST_A_Sony_5, SLIST_B_Sony_9, SLIST_C_Sony_4, SLIST_D_Sony_9 or
DBLK_A_MAIN10_VIXS_4 are now decoded by the driver.

fluster score is 70/147.
I think it could be better but, in few cases, it seems that the last frames
isn't retrieved by the userland stack but that need to be verify and debug
in an other series ;-)

Benjamin

>
> Thanks again,
> Ezequiel
>
>> All these patches enhance the HEVC support for Hantro (G2) hardware.
>> Unluckily they almost all touch the same pieces of code, where buffer
>> size, offset and addresses are set, so they have to be in this order.
>> They depend of the series pushed in this pull request:
>> https://www.spinics.net/lists/linux-media/msg193744.html
>>
>> Benjamin
>>
>> Benjamin Gaignard (8):
>>    media: hantro: Trace hevc hw cycles performance register
>>    media: hantro: Add support of compressed reference buffers
>>    media: hantro: hevc: Allow 10-bits encoded streams
>>    media: Add P010 video format
>>    media: hantro: hevc: Allow to produce 10-bit frames
>>    media: hantro: enumerate scaled output formats
>>    media: hevc: Add scaling matrix control
>>    media: hantro: Add scaling lists feature
>>
>>   .../media/v4l/ext-ctrls-codec.rst             |  45 +++++
>>   .../media/v4l/pixfmt-yuv-planar.rst           |   8 +
>>   .../media/v4l/vidioc-queryctrl.rst            |   6 +
>>   drivers/media/v4l2-core/v4l2-common.c         |   1 +
>>   drivers/media/v4l2-core/v4l2-ctrls-core.c     |   6 +
>>   drivers/media/v4l2-core/v4l2-ctrls-defs.c     |   4 +
>>   drivers/media/v4l2-core/v4l2-ioctl.c          |   1 +
>>   drivers/staging/media/hantro/hantro.h         |   4 +
>>   drivers/staging/media/hantro/hantro_drv.c     |  32 +++-
>>   .../staging/media/hantro/hantro_g2_hevc_dec.c | 175 ++++++++++++++++--
>>   drivers/staging/media/hantro/hantro_g2_regs.h |  12 ++
>>   drivers/staging/media/hantro/hantro_hevc.c    |  60 +++++-
>>   drivers/staging/media/hantro/hantro_hw.h      |   7 +
>>   drivers/staging/media/hantro/hantro_v4l2.c    |  10 +-
>>   drivers/staging/media/hantro/imx8m_vpu_hw.c   |   6 +
>>   drivers/staging/media/hantro/trace.h          |  40 ++++
>>   include/media/hevc-ctrls.h                    |  11 ++
>>   include/uapi/linux/videodev2.h                |   1 +
>>   18 files changed, 407 insertions(+), 22 deletions(-)
>>   create mode 100644 drivers/staging/media/hantro/trace.h
>>
>

      reply	other threads:[~2021-06-07 11:20 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-04 13:06 [PATCH 0/8] Additional features for Hantro HEVC Benjamin Gaignard
2021-06-04 13:06 ` [PATCH 1/8] media: hantro: Trace hevc hw cycles performance register Benjamin Gaignard
2021-06-13  9:53   ` Hans Verkuil
2021-06-13  9:55     ` Hans Verkuil
2021-06-14  7:45       ` Benjamin Gaignard
2021-06-04 13:06 ` [PATCH 2/8] media: hantro: Add support of compressed reference buffers Benjamin Gaignard
2021-06-04 16:32   ` Ezequiel Garcia
2021-06-07 13:27     ` Benjamin Gaignard
2021-06-04 13:06 ` [PATCH 3/8] media: hantro: hevc: Allow 10-bits encoded streams Benjamin Gaignard
2021-06-04 13:06 ` [PATCH 4/8] media: Add P010 video format Benjamin Gaignard
2021-06-04 16:17   ` Nicolas Dufresne
2021-06-07 11:31     ` Benjamin Gaignard
2021-06-09 17:58       ` Nicolas Dufresne
2021-06-04 13:06 ` [PATCH 5/8] media: hantro: hevc: Allow to produce 10-bit frames Benjamin Gaignard
2021-06-04 13:06 ` [PATCH 6/8] media: hantro: enumerate scaled output formats Benjamin Gaignard
2021-06-04 13:06 ` [PATCH 7/8] media: hevc: Add scaling matrix control Benjamin Gaignard
2021-06-06  7:49   ` Jernej Škrabec
2021-06-07  7:23     ` Benjamin Gaignard
2021-06-04 13:06 ` [PATCH 8/8] media: hantro: Add scaling lists feature Benjamin Gaignard
2021-06-04 16:49 ` [PATCH 0/8] Additional features for Hantro HEVC Ezequiel Garcia
2021-06-07 11:20   ` Benjamin Gaignard [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=74858817-e122-4731-3163-ed20c8b9df33@collabora.com \
    --to=benjamin.gaignard@collabora.com \
    --cc=andrzej.p@collabora.com \
    --cc=emil.l.velikov@gmail.com \
    --cc=ezequiel@collabora.com \
    --cc=festevam@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hverkuil@xs4all.nl \
    --cc=jc@kynesim.co.uk \
    --cc=jernej.skrabec@siol.net \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-imx@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=mchehab@kernel.org \
    --cc=mripard@kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=paul.kocialkowski@bootlin.com \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=wens@csie.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).