[Mesa-dev] non-16byte-aligned constant buffers in gallium?

Roland Scheidegger sroland at vmware.com
Sat Apr 18 03:56:30 PDT 2015


Ah I totally missed that it's queryable!
So I guess this is a test bug then.
(Interestingly, the spec doesn't quite tell what happens in the case if
a buffer's size isn't sufficiently aligned - if the offset is not
sufficiently aligned an error is generated but not if the size isn't.
The state table clearly tell though UNIFORM_BUFFER_OFFSET_ALIGNMENT is
for both offset and size.)

Roland


Am 18.04.2015 um 12:03 schrieb Marek Olšák:
> Hi Roland,
> 
> GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT or
> PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT is what you're looking for.
> I guess the test shouldn't ignore that. The value is 256 for R600 and
> 4 for GCN.
> 
> Marek
> 
> On Sat, Apr 18, 2015 at 5:46 AM, Roland Scheidegger <sroland at vmware.com> wrote:
>> Hi,
>>
>> when looking at a regression (piglit
>> ext_transform_feedback-immediate-reuse-uniform-buffer, bug 90081) I
>> realized that behavior wrt non-size-aligned constant buffers doesn't
>> seem to be all that clear cut. In particular I'm wondering if what the
>> test (or rather the state tracker) does is actually ok?
>> Constant buffers were always really considered to have been consisting
>> of vec4 of floats (they are accessed with xyzw semantics after all),
>> hence having a constant buffer with a size not a multiple of 16 bytes
>> seems rather odd. I wonder though if they need to be handled gracefully
>> somehow (of course, in usual GL fashion, nobody has any idea that this
>> spiffy 4-byte transform feedback or whatever different bind point buffer
>> is going to be used as a constant buffer later), or if this is something
>> which should be addressed elsewhere.
>>
>> Roland



More information about the mesa-dev mailing list