[Mesa-dev] SSBO's in UniformBlocks list?

Iago Toral itoral at igalia.com
Tue Sep 29 23:26:29 PDT 2015


On Tue, 2015-09-29 at 11:19 -0400, Ilia Mirkin wrote:
> On Tue, Sep 29, 2015 at 4:33 AM, Iago Toral <itoral at igalia.com> wrote:
> > Hi ilia,
> >
> > On Tue, 2015-09-29 at 03:53 -0400, Ilia Mirkin wrote:
> >> Hi Samuel, and any other onlookers,
> >>
> >> I was wondering why the decision was made to stick SSBO's onto the
> >> same list as constbufs. Seems like they're entirely separate entities,
> >> no? Perhaps I'm missing something?
> >
> > The reason for this was that there is a lot of code in the compiler to
> > handle uniform blocks and all the rules for them and we needed the same
> > treatment for SSBOs, so that seemed like a reasonable way forward to
> > reuse a lot of the code in the compiler front end. I think the only
> > place where we needed to make explicit distinctions is when we check for
> > resource limits, since these are different for UBOs and SSBOs of course.
> > Although UBOs and SSBOs are separate entities they have a lot of
> > similarities too, so that did not look like a terrible idea, considering
> > the benefits.
> 
> My concern is around indexing... now the per-stage indices are in the
> combined UBO/SSBO space -- how do I tease out the individual ones?
> Easy enough when you can loop over NumUniformBlocks and just count the
> right type, but what about in the shader, where I get the buffer index
> in a ir_rvalue?

We assumed that backends could work with a shared index space between
UBOs and SSBOs. In i965 at least that is not a problem and makes things
easy: we simply use the block index we get from the IR directly, the
driver does not use a separate buffer space for them and handles SSBOs
just the same as UBOs, only that the buffer has different flags.

However, if we think this is not ideal we can look into having separate
index spaces.

Iago



More information about the mesa-dev mailing list