Re: [PATCH v3 00/29] Qualcomm iris video decoder driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 27/08/2024 12:05, Dikshita Agarwal via B4 Relay wrote:
Introduce support for Qualcomm new video acceleration hardware i.e. IRIS, used
for video stream decoding.

Iris is a multi pipe based hardware that offloads video stream decoding from the
application processor (AP). It supports H.264 decoding.  The AP communicates
with hardware through a well defined protocol, called as host firmware interface
(HFI), which provides fine-grained and asynchronous control over individual
hardware features.

This driver implements upgraded HFI gen2 to communicate with firmware. It
supports SM8550 which is based out of HFI gen 2. It also supports SM8250 which
is based out of HFI gen1.

This driver comes with below capabilities:
- V4L2 complaint video driver with M2M and STREAMING capability.
- Supports H264 decoder.

This driver comes with below features:
- Centralized resource management.
- Centralized management of core and instance states.
- Defines platform specific capabilities and features. As a results, it provides
   a single point of control to enable/disable a given feature depending on
   specific platform capabilities.
- Handles various video recommended sequences, like DRC, Drain, Seek, EOS.
- Implements asynchronous communication with hardware to achieve better
   experience in low latency usecases.
- Output and capture planes are controlled independently. Thereby providing a
   way to reconfigure individual plane.
- Native hardware support of LAST flag which is mandatory to align with port
   reconfiguration and DRAIN sequence as per V4L guidelines.

Changes since v2:
- introduced support for HFI gen1.
- deprecated Encoder and HEVC, VP9 codecs.
- removed custom vb2 mem ops and used standard framework instead.
- added support for mmap streaming mode.
- migrated all the buffer APIs to mem2mem helper functions.
- registered iris buffer with vb2 framework.
- migrated to clk_bulk, reset_bulk and icc_bulk APIs.
- used pm_domain_attach/detach_list APIs.
- migrated to read/writel and other available helpers for register access
   instead of custom wrappers.
- added documentation for various structures.
- addressed many other review comments from v2.

This series depends on [1] & [2]:

[1]: https://patchwork.linuxtv.org/project/linux-media/list/?series=13341 -
already applied in next-20240821
[2]: https://patchwork.kernel.org/project/linux-clk/patch
/20240812134752.28031-1-quic_vnagar@xxxxxxxxxxx/

Note: A harmless onetime error log "Lucid PLL latch failed. Output may
be unstable!" is seen during bootup. It doesn't impact any video usecase
and is currently under discussion.

Static tools like checkpatch, smatch, dt_binding_check, sparse and Coccinelle
run successfully with this driver.

The result of v4l2-compliance test on SM8550:

v4l2-compliance 1.29.0-5239, 64 bits, 64-bit time_t
v4l2-compliance SHA: a1ebb4dad512 2024-08-08 20:00:17

Compliance test for iris_driver device /dev/video0:

Driver Info:
         Driver name      : iris_driver
         Card type        : iris_decoder
         Bus info         : platform:iris_icc
         Driver version   : 6.11.0
         Capabilities     : 0x84204000
                 Video Memory-to-Memory Multiplanar
                 Streaming
                 Extended Pix Format
                 Device Capabilities
         Device Caps      : 0x04204000
                 Video Memory-to-Memory Multiplanar
                 Streaming
                 Extended Pix Format
         Detected Stateful Decoder

Required ioctls:
         test VIDIOC_QUERYCAP: OK
         test invalid ioctls: OK

Allow for multiple opens:
         test second /dev/video0 open: OK
         test VIDIOC_QUERYCAP: OK
         test VIDIOC_G/S_PRIORITY: OK
                 fail: ../utils/v4l2-compliance/v4l2-compliance.cpp(763): !ok
         test for unlimited opens: FAIL

You are supossed to fix those 2 failures to be compliant.


Debug ioctls:
         test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
         test VIDIOC_LOG_STATUS: OK (Not Supported)

