From: Inki Dae <inki.dae@samsung.com>
To: Marek Szyprowski <m.szyprowski@samsung.com>,
dri-devel@lists.freedesktop.org,
linux-samsung-soc@vger.kernel.org
Cc: Seung-Woo Kim <sw0312.kim@samsung.com>,
Andrzej Hajda <a.hajda@samsung.com>,
Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
Tobias Jakobi <tjakobi@math.uni-bielefeld.de>,
Krzysztof Kozlowski <krzk@kernel.org>,
Sylwester Nawrocki <s.nawrocki@samsung.com>,
Andrzej Pietrasiewicz <andrzej.p@samsung.com>,
Hoegeun Kwon <hoegeun.kwon@samsung.com>
Subject: Re: [PATCH v5 0/8] Exynos DRM: rewrite IPP subsystem and userspace API
Date: Thu, 09 Nov 2017 13:41:45 +0900 [thread overview]
Message-ID: <5A03DC89.6010004@samsung.com> (raw)
In-Reply-To: <20171108094147.25854-1-m.szyprowski@samsung.com>
Hi Marek,
I checked style warning of this patch series using checkpatch.pl before merging them but the script says many warnings.
I will comment this.
Thanks,
Inki Dae
2017년 11월 08일 18:41에 Marek Szyprowski 이(가) 쓴 글:
> Dear all,
>
> This patchset performs complete rewrite of Exynos DRM IPP subsystem and
> its userspace API.
>
> Why such rewrite is needed? Exynos DRM IPP API is over-engineered in
> general, but not really extensible on the other side. It is also buggy,
> with significant design flaws:
> - Userspace API covers memory-2-memory picture operations together with
> CRTC writeback and duplicating features, which belongs to video plane.
> - Lack of support of the all required image formats (for example NV12
> Samsung-tiled cannot be used due to lack of pixel format modifier
> support).
> - Userspace API designed only to mimic hardware behaviour, not easy to
> understand.
> - Lack of proper input validation in the core, drivers also didn't do that
> correctly, so it was possible to set incorrect parameters and easil
> trigger IOMMU fault or memory trash.
> - Drivers were partially disfunctional or supported only a subset of modes.
>
> Due to the above limitations and issues the Exynos DRM IPP API was not
> used by any of the open-source projects. I assume that it is safe to remove
> this broken API without any damage to open-source community. All remaining
> users (mainly Tizen project related) will be updated to the new version.
>
> This patchset changes Exynos DRM IPP subsystem to something useful. The
> userspace API is much simpler, state-less and easy to understand. Also
> the code of the core and driver is significantly smaller and easier to
> understand. A new driver to Exynos Scaler hardware module available in
> Exynos5420 and newer SoCs is also added on top of the provided changes.
>
> Patches were tested on Exynos4412 based Odroid U3, Exynos5422
> Odroid XU3 and Exynos5433 TM2 boards, on top of Linux next-20171106 kernel.
>
> A simple userspace test tool has been sent together with v1 of this
> patchset:
> https://www.spinics.net/lists/linux-samsung-soc/msg60498.html
>
> Tobias Jakobi has added support for this new API to his fork of libdrm and
> mpv video player:
> https://github.com/tobiasjakobi/libdrm/tree/ippv2
> https://github.com/tobiasjakobi/mpv
>
> Best regards
> Marek Szyprowski
> Samsung R&D Institute Poland
>
>
> Changelog:
>
> v5:
> - fixed and reworked items pointed by Inki Dae:
> * formats and limits arrays are no longer NULL terminated, all functions
> accessing them require explict array size argument
> * fixed return value for functions in GScaler, FIMC and Rotator drivers
> * simplified exynos_drm_ipp_task_set() function (removed temporary
> buffer)
> * reworked FIMC driver sharing with V4L2 subsystem, now user can specify
> mask of devices assigned to DRM driver (defaults to fimc.2 and fimc.3)
> * removed drivers specific task check (not used anymore)
> - fixed issue pointed by Arnd Bergmann and Tobias Jakobi:
> * removed usage of timeval structures
> - removed more dead-code from GScaler and FIMC drivers
> - fixed IOMMU page fault caused by FIMC operation in 90 degree rotation
> mode
> - added Ack from Rob Herring for Scaler driver
> - generated patches with -B/40% to make Rotator, GScaler and FIMC patches
> easier to read (forced complete rewrite)
>
> v4: https://www.spinics.net/lists/linux-samsung-soc/msg61066.html
> - fixed Exynos GSC limits (alignment) and operation in 90 degree rotation
> mode
> - fixed some style issues in Scaler driver (thanks to Andrzej)
> - fixed copy/paste typos in commit messages
> - improved debug messages, especially if provided parameters exceeds
> hardwave limits
>
> v3: https://www.spinics.net/lists/linux-samsung-soc/msg60981.html
> - fixed minor issues and added features pointed by other developers:
> * fixed missing ipp_unregister (Hoegeun)
> * added missing limits to FIMC and GSC driver (Hoegeun)
> * added more specific compatible strings to GSC driver (Hoegeun)
> * added Exynos5433 support to GSC driver (Hoegeun)
> * added autosuspend runtime PM to all IPP drivers (Tobias)
> - added Exynos5433 support to Scaler driver (thanks to Andrzej)
> - dropped Exynos5420 clk patch, which has been alredy merged
>
> v2: https://www.spinics.net/lists/dri-devel/msg153418.html
> - fixed minor issues pointed by other developers:
> * fixed possible null pointer dereferrence (Tobias)
> * changed limits_size to limits_count (Tobias)
> * renamed struct exynos_drm_ipp_format to drm_exynos_ipp_format (Andrzej)
> * added proper return value from exynos_drm_ipp_get_res_ioctl when no IPP
> driver is present (Andrzej)
> * properly aligned all uapi structures to be 32/64 bit safe (Emil)
> * properly initialize all strucutres
> - added new Exynos Scaler driver from Andrzej Pietrasiewicz
>
> v1: https://www.spinics.net/lists/linux-samsung-soc/msg60492.html
> - initial version of IPP v2
>
> My previous works in this area:
>
> "[RFC v2 0/2] Exynos DRM: add Picture Processor extension"
> https://www.spinics.net/lists/dri-devel/msg140669.html
> - removed usage of DRM objects and properties - replaced them with simple
> list of parameters with predefined IDs
>
> "[RFC 0/4] Exynos DRM: add Picture Processor extension"
> https://www.spinics.net/lists/linux-samsung-soc/msg59323.html
> - moved this feature from DRM core to Exynos DRM driver
> - changed name from framebuffer processor to picture processor
> - simplified code to cover only things needed by Exynos drivers
> - implemented simple fifo task scheduler
> - cleaned up rotator driver conversion (removed IPP remainings)
>
> "[RFC 0/2] New feature: Framebuffer processors"
> https://www.spinics.net/lists/linux-samsung-soc/msg54810.html
> - generic approach implemented in DRM core, rejected
>
>
> Patch summary:
>
> Andrzej Pietrasiewicz (3):
> drm/exynos: Add driver for Exynos Scaler module
> ARM: dts: exynos: Add mem-2-mem Scaler devices
> ARM64: dts: exynos: Add mem-2-mem Scaler devices
>
> Marek Szyprowski (5):
> drm/exynos: ipp: Remove Exynos DRM IPP subsystem
> drm/exynos: ipp: Add IPP v2 framework
> drm/exynos: rotator: Convert driver to IPP v2 core API
> drm/exynos: gsc: Convert driver to IPP v2 core API
> drm/exynos: fimc: Convert driver to IPP v2 core API
>
> .../devicetree/bindings/gpu/samsung-scaler.txt | 27 +
> arch/arm/boot/dts/exynos5420.dtsi | 35 +
> arch/arm64/boot/dts/exynos/exynos5433.dtsi | 42 +
> drivers/gpu/drm/exynos/Kconfig | 17 +-
> drivers/gpu/drm/exynos/Makefile | 1 +
> drivers/gpu/drm/exynos/exynos_drm_drv.c | 25 +-
> drivers/gpu/drm/exynos/exynos_drm_drv.h | 12 +-
> drivers/gpu/drm/exynos/exynos_drm_fimc.c | 3187 +++++++++----------
> drivers/gpu/drm/exynos/exynos_drm_fimc.h | 23 -
> drivers/gpu/drm/exynos/exynos_drm_gsc.c | 3199 +++++++++-----------
> drivers/gpu/drm/exynos/exynos_drm_gsc.h | 24 -
> drivers/gpu/drm/exynos/exynos_drm_ipp.c | 2700 ++++++-----------
> drivers/gpu/drm/exynos/exynos_drm_ipp.h | 425 ++-
> drivers/gpu/drm/exynos/exynos_drm_rotator.c | 1274 +++-----
> drivers/gpu/drm/exynos/exynos_drm_rotator.h | 19 -
> drivers/gpu/drm/exynos/exynos_drm_scaler.c | 693 +++++
> drivers/gpu/drm/exynos/regs-scaler.h | 426 +++
> include/uapi/drm/exynos_drm.h | 796 ++---
> 18 files changed, 5981 insertions(+), 6944 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/gpu/samsung-scaler.txt
> rewrite drivers/gpu/drm/exynos/exynos_drm_fimc.c (45%)
> delete mode 100644 drivers/gpu/drm/exynos/exynos_drm_fimc.h
> rewrite drivers/gpu/drm/exynos/exynos_drm_gsc.c (43%)
> delete mode 100644 drivers/gpu/drm/exynos/exynos_drm_gsc.h
> rewrite drivers/gpu/drm/exynos/exynos_drm_ipp.c (96%)
> rewrite drivers/gpu/drm/exynos/exynos_drm_ipp.h (93%)
> rewrite drivers/gpu/drm/exynos/exynos_drm_rotator.c (72%)
> delete mode 100644 drivers/gpu/drm/exynos/exynos_drm_rotator.h
> create mode 100644 drivers/gpu/drm/exynos/exynos_drm_scaler.c
> create mode 100644 drivers/gpu/drm/exynos/regs-scaler.h
> rewrite include/uapi/drm/exynos_drm.h (44%)
>
prev parent reply other threads:[~2017-11-09 4:41 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20171108094153eucas1p20e6bf5de3d596d5968cfcb25f1e15a78@eucas1p2.samsung.com>
2017-11-08 9:41 ` [PATCH v5 0/8] Exynos DRM: rewrite IPP subsystem and userspace API Marek Szyprowski
2017-11-08 9:41 ` [PATCH v5 1/8] drm/exynos: ipp: Remove Exynos DRM IPP subsystem Marek Szyprowski
2017-11-08 9:41 ` [PATCH v5 2/8] drm/exynos: ipp: Add IPP v2 framework Marek Szyprowski
2017-11-09 4:42 ` Inki Dae
2017-11-08 9:41 ` [PATCH v5 3/8] drm/exynos: rotator: Convert driver to IPP v2 core API Marek Szyprowski
2017-11-08 9:41 ` [PATCH v5 4/8] drm/exynos: gsc: " Marek Szyprowski
2017-11-09 4:43 ` Inki Dae
2017-11-08 9:41 ` [PATCH v5 5/8] drm/exynos: fimc: " Marek Szyprowski
2017-11-08 12:00 ` [PATCH v5 RESEND " Marek Szyprowski
2017-11-09 4:45 ` Inki Dae
2017-11-08 9:41 ` [PATCH v5 6/8] drm/exynos: Add driver for Exynos Scaler module Marek Szyprowski
2017-11-09 4:46 ` Inki Dae
2017-11-08 9:41 ` [PATCH v5 7/8] ARM: dts: exynos: Add mem-2-mem Scaler devices Marek Szyprowski
2017-11-08 9:41 ` [PATCH v5 8/8] ARM64: " Marek Szyprowski
2017-11-09 4:41 ` Inki Dae [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=5A03DC89.6010004@samsung.com \
--to=inki.dae@samsung.com \
--cc=a.hajda@samsung.com \
--cc=andrzej.p@samsung.com \
--cc=b.zolnierkie@samsung.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=hoegeun.kwon@samsung.com \
--cc=krzk@kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=s.nawrocki@samsung.com \
--cc=sw0312.kim@samsung.com \
--cc=tjakobi@math.uni-bielefeld.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.