Kenneth Graunke <[email protected]> writes: > Kernel 4.16 has proper context isolation, which means we can change > the L3 configuration without worrying about that leaking to other > newly created contexts, breaking the assumptions of other userspace. > > So, disable our workaround to reprogram it back to the default. > --- > src/mesa/drivers/dri/i965/intel_batchbuffer.c | 5 +++-- > src/mesa/drivers/dri/i965/intel_screen.c | 3 +++ > src/mesa/drivers/dri/i965/intel_screen.h | 1 + > 3 files changed, 7 insertions(+), 2 deletions(-) > > I tested this locally with Piglit and KHR-GLES31.*compute* running > concurrently, on 4.16-rc1. It seemed to work fine. I verified that > there were no regressions in the CI, but the CI doesn't run 4.16+, so > I wouldn't expect much to show up there. >
I doubt that running Piglit and CTS alone would have caught much, because they shouldn't ever have been particularly sensitive to L3 state leaks since they don't use MI_RESTORE_INHIBIT. That said this seems like the right thing to do to me: Reviewed-by: Francisco Jerez <[email protected]> > 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 cc9b3486743..d275b28a4b9 100644 > --- a/src/mesa/drivers/dri/i965/intel_screen.c > +++ b/src/mesa/drivers/dri/i965/intel_screen.c > @@ -2654,6 +2654,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; > > -- > 2.16.1 > > _______________________________________________ > mesa-dev mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