Input ioctls:
         test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
         test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
         test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
         test VIDIOC_ENUMAUDIO: OK (Not Supported)
         test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
         test VIDIOC_G/S_AUDIO: OK (Not Supported)
         Inputs: 0 Audio Inputs: 0 Tuners: 0

Output ioctls:
         test VIDIOC_G/S_MODULATOR: OK (Not Supported)
         test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
         test VIDIOC_ENUMAUDOUT: OK (Not Supported)
         test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
         test VIDIOC_G/S_AUDOUT: OK (Not Supported)
         Outputs: 0 Audio Outputs: 0 Modulators: 0

Input/Output configuration ioctls:
         test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
         test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
         test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
         test VIDIOC_G/S_EDID: OK (Not Supported)

Control ioctls:
         test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
         test VIDIOC_QUERYCTRL: OK
         test VIDIOC_G/S_CTRL: OK
         test VIDIOC_G/S/TRY_EXT_CTRLS: OK
         test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
         test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
         Standard Controls: 3 Private Controls: 0

Format ioctls:
         test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
         test VIDIOC_G/S_PARM: OK (Not Supported)
         test VIDIOC_G_FBUF: OK (Not Supported)
         test VIDIOC_G_FMT: OK
         test VIDIOC_TRY_FMT: OK
         test VIDIOC_S_FMT: OK
         test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
         test Cropping: OK
         test Composing: OK
         test Scaling: OK (Not Supported)

Codec ioctls:
         test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
         test VIDIOC_G_ENC_INDEX: OK (Not Supported)
         test VIDIOC_(TRY_)DECODER_CMD: OK

Buffer ioctls:
         test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
         test CREATE_BUFS maximum buffers: OK
         test VIDIOC_REMOVE_BUFS: OK
         test VIDIOC_EXPBUF: OK (Not Supported)
         test Requests: OK (Not Supported)

I've been trying to test the driver on QRD8550, and I tried to
decode a stream with v4l2-ctl and v4l2-compliance using --stream-from-hdr
and it completely fails:

# v4l2-ctl --verbose --set-fmt-video-out=pixelformat=H264 --set-fmt-video=pixelformat=NV12 --stream-from-hdr=/Big_Buck_Bunny_1080_10s_5MB.264.hdr --stream-count=25 --stream-mmap --stream-to=out.nv12
VIDIOC_QUERYCAP: ok
VIDIOC_G_FMT: ok
VIDIOC_S_FMT: ok
Format Video Capture Multiplanar:
	Width/Height      : 384/256
	Pixel Format      : 'NV12' (Y/UV 4:2:0)
	Field             : None
	Number of planes  : 1
	Flags             :
	Colorspace        : Default
	Transfer Function : Default
	YCbCr/HSV Encoding: Default
	Quantization      : Default
	Plane 0           :
	   Bytes per Line : 384
	   Size Image     : 147456
VIDIOC_G_FMT: ok
VIDIOC_S_FMT: ok
Format Video Output Multiplanar:
	Width/Height      : 320/240
	Pixel Format      : 'H264' (H.264)
	Field             : None
	Number of planes  : 1
	Flags             :
	Colorspace        : Default
	Transfer Function : Default
	YCbCr/HSV Encoding: Default
	Quantization      : Default
	Plane 0           :
	   Bytes per Line : 0
	   Size Image     : 7077888
		VIDIOC_REQBUFS returned 0 (Success)
		VIDIOC_QUERYBUF returned 0 (Success)
		VIDIOC_QUERYBUF returned 0 (Success)
		VIDIOC_QUERYBUF returned 0 (Success)
		VIDIOC_QUERYBUF returned 0 (Success)
		VIDIOC_G_FMT returned 0 (Success)
		VIDIOC_QBUF returned 0 (Success)
		VIDIOC_QBUF returned 0 (Success)
		VIDIOC_QBUF returned 0 (Success)
		VIDIOC_QBUF returned 0 (Success)
		VIDIOC_STREAMON returned 0 (Success)

<then nothing>

