Mesa (master): etnaviv: Only use renderonly_get_handle for GEM handles.

Eric Anholt anholt at kemper.freedesktop.org
Thu Jun 15 19:40:37 UTC 2017


Module: Mesa
Branch: master
Commit: 7a171913052bacfee4c68f6fbd2b5d67e001dbae
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7a171913052bacfee4c68f6fbd2b5d67e001dbae

Author: Eric Anholt <eric at anholt.net>
Date:   Wed May 10 16:06:11 2017 -0700

etnaviv: Only use renderonly_get_handle for GEM handles.

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 at anholt.net>
Reviewed-by: Christian Gmeiner <christian.gmeiner at gmail.com>

---

 src/gallium/auxiliary/renderonly/renderonly.h  | 1 +
 src/gallium/drivers/etnaviv/etnaviv_resource.c | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/gallium/auxiliary/renderonly/renderonly.h b/src/gallium/auxiliary/renderonly/renderonly.h
index d543073298..70641c4587 100644
--- a/src/gallium/auxiliary/renderonly/renderonly.h
+++ b/src/gallium/auxiliary/renderonly/renderonly.h
@@ -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;
 
diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.c b/src/gallium/drivers/etnaviv/etnaviv_resource.c
index 9aa1aa617a..1c098445b1 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_resource.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_resource.c
@@ -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,




More information about the mesa-commit mailing list