From bc311ec3f0649ae8bc0effd934e6ad3204d59ae4 Mon Sep 17 00:00:00 2001 From: Anssi Hannula Date: Fri, 3 May 2019 15:16:28 +0300 Subject: [PATCH] i965: fix miptree creation failure with old kernels Old kernels may not have MMAP WC support which is required for ISL_AUX_USAGE_MCS. brw_bo_map() for the aux buffers fails without it, and there is no non-MCS fallback - miptree creation simply fails. Add a check for MMAP WC before aux_usage is selected. Signed-off-by: Anssi Hannula --- src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 4 ++++ src/mesa/drivers/dri/i965/intel_screen.c | 3 +++ src/mesa/drivers/dri/i965/intel_screen.h | 1 + 3 files changed, 8 insertions(+) diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c index e1fcdb55662..e7a8a84fd07 100644 --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c @@ -64,6 +64,10 @@ intel_miptree_supports_mcs(struct brw_context *brw, { const struct gen_device_info *devinfo = &brw->screen->devinfo; + /* MCS requires MMAP WC */ + if (!(brw->screen->kernel_features & KERNEL_ALLOWS_MMAP_WC)) + return false; + /* MCS compression only applies to multisampled miptrees */ if (mt->surf.samples <= 1) return false; diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c index d84793f71f8..fd8820f6478 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.c +++ b/src/mesa/drivers/dri/i965/intel_screen.c @@ -2734,6 +2734,9 @@ __DRIconfig **intelInitScreen2(__DRIscreen *dri_screen) if (intel_get_boolean(screen, I915_PARAM_HAS_CONTEXT_ISOLATION)) screen->kernel_features |= KERNEL_ALLOWS_CONTEXT_ISOLATION; + if (intel_get_integer(screen, I915_PARAM_MMAP_VERSION) > 0) + screen->kernel_features |= KERNEL_ALLOWS_MMAP_WC; + const char *force_msaa = getenv("INTEL_FORCE_MSAA"); if (force_msaa) { screen->winsys_msaa_samples_override = diff --git a/src/mesa/drivers/dri/i965/intel_screen.h b/src/mesa/drivers/dri/i965/intel_screen.h index d0ebab4bbd5..364b5ced900 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.h +++ b/src/mesa/drivers/dri/i965/intel_screen.h @@ -82,6 +82,7 @@ struct intel_screen #define KERNEL_ALLOWS_EXEC_CAPTURE (1<<5) #define KERNEL_ALLOWS_EXEC_BATCH_FIRST (1<<6) #define KERNEL_ALLOWS_CONTEXT_ISOLATION (1<<7) +#define KERNEL_ALLOWS_MMAP_WC (1<<8) struct brw_bufmgr *bufmgr; -- 2.17.2