etnaviv: Only use renderonly_get_handle for GEM handles.
authorEric Anholt <eric@anholt.net>
Wed, 10 May 2017 23:06:11 +0000 (16:06 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 15 Jun 2017 18:41:22 +0000 (11:41 -0700)
Note that for requests for Prime FDs or flink names, we return handles to
the etanviv BO, not the scanout BO.  This is at least better than previous
behavior of returning GEM handles for a request for an FD or flink name.

And add an assert that renderonly_get_handle is only used for getting the
GEM handle.

Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
src/gallium/auxiliary/renderonly/renderonly.h
src/gallium/drivers/etnaviv/etnaviv_resource.c

index d54307329824c1547869fd4dd697b3f72497ff29..70641c45878a11e654bb0ca95b579087c218c5c6 100644 (file)
@@ -87,6 +87,7 @@ renderonly_get_handle(struct renderonly_scanout *scanout,
    if (!scanout)
       return FALSE;
 
+   assert(handle->type == DRM_API_HANDLE_TYPE_KMS);
    handle->handle = scanout->handle;
    handle->stride = scanout->stride;
 
index 9aa1aa617a5138b7ddac305e0b41db91e1299fc2..1c098445b17a6fed0b2610f3ea7f864a6acb012c 100644 (file)
@@ -401,7 +401,8 @@ etna_resource_get_handle(struct pipe_screen *pscreen,
 {
    struct etna_resource *rsc = etna_resource(prsc);
 
-   if (renderonly_get_handle(rsc->scanout, handle))
+   if (handle->type == DRM_API_HANDLE_TYPE_KMS &&
+       renderonly_get_handle(rsc->scanout, handle))
       return TRUE;
 
    return etna_screen_bo_get_handle(pscreen, rsc->bo, rsc->levels[0].stride,