and :
# v4l2-compliance --stream-from-hdr /Big_Buck_Bunny_1080_10s_5MB.264.hdr -s250 -d /dev/video0
...

v4l2-compliance 1.26.1-5142, 64 bits, 64-bit time_t
v4l2-compliance SHA: 4aee01a02792 2023-12-12 21:40:38

Compliance test for iris_driver device /dev/video0:

Driver Info:
	Driver name      : iris_driver
	Card type        : iris_decoder
	Bus info         : platform:iris_icc
	Driver version   : 6.11.0
	Capabilities     : 0x84204000
		Video Memory-to-Memory Multiplanar
		Streaming
		Extended Pix Format
		Device Capabilities
	Device Caps      : 0x04204000
		Video Memory-to-Memory Multiplanar
		Streaming
		Extended Pix Format
	Detected Stateful Decoder
...

Test input 0:

Streaming ioctls:
	test read/write: OK (Not Supported)
		fail: v4l2-test-buffers.cpp(2848): !thread_streamoff.done
		fail: v4l2-test-buffers.cpp(2876): testBlockingDQBuf(node, q)
	test blocking wait: FAIL
		fail: v4l2-test-buffers.cpp(240): g_field() == V4L2_FIELD_ANY
		fail: v4l2-test-buffers.cpp(1390): buf.qbuf(node)
	test MMAP (select): FAIL
		fail: v4l2-test-buffers.cpp(240): g_field() == V4L2_FIELD_ANY
		fail: v4l2-test-buffers.cpp(1390): buf.qbuf(node)
	test MMAP (epoll): FAIL
	test USERPTR (select): OK (Not Supported)
	test DMABUF: Cannot test, specify --expbuf-device

Total for iris_driver device /dev/video0: 51, Succeeded: 47, Failed: 4, Warnings: 0

but using ffmpeg seems to work:

# ffmpeg -r 1 -c:v h264_v4l2m2m -i /Big_Buck_Bunny_1080_10s_5MB.264.hdr -pix_fmt nv21 -f rawvideo -y out.nv21
ffmpeg version 6.1.1 Copyright (c) 2000-2023 the FFmpeg developers
...
Input #0, h264, from '/Big_Buck_Bunny_1080_10s_5MB.264.hdr':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Video: h264 (High), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 60 tbr, 1200k tbn
[h264_v4l2m2m @ 0x26b7a540] Using device /dev/video0
[h264_v4l2m2m @ 0x26b7a540] driver 'iris_driver' on card 'iris_decoder' in mplane mode
[h264_v4l2m2m @ 0x26b7a540] requesting formats: output=H264/none capture=NV12/yuv420p
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (h264_v4l2m2m) -> rawvideo (native))
Press [q] to stop, [?] for help
Output #0, rawvideo, to 'out.nv21':
  Metadata:
    encoder         : Lavf60.16.100
  Stream #0:0: Video: rawvideo (NV21 / 0x3132564E), nv21(tv, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 24883 kb/s, 1 fps, 1 tbn
    Metadata:
      encoder         : Lavc60.31.102 rawvideo
