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

Christian König christian.koenig at amd.com
Tue Jun 15 14:51:01 UTC 2021


Hi Petri,

Am 15.06.21 um 16:46 schrieb Mark Yacoub:
> On Tue, Jun 15, 2021 at 5:03 AM Petri Latvala <petri.latvala at intel.com> wrote:
>> On Mon, Jun 14, 2021 at 12:41:34PM -0400, 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);
>>> +}
>> How is real (aka non-IGT) userspace supposed to handle this? Will they
>> need to check if the device is an AMD device before deciding whether
>> to import?
>>
>> What happens in this test without this patch?
> amdgpu fails to create a framebuffer if the drm_gem_object has a valid
> `import_attach` property.
>> +Cc Arek. My initial impression for this is that the kernel should
>> take care of the idiosyncracies but I'm lacking the big picture.

Using DMA-buf imported buffer objects as scanout is in general vendor 
specific.

In other words failing to create a framebuffer is the normal reaction here.

Only AMD GPUs in some hardware variants, probably some ARM SOCs and 
maybe i915 can handle that. All other drivers should fail here.

The general approach should be to try to create a framebuffer and if 
that doesn't work use a fallback mechanism.

Regards,
Christian.

>>
>>
>> --
>> Petri Latvala



More information about the igt-dev mailing list