On Wed, Feb 23, 2022 at 03:46:01PM +0100, Thierry Reding wrote: > On Fri, Feb 18, 2022 at 11:29:34AM +0200, Mikko Perttunen wrote: > > On 2/17/22 21:19, Thierry Reding wrote: > > > From: Thierry Reding <treding@xxxxxxxxxx> > > > > > > The Video Image Composer (VIC) 4.0 can be found on NVIDIA Tegra210 SoCs. > > > It uses a different class (B0B6) that is slightly incompatible with the > > > class found on earlier generations. > > > > > > Signed-off-by: Thierry Reding <treding@xxxxxxxxxx> > > > --- > > > tests/tegra/meson.build | 2 + > > > tests/tegra/vic.c | 7 + > > > tests/tegra/vic40.c | 370 ++++++++++++++++++++++++++++++++++++++++ > > > tests/tegra/vic40.h | 285 +++++++++++++++++++++++++++++++ > > > 4 files changed, 664 insertions(+) > > > create mode 100644 tests/tegra/vic40.c > > > create mode 100644 tests/tegra/vic40.h > > > > > > diff --git a/tests/tegra/meson.build b/tests/tegra/meson.build > > > index 1ee29d0afe1b..e9c2bc875a01 100644 > > > --- a/tests/tegra/meson.build > > > +++ b/tests/tegra/meson.build > > > @@ -36,6 +36,8 @@ libdrm_test_tegra = static_library( > > > 'vic.h', > > > 'vic30.c', > > > 'vic30.h', > > > + 'vic40.c', > > > + 'vic40.h', > > > ), config_file ], > > > include_directories : [inc_root, inc_drm, inc_tegra], > > > link_with : libdrm, > > > diff --git a/tests/tegra/vic.c b/tests/tegra/vic.c > > > index f24961ac5c6d..e0a97c059eca 100644 > > > --- a/tests/tegra/vic.c > > > +++ b/tests/tegra/vic.c > > > @@ -134,6 +134,10 @@ void vic_image_dump(struct vic_image *image, FILE *fp) > > > int vic30_new(struct drm_tegra *drm, struct drm_tegra_channel *channel, > > > struct vic **vicp); > > > +/* from vic40.c */ > > > +int vic40_new(struct drm_tegra *drm, struct drm_tegra_channel *channel, > > > + struct vic **vicp); > > > + > > > int vic_new(struct drm_tegra *drm, struct drm_tegra_channel *channel, > > > struct vic **vicp) > > > { > > > @@ -144,6 +148,9 @@ int vic_new(struct drm_tegra *drm, struct drm_tegra_channel *channel, > > > switch (version) { > > > case 0x40: > > > return vic30_new(drm, channel, vicp); > > > + > > > + case 0x21: > > > + return vic40_new(drm, channel, vicp); > > > } > > > return -ENOTSUP; > > > diff --git a/tests/tegra/vic40.c b/tests/tegra/vic40.c > > > new file mode 100644 > > > index 000000000000..1a5d2af6b0b6 > > > --- /dev/null > > > +++ b/tests/tegra/vic40.c > > > @@ -0,0 +1,370 @@ > > > +/* > > > + * Copyright © 2018 NVIDIA Corporation > > > + * > > > + * Permission is hereby granted, free of charge, to any person obtaining a > > > + * copy of this software and associated documentation files (the "Software"), > > > + * to deal in the Software without restriction, including without limitation > > > + * the rights to use, copy, modify, merge, publish, distribute, sublicense, > > > + * and/or sell copies of the Software, and to permit persons to whom the > > > + * Software is furnished to do so, subject to the following conditions: > > > + * > > > + * The above copyright notice and this permission notice shall be included in > > > + * all copies or substantial portions of the Software. > > > + * > > > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > > > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > > > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL > > > + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR > > > + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, > > > + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR > > > + * OTHER DEALINGS IN THE SOFTWARE. > > > + */ > > > + > > > +#include <errno.h> > > > +#include <string.h> > > > + > > > +#include "private.h" > > > +#include "tegra.h" > > > +#include "vic.h" > > > +#include "vic40.h" > > > + > > > +struct vic40 { > > > + struct vic base; > > > + > > > + struct { > > > + struct drm_tegra_mapping *map; > > > + struct drm_tegra_bo *bo; > > > + } config; > > > + > > > + struct { > > > + struct drm_tegra_mapping *map; > > > + struct drm_tegra_bo *bo; > > > + } filter; > > > + > > > + struct { > > > + struct drm_tegra_mapping *map; > > > + struct drm_tegra_bo *bo; > > > + } hist; > > > +}; > > > > Histogram buffer not necessary at least on VIC4.0 and later. (Same applies > > to VIC4.1 and VIC4.2 patches). > > I'm pretty sure that I saw SMMU faults without this on all of Tegra210, > Tegra186 and Tegra194. I'll go and test this once more. Nevermind, I see now that this buffer isn't used at all on VIC 4.0, 4.1 and 4.2. I misread your comment as this buffer not needing to be supplied in the command streams. Removed all code related to that from the newer versions of VIC. Thierry
Attachment:
signature.asc
Description: PGP signature