[Intel-gfx] [RFC] xf86-video-intel: enable hw-generated binding tables

Ville Syrjälä ville.syrjala at linux.intel.com
Wed Apr 23 19:50:21 CEST 2014


On Wed, Apr 23, 2014 at 06:52:09PM +0200, Daniel Vetter wrote:
> On Wed, Apr 23, 2014 at 1:21 PM, Abdiel Janulgue
> <abdiel.janulgue at linux.intel.com> wrote:
> > I've already tried disabling RS at the end of every batch so that next batch
> > in different context can continue to use older non-RS format. That does not
> > work either and still causes hangs.
> >
> > What I've seen so far, it seems GPU does not like switching the format of
> > commands from RS-format to non-RS format. It's either one way or the other. If
> > switched on, it affects subsequent contexes henceforth expecting RS-format
> > commands until the GPU gets reset. That's probably the note in bspec:
> >
> > "the binding table generator feature has a simple all or nothing model".
> 
> Oh hooray, that's just awesome :( So we indeed need to stop the gpu
> and reset it if there's a non-RS render batch after any RS render
> batch.

I'm not sure I buy it. There's an example in the spec showing how to
disable the RS around eg. GPGPU workloads and re-enable it for 3D
workloads even within one batch. I guess it's possible that the GPGPU
pipeline mode is somehow special here, but since the RS state is
supposed to be saved to the context I'm thinking you should be able to
disable it whenever you want.

What's really confusing with that example is the fact that it first
re-enables the binding tables and then the RS, but then there's a note
after that saying you have to those steps in the opposite order.

Anyhoo, I'm wondering if the problems are simply due to disabling RS but
leaving the binding tables enabled?

So one idea might be that when we switch from executing an RS batch to a
non-RS batch, we should disable the RS and binding tables manually. We
would then have to demand that any user batch which needs the binding
tables enabled must enable them, even if if we just executed a batch that
already used the binding tables. And when we need to disable the RS and
binding tables we could either have the kernel do that autmagically when
it notices a RS->non-RS transition, or we could also demand that all user
batches must disable the binding tables at the end. But maybe demanding
that from every batch would incur some extra overhead? In any case it
should be fairly easy to try that and see if it cures the hangs. Or are
you already doing things that way?

-- 
Ville Syrjälä
Intel OTC



More information about the Intel-gfx mailing list