[out#0/rawvideo @ 0x26aae650] video:911250kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
frame=  300 fps= 95 q=-0.0 Lsize=  911250kB time=00:04:59.00 bitrate=24966.4kbits/s speed=94.7x

I had to set output framerate to 1 otherwise ffmpeg would drop 298 frames:
frame=    3 fps=0.9 q=-0.0 Lsize=    9112kB time=00:00:00.06 bitrate=1119738.4kbits/s dup=0 drop=298 speed=0.0195x

Could you explain how do you test the driver and which wich stream ?


Total for iris_driver device /dev/video0: 47, Succeeded: 46, Failed: 1,
Warnings: 0

The result of v4l2-compliance test on SM8250:

v4l2-compliance 1.29.0-5239, 64 bits, 64-bit time_t
v4l2-compliance SHA: a1ebb4dad512 2024-08-08 20:00:17

Compliance test for iris_driver device /dev/video0:

Driver Info:
         Driver name      : iris_driver
         Card type        : iris_decoder
         Bus info         : platform:iris_icc
         Driver version   : 6.11.0
         Capabilities     : 0x84204000
                 Video Memory-to-Memory Multiplanar
                 Streaming
                 Extended Pix Format
                 Device Capabilities
         Device Caps      : 0x04204000
                 Video Memory-to-Memory Multiplanar
                 Streaming
                 Extended Pix Format
         Detected Stateful Decoder

Required ioctls:
         test VIDIOC_QUERYCAP: OK
         test invalid ioctls: OK

Allow for multiple opens:
         test second /dev/video0 open: OK
         test VIDIOC_QUERYCAP: OK
         test VIDIOC_G/S_PRIORITY: OK
                 fail: ../utils/v4l2-compliance/v4l2-compliance.cpp(763): !ok
         test for unlimited opens: FAIL

Debug ioctls:
         test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
         test VIDIOC_LOG_STATUS: OK (Not Supported)

Input ioctls:
         test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
         test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
         test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
         test VIDIOC_ENUMAUDIO: OK (Not Supported)
         test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
         test VIDIOC_G/S_AUDIO: OK (Not Supported)
         Inputs: 0 Audio Inputs: 0 Tuners: 0

Output ioctls:
         test VIDIOC_G/S_MODULATOR: OK (Not Supported)
         test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
         test VIDIOC_ENUMAUDOUT: OK (Not Supported)
         test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
         test VIDIOC_G/S_AUDOUT: OK (Not Supported)
         Outputs: 0 Audio Outputs: 0 Modulators: 0

Input/Output configuration ioctls:
         test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
         test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
         test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
         test VIDIOC_G/S_EDID: OK (Not Supported)

Control ioctls:
         test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
         test VIDIOC_QUERYCTRL: OK
         test VIDIOC_G/S_CTRL: OK
         test VIDIOC_G/S/TRY_EXT_CTRLS: OK
         test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
         test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
         Standard Controls: 2 Private Controls: 0

Format ioctls:
         test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
         test VIDIOC_G/S_PARM: OK (Not Supported)
         test VIDIOC_G_FBUF: OK (Not Supported)
         test VIDIOC_G_FMT: OK
         test VIDIOC_TRY_FMT: OK
         test VIDIOC_S_FMT: OK
         test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
         test Cropping: OK
         test Composing: OK
         test Scaling: OK (Not Supported)

Codec ioctls:
         test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
         test VIDIOC_G_ENC_INDEX: OK (Not Supported)
         test VIDIOC_(TRY_)DECODER_CMD: OK

Buffer ioctls:
         test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
         test CREATE_BUFS maximum buffers: OK
         test VIDIOC_REMOVE_BUFS: OK
         test VIDIOC_EXPBUF: OK (Not Supported)
         test Requests: OK (Not Supported)

Total for iris_driver device /dev/video0: 47, Succeeded: 46, Failed: 1,
Warnings: 0

Fluster score on SM8550:

77/135 while testing JVT-AVC_V1 with GStreamer-H.264-V4L2-Gst1.0.JVT-AVC_V1.
The failing tests are:
- 52 test vectors failed due to interlaced clips: Interlaced decoding is
   not supported in iris driver.
   Test Vectors:
         cabac_mot_fld0_full
         cabac_mot_mbaff0_full
         cabac_mot_picaff0_full
         CABREF3_Sand_D
         CAFI1_SVA_C
         CAMA1_Sony_C
         CAMA1_TOSHIBA_B
         cama1_vtc_c
         cama2_vtc_b
         CAMA3_Sand_E
         cama3_vtc_b
         CAMACI3_Sony_C
         CAMANL1_TOSHIBA_B
         CAMANL2_TOSHIBA_B
         CAMANL3_Sand_E
         CAMASL3_Sony_B
         CAMP_MOT_MBAFF_L30
         CAMP_MOT_MBAFF_L31
         CANLMA2_Sony_C
         CANLMA3_Sony_C
         CAPA1_TOSHIBA_B
         CAPAMA3_Sand_F
         cavlc_mot_fld0_full_B
         cavlc_mot_mbaff0_full_B
         cavlc_mot_picaff0_full_B
         CVCANLMA2_Sony_C
         CVFI1_Sony_D
         CVFI1_SVA_C
         CVFI2_Sony_H
         CVFI2_SVA_C
         CVMA1_Sony_D
         CVMA1_TOSHIBA_B
         CVMANL1_TOSHIBA_B
         CVMANL2_TOSHIBA_B
         CVMAPAQP3_Sony_E
         CVMAQP2_Sony_G
         CVMAQP3_Sony_D
         CVMP_MOT_FLD_L30_B
         CVNLFI1_Sony_C
         CVNLFI2_Sony_H
         CVPA1_TOSHIBA_B
         FI1_Sony_E
         MR6_BT_B
         MR7_BT_B
         MR8_BT_B
         MR9_BT_B
         Sharp_MP_Field_1_B
         Sharp_MP_Field_2_B
         Sharp_MP_Field_3_B
         Sharp_MP_PAFF_1r2
         Sharp_MP_PAFF_2r
         CVMP_MOT_FRM_L31_B
- 3 test vectors failed due to unsupported bitstream.
   num_slice_group_minus1 greater than zero is not supported by the hardware.
   Test Vectors:
         FM1_BT_B
         FM1_FT_E
         FM2_SVA_C
- 2 test vectors failed because SP_SLICE type is not supported by the hardware.
   Test Vectors:
         SP1_BT_A
         sp2_bt_b
- 1 test vector failed due to unsupported profile:
   V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED is being deprecated from sm8550
   onwards due to hardware issues.
   Test Vectors:
         BA3_SVA_C

23/69 while testing JVT-FR-EXT with GStreamer-H.264-V4L2-Gst1.0.JVT-AVC_V1.
The failing tests are:
- 21 test vectors failed due to interlaced clips: Interlaced decoding is
   not supported in iris driver.
   Test Vectors:
         brcm_freh4
         brcm_freh5
         brcm_freh6
         brcm_freh10
         brcm_freh11
         freh7_b
         FREXT01_JVC_D
         FREXT02_JVC_C
         FRExt2_Panasonic_C
         FRExt4_Panasonic_B
         HCAFF1_HHI_B
         HCAMFF1_HHI_B
         HCHP3_HHI_A
         HPCAFL_BRCM_C
         HPCAFLNL_BRCM_C
         HVLCFI0_Sony_B
         HVLCMFF0_Sony_B
         HVLCPFF0_Sony_B
         HPCAMAPALQ_BRCM_B
         HPCVFL_BRCM_A
         HPCVFLNL_BRCM_A
- 2 test vectors failed due to 10bit bitstream: 10bit decoding is not
   supported in iris driver
   Test Vectors:
         FREH10-1
         FREH10-2
- 21 test vectors failed due to unsupported profile:
   V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422 is not supported by the hardware.
   Test Vectors:
         FREXT1_TANDBERG_A
         FREXT2_TANDBERG_A
         FREXT3_TANDBERG_A
         Hi422FR1_SONY_A
         Hi422FR2_SONY_A
         Hi422FR3_SONY_A
         Hi422FR4_SONY_A
         Hi422FR6_SONY_A
         Hi422FR7_SONY_A
         Hi422FR8_SONY_A
         Hi422FR9_SONY_A
         Hi422FR10_SONY_A
         Hi422FR11_SONY_A
         Hi422FR12_SONY_A
         Hi422FR13_SONY_A
         Hi422FR14_SONY_A
         Hi422FR15_SONY_A
         Hi422FREXT16_SONY_A
         Hi422FREXT17_SONY_A
         Hi422FREXT18_SONY_A
         Hi422FREXT19_SONY_A
- 2 test vectors failed due to unsupported bitstream.
   chroma_fmt_idc is equal to 0(monochrome) in the bitstream which is not
   supported by the hardware.
   Test Vectors:
         HPCAMOLQ_BRCM_B
         HPCVMOLQ_BRCM_B

Fluster score on SM8250:

78/135 while testing JVT-AVC_V1 with GStreamer-H.264-V4L2-Gst1.0.JVT-AVC_V1.
The failing tests are:
- 52 test vectors failed due to interlaced clips: Interlaced decoding is not
   supported in iris driver.
   Test Vectors:
         cabac_mot_fld0_full
         cabac_mot_mbaff0_full
         cabac_mot_picaff0_full
         CABREF3_Sand_D
         CAFI1_SVA_C
         CAMA1_Sony_C
         CAMA1_TOSHIBA_B
         cama1_vtc_c
         cama2_vtc_b
         CAMA3_Sand_E
         cama3_vtc_b
         CAMACI3_Sony_C
         CAMANL1_TOSHIBA_B
         CAMANL2_TOSHIBA_B
         CAMANL3_Sand_E
         CAMASL3_Sony_B
         CAMP_MOT_MBAFF_L30
         CAMP_MOT_MBAFF_L31
         CANLMA2_Sony_C
         CANLMA3_Sony_C
         CAPA1_TOSHIBA_B
         CAPAMA3_Sand_F
         cavlc_mot_fld0_full_B
         cavlc_mot_mbaff0_full_B
         cavlc_mot_picaff0_full_B
         CVCANLMA2_Sony_C
         CVFI1_Sony_D
         CVFI1_SVA_C
         CVFI2_Sony_H
         CVFI2_SVA_C
         CVMA1_Sony_D
         CVMA1_TOSHIBA_B
         CVMANL1_TOSHIBA_B
         CVMANL2_TOSHIBA_B
         CVMAPAQP3_Sony_E
         CVMAQP2_Sony_G
         CVMAQP3_Sony_D
         CVMP_MOT_FLD_L30_B
         CVNLFI1_Sony_C
         CVNLFI2_Sony_H
         CVPA1_TOSHIBA_B
         FI1_Sony_E
         MR6_BT_B
         MR7_BT_B
         MR8_BT_B
         MR9_BT_B
         Sharp_MP_Field_1_B
         Sharp_MP_Field_2_B
         Sharp_MP_Field_3_B
         Sharp_MP_PAFF_1r2
         Sharp_MP_PAFF_2r
         CVMP_MOT_FRM_L31_B
- 3 test vectors failed due to unsupported bitstream.
   num_slice_group_minus1 greater than zero is not supported by the hardware.
   Test Vectors:
         FM1_BT_B
         FM1_FT_E
         FM2_SVA_C
- 2 test vectors failed because SP_SLICE type is not supported by the hardware.
   Test Vectors:
         SP1_BT_A
         sp2_bt_b

23/69 while testing JVT-FR-EXT with GStreamer-H.264-V4L2-Gst1.0.JVT-AVC_V1.
The failing tests are:
- 21 test vectors failed due to interlaced clips: Interlaced decoding is
   not supported in iris driver.
   Test Vectors:
         brcm_freh4
         brcm_freh5
         brcm_freh6
         brcm_freh10
         brcm_freh11
         freh7_b
         FREXT01_JVC_D
         FREXT02_JVC_C
         FRExt2_Panasonic_C
         FRExt4_Panasonic_B
         HCAFF1_HHI_B
         HCAMFF1_HHI_B
         HCHP3_HHI_A
         HPCAFL_BRCM_C
         HPCAFLNL_BRCM_C
         HVLCFI0_Sony_B
         HVLCMFF0_Sony_B
         HVLCPFF0_Sony_B
         HPCAMAPALQ_BRCM_B
         HPCVFL_BRCM_A
         HPCVFLNL_BRCM_A
- 2 test vectors failed due to 10bit bitstream: 10bit decoding is not
   supported in iris driver
   Test Vectors:
         FREH10-1
         FREH10-2
- 21 test vectors failed due to unsupported profile:
   V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422 is not supported by the hardware.
   Test Vectors:
         FREXT1_TANDBERG_A
         FREXT2_TANDBERG_A
         FREXT3_TANDBERG_A
         Hi422FR1_SONY_A
         Hi422FR2_SONY_A
         Hi422FR3_SONY_A
         Hi422FR4_SONY_A
         Hi422FR6_SONY_A
         Hi422FR7_SONY_A
         Hi422FR8_SONY_A
         Hi422FR9_SONY_A
         Hi422FR10_SONY_A
         Hi422FR11_SONY_A
         Hi422FR12_SONY_A
         Hi422FR13_SONY_A
         Hi422FR14_SONY_A
         Hi422FR15_SONY_A
         Hi422FREXT16_SONY_A
         Hi422FREXT17_SONY_A
         Hi422FREXT18_SONY_A
         Hi422FREXT19_SONY_A
- 2 test vectors failed due to unsupported bitstream.
   chroma_fmt_idc is equal to 0(monochrome) in the bitstream which is not
   supported by the hardware.
   Test Vectors:
         HPCAMOLQ_BRCM_B
         HPCVMOLQ_BRCM_B

Signed-off-by: Dikshita Agarwal <quic_dikshita@xxxxxxxxxxx>
---
Dikshita Agarwal (17):
       dt-bindings: media: Add sm8550 dt schema
       media: MAINTAINERS: Add Qualcomm Iris video accelerator driver
       media: iris: add platform driver for iris video device
       media: iris: initialize power resources
       media: iris: implement iris v4l2 file ops
       media: iris: introduce iris core state management with shared queues
       media: iris: implement video firmware load/unload
       media: iris: implement boot sequence of the firmware
       media: iris: introduce Host firmware interface with necessary hooks
       media: iris: implement power management
       media: iris: implement reqbuf ioctl with vb2_queue_setup
       media: iris: implement vb2 streaming ops
       media: iris: allocate, initialize and queue internal buffers
       media: iris: implement vb2 ops for buf_queue and firmware response
       media: iris: add support for dynamic resolution change
       media: iris: handle streamoff/on from client in dynamic resolution change
       media: iris: add support for drain sequence

Vedang Nagar (12):
       media: iris: implement s_fmt, g_fmt and try_fmt ioctls
       media: iris: implement g_selection ioctl
       media: iris: implement enum_fmt and enum_frameintervals ioctls
       media: iris: implement subscribe_event and unsubscribe_event ioctls
       media: iris: implement iris v4l2_ctrl_ops and prepare capabilities
       media: iris: implement query_cap, query_ctrl and query_menu ioctls
       media: iris: implement set properties to firmware during streamon
       media: iris: subscribe parameters and properties to firmware for hfi_gen2
       media: iris: add check whether the video session is supported or not
       media: iris: implement power scaling for vpu2 and vpu3
       media: iris: add allow checks for v4l2 ioctls
       media: iris: add check to allow sub states transitions

  .../bindings/media/qcom,sm8550-iris.yaml           |  162 ++++
  MAINTAINERS                                        |   11 +
  drivers/media/platform/qcom/Kconfig                |    1 +
  drivers/media/platform/qcom/Makefile               |    1 +
  drivers/media/platform/qcom/iris/Kconfig           |   13 +
  drivers/media/platform/qcom/iris/Makefile          |   27 +
  drivers/media/platform/qcom/iris/iris_buffer.c     |  599 ++++++++++++
  drivers/media/platform/qcom/iris/iris_buffer.h     |  117 +++
  drivers/media/platform/qcom/iris/iris_core.c       |   99 ++
  drivers/media/platform/qcom/iris/iris_core.h       |  107 +++
  drivers/media/platform/qcom/iris/iris_ctrls.c      |  296 ++++++
  drivers/media/platform/qcom/iris/iris_ctrls.h      |   22 +
  drivers/media/platform/qcom/iris/iris_firmware.c   |  151 +++
  drivers/media/platform/qcom/iris/iris_firmware.h   |   15 +
  drivers/media/platform/qcom/iris/iris_hfi_common.c |  222 +++++
  drivers/media/platform/qcom/iris/iris_hfi_common.h |  155 +++
  drivers/media/platform/qcom/iris/iris_hfi_gen1.h   |   16 +
  .../platform/qcom/iris/iris_hfi_gen1_command.c     |  834 ++++++++++++++++
  .../platform/qcom/iris/iris_hfi_gen1_defines.h     |  448 +++++++++
  .../platform/qcom/iris/iris_hfi_gen1_response.c    |  658 +++++++++++++
  drivers/media/platform/qcom/iris/iris_hfi_gen2.h   |   41 +
  .../platform/qcom/iris/iris_hfi_gen2_command.c     | 1003 ++++++++++++++++++++
  .../platform/qcom/iris/iris_hfi_gen2_defines.h     |  160 ++++
  .../platform/qcom/iris/iris_hfi_gen2_packet.c      |  328 +++++++
  .../platform/qcom/iris/iris_hfi_gen2_packet.h      |  125 +++
  .../platform/qcom/iris/iris_hfi_gen2_response.c    |  954 +++++++++++++++++++
  drivers/media/platform/qcom/iris/iris_hfi_queue.c  |  343 +++++++
  drivers/media/platform/qcom/iris/iris_hfi_queue.h  |  180 ++++
  drivers/media/platform/qcom/iris/iris_instance.h   |   73 ++
  .../platform/qcom/iris/iris_platform_common.h      |  195 ++++
  .../platform/qcom/iris/iris_platform_sm8250.c      |  175 ++++
  .../platform/qcom/iris/iris_platform_sm8550.c      |  310 ++++++
  drivers/media/platform/qcom/iris/iris_power.c      |  182 ++++
  drivers/media/platform/qcom/iris/iris_power.h      |   15 +
  drivers/media/platform/qcom/iris/iris_probe.c      |  257 +++++
  drivers/media/platform/qcom/iris/iris_resources.c  |  338 +++++++
  drivers/media/platform/qcom/iris/iris_resources.h  |   27 +
  drivers/media/platform/qcom/iris/iris_state.c      |  338 +++++++
  drivers/media/platform/qcom/iris/iris_state.h      |  153 +++
  drivers/media/platform/qcom/iris/iris_utils.c      |   96 ++
  drivers/media/platform/qcom/iris/iris_utils.h      |   50 +
  drivers/media/platform/qcom/iris/iris_vb2.c        |  353 +++++++
  drivers/media/platform/qcom/iris/iris_vb2.h        |   17 +
  drivers/media/platform/qcom/iris/iris_vdec.c       |  693 ++++++++++++++
  drivers/media/platform/qcom/iris/iris_vdec.h       |   25 +
  drivers/media/platform/qcom/iris/iris_vidc.c       |  706 ++++++++++++++
  drivers/media/platform/qcom/iris/iris_vidc.h       |   15 +
  drivers/media/platform/qcom/iris/iris_vpu2.c       |   39 +
  drivers/media/platform/qcom/iris/iris_vpu3.c       |  125 +++
  drivers/media/platform/qcom/iris/iris_vpu_buffer.c |  311 ++++++
  drivers/media/platform/qcom/iris/iris_vpu_buffer.h |   91 ++
  drivers/media/platform/qcom/iris/iris_vpu_common.c |  371 ++++++++
  drivers/media/platform/qcom/iris/iris_vpu_common.h |   28 +
  .../platform/qcom/iris/iris_vpu_register_defines.h |   17 +
  54 files changed, 12088 insertions(+)
---
base-commit: 31aaa7d95e09892c81df0d7c49ae85640fa4e202
change-id: 20240827-iris_v3-4b30e9610e7f

Best regards,





[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux