gallium/winsys/kms: Look up the GEM handle after importing a prime FD
authorTomasz Figa <tfiga@chromium.org>
Tue, 2 Aug 2016 10:46:28 +0000 (19:46 +0900)
committerEmil Velikov <emil.l.velikov@gmail.com>
Wed, 24 Aug 2016 13:39:23 +0000 (14:39 +0100)
commit577f85e2bba093084d5d2af6047aeb328d708d9b
tree817f4dd4ded4ae2a12302708457543af58e14251
parent0465c72d46e49bb26c5f1f09bc70074d49e82196
gallium/winsys/kms: Look up the GEM handle after importing a prime FD

drmPrimeHandleToFD() will return the same GEM handle every time the same
buffer is imported, even from a different prime FD. Since GEM handles
are not reference counted, we need to make sure that each GEM handle is
referenced only by one display target struct, by looking it up in
kms_sw->bo_list first and bumping the refcount of the found dt on hit
and falling back to creating a new dt only on miss.

v2: Split into separate function.
    Use helper function for lookup.

v3 [Emil Velikov]:
    Rename kms_sw_displaytarget_{lookup,find_and_ref} (Jordan)

Signed-off-by: Tomasz Figa <tfiga@chromium.org>
CC: <mesa-stable@lists.freedesktop.org>
Reviewed-by: Hans de Goede <hdegoede@redhat.com> (v2)
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
src/gallium/winsys/sw/kms-dri/kms_dri_sw_winsys.c