diff options
-rw-r--r-- | src/gallium/drivers/etnaviv/etnaviv_resource.c | 21 | ||||
-rw-r--r-- | src/gallium/drivers/etnaviv/etnaviv_screen.c | 19 | ||||
-rw-r--r-- | src/gallium/drivers/etnaviv/etnaviv_screen.h | 4 |
3 files changed, 16 insertions, 28 deletions
diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.c b/src/gallium/drivers/etnaviv/etnaviv_resource.c index b1a814d4a39..c7eef96a6e8 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_resource.c +++ b/src/gallium/drivers/etnaviv/etnaviv_resource.c @@ -479,12 +479,23 @@ etna_resource_get_handle(struct pipe_screen *pscreen, if (rsc->external) rsc = etna_resource(rsc->external); - if (handle->type == DRM_API_HANDLE_TYPE_KMS && - renderonly_get_handle(scanout, handle)) + handle->stride = rsc->levels[0].stride; + + if (handle->type == DRM_API_HANDLE_TYPE_SHARED) { + return etna_bo_get_name(rsc->bo, &handle->handle) == 0; + } else if (handle->type == DRM_API_HANDLE_TYPE_KMS) { + if (renderonly_get_handle(scanout, handle)) { + return TRUE; + } else { + handle->handle = etna_bo_handle(rsc->bo); + return TRUE; + } + } else if (handle->type == DRM_API_HANDLE_TYPE_FD) { + handle->handle = etna_bo_dmabuf(rsc->bo); return TRUE; - - return etna_screen_bo_get_handle(pscreen, rsc->bo, rsc->levels[0].stride, - handle); + } else { + return FALSE; + } } void diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c index 3a8066c0ffb..aa24c856b71 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c @@ -708,25 +708,6 @@ fail: return false; } -boolean -etna_screen_bo_get_handle(struct pipe_screen *pscreen, struct etna_bo *bo, - unsigned stride, struct winsys_handle *whandle) -{ - whandle->stride = stride; - - if (whandle->type == DRM_API_HANDLE_TYPE_SHARED) { - return etna_bo_get_name(bo, &whandle->handle) == 0; - } else if (whandle->type == DRM_API_HANDLE_TYPE_KMS) { - whandle->handle = etna_bo_handle(bo); - return TRUE; - } else if (whandle->type == DRM_API_HANDLE_TYPE_FD) { - whandle->handle = etna_bo_dmabuf(bo); - return TRUE; - } else { - return FALSE; - } -} - struct etna_bo * etna_screen_bo_from_handle(struct pipe_screen *pscreen, struct winsys_handle *whandle, unsigned *out_stride) diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.h b/src/gallium/drivers/etnaviv/etnaviv_screen.h index bec740b0a00..dc57a38dbb8 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.h +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.h @@ -84,10 +84,6 @@ etna_screen(struct pipe_screen *pscreen) return (struct etna_screen *)pscreen; } -boolean -etna_screen_bo_get_handle(struct pipe_screen *pscreen, struct etna_bo *bo, - unsigned stride, struct winsys_handle *whandle); - struct etna_bo * etna_screen_bo_from_handle(struct pipe_screen *pscreen, struct winsys_handle *whandle, unsigned *out_stride); |