[igt-dev] [PATCH] tests/kms_prime: Filter out devices that can't import buffers.

Mark Yacoub markyacoub at chromium.org
Tue Jun 15 14:49:26 UTC 2021


On Tue, Jun 15, 2021 at 9:43 AM Christian König
<christian.koenig at amd.com> wrote:
>
> Hi guys,
>
> first of all thanks Rodrigo for bringing this to my attention.
>
> Mark, as the DMA-buf maintainer I unfortunately have to reject this patch.
This test is currently running on i915, but fails on amdgpu due to the
check of `import_attach` (this is the commit that introduced the
change: https://gitlab.freedesktop.org/agd5f/linux/-/commit/1769152ac64b0b07583f696b621624df2ca4c840)
What do you recommend instead?
>
> Direct scanout from imported surfaces is not something supported with
> DMA-buf in general at the moment.
Do you mean the problem is in the test itself?
>
> We do have some support for this between AMD GPUs in A+A laptops, and it
> might work with i915 and some of the drivers used on ARM.
>
> But all of this is completely vendor specific since there are some very
> low level and hardware specific limitations to take account into.
>
> Regards,
> Christian.
>
> Am 15.06.21 um 15:12 schrieb Rodrigo Siqueira:
> > Hi Alex and Christian,
> >
> > This patch is related to prime, but I'm not familiar with this part of
> > our driver. Could you take a look at that?
> >
> > Thanks
> >
> > On 06/14, Mark Yacoub wrote:
> >> Some devices such as amdgpu do not support imported buffers.
> >> Filter out those devices.
> >> Tested on Zork with chromeos-kernel-5_4.
> >>
> >> Signed-off-by: Mark Yacoub <markyacoub at chromium.org>
> >> ---
> >>   tests/kms_prime.c | 14 ++++++++++++--
> >>   1 file changed, 12 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/tests/kms_prime.c b/tests/kms_prime.c
> >> index 8cb2ca2a..480c7eb4 100644
> >> --- a/tests/kms_prime.c
> >> +++ b/tests/kms_prime.c
> >> @@ -249,6 +249,16 @@ static void test_crc(int exporter_fd, int importer_fd)
> >>      igt_display_fini(&display);
> >>   }
> >>
> >> +/* The test attempts to import the buffer object from one device to another.
> >> + * Filter out devices that aren't capable of doing this.
> >> + */
> >> +bool does_device_support_dmabuf_import(int fd) {
> >> +    /* AMDGPU uses VRAM. Any use of the fb will migrate it to VRAM, which is not sensible for
> >> +     * an imported dma-buf.
> >> +     */
> >> +    return !is_amdgpu_device(fd);
> >> +}
> >> +
> >>   igt_main
> >>   {
> >>      igt_fixture
> >> @@ -262,10 +272,10 @@ igt_main
> >>
> >>              /* ANY = anything that is not VGEM */
> >>              first_fd = __drm_open_driver_another(0, DRIVER_ANY | DRIVER_VGEM);
> >> -            igt_require(first_fd >= 0);
> >> +            igt_require(first_fd >= 0 && does_device_support_dmabuf_import(first_fd));
> >>
> >>              second_fd = __drm_open_driver_another(1, DRIVER_ANY | DRIVER_VGEM);
> >> -            igt_require(second_fd >= 0);
> >> +            igt_require(second_fd >= 0 && does_device_support_dmabuf_import(second_fd));
> >>
> >>              if (has_prime_export(first_fd) &&
> >>                  has_prime_import(second_fd))
> >> --
> >> 2.32.0.272.g935e593368-goog
> >>
>


More information about the igt-dev mailing list