Mesa (master): iris: Make iris_bo_import_dmabuf take a modifier
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Aug 13 22:12:19 UTC 2020
Module: Mesa
Branch: master
Commit: 493298528a82e2ab7cf3ce6aed187fe19730e3d0
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=493298528a82e2ab7cf3ce6aed187fe19730e3d0
Author: Nanley Chery <nanley.g.chery at intel.com>
Date: Thu Jul 30 11:47:23 2020 -0700
iris: Make iris_bo_import_dmabuf take a modifier
Replace the tiling parameter with a modifier parameter. I find it more
straightforward to have this function figure out the tiling from the
modifier than to have its caller do it.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6296>
---
src/gallium/drivers/iris/iris_bufmgr.c | 9 +++++----
src/gallium/drivers/iris/iris_bufmgr.h | 2 +-
src/gallium/drivers/iris/iris_resource.c | 7 +------
3 files changed, 7 insertions(+), 11 deletions(-)
diff --git a/src/gallium/drivers/iris/iris_bufmgr.c b/src/gallium/drivers/iris/iris_bufmgr.c
index a2f60f175af..b733ab330be 100644
--- a/src/gallium/drivers/iris/iris_bufmgr.c
+++ b/src/gallium/drivers/iris/iris_bufmgr.c
@@ -1381,7 +1381,7 @@ bo_set_tiling_internal(struct iris_bo *bo, uint32_t tiling_mode,
struct iris_bo *
iris_bo_import_dmabuf(struct iris_bufmgr *bufmgr, int prime_fd,
- int tiling)
+ uint64_t modifier)
{
uint32_t handle;
struct iris_bo *bo;
@@ -1441,9 +1441,10 @@ iris_bo_import_dmabuf(struct iris_bufmgr *bufmgr, int prime_fd,
bo->gem_handle = handle;
_mesa_hash_table_insert(bufmgr->handle_table, &bo->gem_handle, bo);
- if (tiling != -1) {
- /* Modifiers path */
- bo->tiling_mode = tiling;
+ const struct isl_drm_modifier_info *mod_info =
+ isl_drm_modifier_get_info(modifier);
+ if (mod_info) {
+ bo->tiling_mode = isl_tiling_to_i915_tiling(mod_info->tiling);
} else if (bufmgr->has_tiling_uapi) {
struct drm_i915_gem_get_tiling get_tiling = { .handle = bo->gem_handle };
if (gen_ioctl(bufmgr->fd, DRM_IOCTL_I915_GEM_GET_TILING, &get_tiling))
diff --git a/src/gallium/drivers/iris/iris_bufmgr.h b/src/gallium/drivers/iris/iris_bufmgr.h
index a2fe9684246..b78794c9be2 100644
--- a/src/gallium/drivers/iris/iris_bufmgr.h
+++ b/src/gallium/drivers/iris/iris_bufmgr.h
@@ -396,7 +396,7 @@ void iris_destroy_hw_context(struct iris_bufmgr *bufmgr, uint32_t ctx_id);
int iris_bo_export_dmabuf(struct iris_bo *bo, int *prime_fd);
struct iris_bo *iris_bo_import_dmabuf(struct iris_bufmgr *bufmgr, int prime_fd,
- int tiling);
+ uint64_t modifier);
/**
* Exports a bo as a GEM handle into a given DRM file descriptor
diff --git a/src/gallium/drivers/iris/iris_resource.c b/src/gallium/drivers/iris/iris_resource.c
index 53643d1b16c..d0cda57642f 100644
--- a/src/gallium/drivers/iris/iris_resource.c
+++ b/src/gallium/drivers/iris/iris_resource.c
@@ -1034,19 +1034,14 @@ iris_resource_from_handle(struct pipe_screen *pscreen,
struct iris_resource *res = iris_alloc_resource(pscreen, templ);
const struct isl_drm_modifier_info *mod_inf =
isl_drm_modifier_get_info(whandle->modifier);
- int tiling;
if (!res)
return NULL;
switch (whandle->type) {
case WINSYS_HANDLE_TYPE_FD:
- if (mod_inf)
- tiling = isl_tiling_to_i915_tiling(mod_inf->tiling);
- else
- tiling = -1;
res->bo = iris_bo_import_dmabuf(bufmgr, whandle->handle,
- tiling);
+ whandle->modifier);
break;
case WINSYS_HANDLE_TYPE_SHARED:
res->bo = iris_bo_gem_create_from_name(bufmgr, "winsys image",
More information about the mesa-commit
mailing list