crocus: Make iris_bo_import_dmabuf take a modifier

Port 493298528a from iris

    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.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11352>
This commit is contained in:
Dave Airlie
2021-06-14 11:51:37 +10:00
committed by Marge Bot
parent 4cd0f8535c
commit 1e6e87a3c9
3 changed files with 7 additions and 11 deletions
+5 -4
View File
@@ -1219,7 +1219,7 @@ crocus_bo_get_tiling(struct crocus_bo *bo, uint32_t *tiling_mode,
struct crocus_bo *
crocus_bo_import_dmabuf(struct crocus_bufmgr *bufmgr, int prime_fd,
uint32_t tiling)
uint64_t modifier)
{
uint32_t handle;
struct crocus_bo *bo;
@@ -1265,9 +1265,10 @@ crocus_bo_import_dmabuf(struct crocus_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 (intel_ioctl(bufmgr->fd, DRM_IOCTL_I915_GEM_GET_TILING, &get_tiling))
+1 -1
View File
@@ -306,7 +306,7 @@ void crocus_destroy_hw_context(struct crocus_bufmgr *bufmgr, uint32_t ctx_id);
int crocus_bo_export_dmabuf(struct crocus_bo *bo, int *prime_fd);
struct crocus_bo *crocus_bo_import_dmabuf(struct crocus_bufmgr *bufmgr,
int prime_fd, uint32_t tiling);
int prime_fd, uint64_t modifier);
/**
* Exports a bo as a GEM handle into a given DRM file descriptor
+1 -6
View File
@@ -856,19 +856,14 @@ crocus_resource_from_handle(struct pipe_screen *pscreen,
struct crocus_resource *res = crocus_alloc_resource(pscreen, templ);
const struct isl_drm_modifier_info *mod_inf =
isl_drm_modifier_get_info(whandle->modifier);
uint32_t 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 = I915_TILING_LAST + 1;
res->bo = crocus_bo_import_dmabuf(bufmgr, whandle->handle,
tiling);
whandle->modifier);
break;
case WINSYS_HANDLE_TYPE_SHARED:
res->bo = crocus_bo_gem_create_from_name(bufmgr, "winsys image",