Hi, On 08/12/2020 17:54, Nicolas Dufresne wrote: > Le mardi 17 novembre 2020 à 09:44 +0100, Neil Armstrong a écrit : >> The GE2D is a 2D accelerator with various features like configurable blitter >> with alpha blending, frame rotation, scaling, format conversion and colorspace >> conversion. >> >> The driver implements a Memory2Memory VB2 V4L2 streaming device permitting: >> - 0, 90, 180, 270deg rotation >> - horizontal/vertical flipping >> - source cropping >> - destination compositing >> - 32bit/24bit/16bit format conversion >> >> This adds the support for the GE2D version found in the AXG SoCs Family. >> >> The missing features are: >> - Source scaling >> - Colorspace conversion >> - Advanced alpha blending & blitting options > > Is there some Open Source software using this driver ? GStreamer got some > support, but it's mostly focused on CSC and Scaling (flipping should work, but > rotation is not implemented). But I'm not aware of anything else, hence asking. Rotation orks with gstreamer by tweaking the rotation control manually and forcing the reversed height/width after the v4l2convert. Apart that, I made it works with the LVGL UI library to accelerate buffers switching and blitting on the DRM buffers. Neil > >> >> Dependencies: >> - Patches 1-3: None >> - Patch 4: >> https://lkml.kernel.org/r/20200915124553.8056-1-narmstrong@xxxxxxxxxxxx ;(appli >> ed for 5.11) >> >> Changes since v2: >> - removed error check in and after get_frame() >> - moved the v4l2_file_operations lower in the code to avoid adding >> vidioc_setup_cap_fmt on top >> - removed all memcpy of pix_fmt >> - simplified & fixed ge2d_start_streaming >> - added local buffer type check in vidioc_g_selection instead of using >> get_frame error >> - removed impossible <0 rectangle check, fixed error string >> - added comment on condition after V4L2_CID_ROTATE >> >> Changes since v1: >> - Rebased on v5.10-rc1 >> >> / # v4l2-compliance -s >> v4l2-compliance SHA: ea16a7ef13a902793a5c2626b0cefc4d956147f3, 64 bits, 64-bit >> time_t >> >> Compliance test for meson-ge2d device /dev/video0: >> >> Driver Info: >> Driver name : meson-ge2d >> Card type : meson-ge2d >> Bus info : platform:meson-ge2d >> Driver version : 5.9.0 >> Capabilities : 0x84208000 >> Video Memory-to-Memory >> Streaming >> Extended Pix Format >> Device Capabilities >> Device Caps : 0x04208000 >> Video Memory-to-Memory >> Streaming >> Extended Pix Format >> >> Required ioctls: >> test VIDIOC_QUERYCAP: OK >> >> Allow for multiple opens: >> test second /dev/video0 open: OK >> test VIDIOC_QUERYCAP: OK >> test VIDIOC_G/S_PRIORITY: OK >> test for unlimited opens: OK >> >> test invalid ioctls: OK >> Debug ioctls: >> test VIDIOC_DBG_G/S_REGISTER: OK >> 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: 4 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 (Not Supported) >> >> Buffer ioctls: >> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK >> test VIDIOC_EXPBUF: OK >> test Requests: OK (Not Supported) >> >> Test input 0: >> >> Streaming ioctls: >> test read/write: OK (Not Supported) >> test blocking wait: OK >> Video Capture: Captured 58 buffers >> test MMAP (no poll): OK >> Video Capture: Captured 58 buffers >> test MMAP (select): OK >> Video Capture: Captured 58 buffers >> test MMAP (epoll): OK >> test USERPTR (no poll): OK (Not Supported) >> test USERPTR (select): OK (Not Supported) >> test DMABUF: Cannot test, specify --expbuf-device >> >> Total for meson-ge2d device /dev/video0: 52, Succeeded: 52, Failed: 0, >> Warnings: 0 >> >> Neil Armstrong (4): >> dt-bindings: media: Add bindings for the Amlogic GE2D Accelerator Unit >> media: meson: Add M2M driver for the Amlogic GE2D Accelerator Unit >> MAINTAINERS: Add myself as maintainer of the Amlogic GE2D driver >> arm64: dts: meson-axg: add GE2D node >> >> .../bindings/media/amlogic,axg-ge2d.yaml | 47 + >> MAINTAINERS | 9 + >> arch/arm64/boot/dts/amlogic/meson-axg.dtsi | 9 + >> drivers/media/platform/Kconfig | 13 + >> drivers/media/platform/Makefile | 2 + >> drivers/media/platform/meson/ge2d/Makefile | 3 + >> drivers/media/platform/meson/ge2d/ge2d-regs.h | 360 ++++++ >> drivers/media/platform/meson/ge2d/ge2d.c | 1091 +++++++++++++++++ >> 8 files changed, 1534 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/media/amlogic,axg- >> ge2d.yaml >> create mode 100644 drivers/media/platform/meson/ge2d/Makefile >> create mode 100644 drivers/media/platform/meson/ge2d/ge2d-regs.h >> create mode 100644 drivers/media/platform/meson/ge2d/ge2d.c >> > >