diff options
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_batchbuffer.c | 5 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_screen.c | 3 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_screen.h | 1 |
3 files changed, 7 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c b/src/mesa/drivers/dri/i965/intel_batchbuffer.c index 8a2b4218608..d0999bb3caa 100644 --- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c +++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c @@ -739,9 +739,10 @@ brw_finish_batch(struct brw_context *brw) if (brw->batch.ring == RENDER_RING) { /* Work around L3 state leaks into contexts set MI_RESTORE_INHIBIT which * assume that the L3 cache is configured according to the hardware - * defaults. + * defaults. On Kernel 4.16+, we no longer need to do this. */ - if (devinfo->gen >= 7) + if (devinfo->gen >= 7 && + !(brw->screen->kernel_features & KERNEL_ALLOWS_CONTEXT_ISOLATION)) gen7_restore_default_l3_config(brw); if (devinfo->is_haswell) { diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c index 768634d92e0..f9e799f9a35 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.c +++ b/src/mesa/drivers/dri/i965/intel_screen.c @@ -2660,6 +2660,9 @@ __DRIconfig **intelInitScreen2(__DRIscreen *dri_screen) if (devinfo->gen >= 8 || screen->cmd_parser_version >= 5) screen->kernel_features |= KERNEL_ALLOWS_COMPUTE_DISPATCH; + if (intel_get_boolean(screen, I915_PARAM_HAS_CONTEXT_ISOLATION)) + screen->kernel_features |= KERNEL_ALLOWS_CONTEXT_ISOLATION; + 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 ef2d08974ed..a2bce921449 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.h +++ b/src/mesa/drivers/dri/i965/intel_screen.h @@ -81,6 +81,7 @@ struct intel_screen #define KERNEL_ALLOWS_COMPUTE_DISPATCH (1<<4) #define KERNEL_ALLOWS_EXEC_CAPTURE (1<<5) #define KERNEL_ALLOWS_EXEC_BATCH_FIRST (1<<6) +#define KERNEL_ALLOWS_CONTEXT_ISOLATION (1<<7) struct brw_bufmgr *bufmgr; |