On Tue, Jan 8, 2019 at 7:18 PM Ilia Mirkin <imir...@alum.mit.edu> wrote:

> On Tue, Jan 8, 2019 at 6:21 PM Marek Olšák <mar...@gmail.com> wrote:
> >
> > On Tue, Jan 8, 2019 at 5:25 PM Ilia Mirkin <imir...@alum.mit.edu> wrote:
> >>
> >> Why does this need to be in p_state? And who is responsible for
> >> setting it (and how will it be set)?
> >
> >
> > Oh right, there is a way to get it out of p_state.h if needed.
> >
> > It should be set to 0 by default.
> >
> > If your thread block is 8x8x1, but you need to launch 10x8x1 threads,
> set partial_block = {2, 0, 0}. It will launch the following thread blocks:
> > 8x8x1
> > 2x8x1
> >
> > It's the same as launching 16x8x1 threads and doing this at the
> beginning of the compute shader:
> >   if (globalThreadID.x >= 10) return;
>
> But that all sounds like something a state tracker wouldn't care
> about, right? In e.g. GLSL you can specify the block to be 10x8x1 and
> let the backend work it all out. Should st/mesa care about this (or
> clover or whatever)?
>

The block size should be a multiple of 64 on radeonsi to utilize all SIMD
lanes. If you want to launch 8192+1 threads with the block size of 64, you
need to launch 1 partial block with the block size of 1 at the end. OpenGL
can't do this.

Marek
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to