summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2018-01-11 17:33:36 -0800
committerJason Ekstrand <[email protected]>2018-01-21 23:07:18 -0800
commit50485723523d2948a44570ba110f02f726f86a54 (patch)
treeede5f838aed537a5c5e79fad9db951c8af4e4382
parentb9e7b29705cb17ef7f88d346db823c9b99810249 (diff)
i965: Set tiling on BOs imported with modifiers
We need this to ensure that GTT maps work on buffers we get from Vulkan on the off chance that someone does a readpixels or something. Soon, we will be removing GTT maps from i965 entirely and this can be reverted. None the less, it's needed for stable. Reviewed-by: Kenneth Graunke <[email protected]> Cc: [email protected]
-rw-r--r--src/mesa/drivers/dri/i965/intel_screen.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c
index 9dbda5142e5..a4e34e9f2cf 100644
--- a/src/mesa/drivers/dri/i965/intel_screen.c
+++ b/src/mesa/drivers/dri/i965/intel_screen.c
@@ -1032,7 +1032,16 @@ intel_create_image_from_fds_common(__DRIscreen *dri_screen,
image->planar_format = f;
- image->bo = brw_bo_gem_create_from_prime(screen->bufmgr, fds[0]);
+ if (modifier != DRM_FORMAT_MOD_INVALID) {
+ const struct isl_drm_modifier_info *mod_info =
+ isl_drm_modifier_get_info(modifier);
+ uint32_t tiling = isl_tiling_to_i915_tiling(mod_info->tiling);
+ image->bo = brw_bo_gem_create_from_prime_tiled(screen->bufmgr, fds[0],
+ tiling, strides[0]);
+ } else {
+ image->bo = brw_bo_gem_create_from_prime(screen->bufmgr, fds[0]);
+ }
+
if (image->bo == NULL) {
free(image);
return NULL;