[Mesa-dev] [PATCH v3 12/32] glsl: allow bindless samplers/images inside interface blocks

Timothy Arceri tarceri at itsqueeze.com
Fri May 5 00:23:47 UTC 2017


On 04/05/17 22:24, Nicolai Hähnle wrote:
> On 02.05.2017 22:53, Samuel Pitoiset wrote:
>> From section 4.3.7 of the ARB_bindless_texture spec:
>>
>>    "(remove the following bullet from the last list on p. 39, thereby
>>     permitting sampler types in interface blocks; image types are also
>>     permitted in blocks by this extension)"
>>
>>     * sampler types are not allowed
>>
>> v3: - update the spec comment
>>     - update the glsl error message
>>
>> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
>> Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com> (v2)
>> Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com> (v2)
> 
> Feel free to remove the v2 on my R-b for patches 8-12.

Same here.

> 
> Cheers,
> Nicolai
> 
> 
>> ---
>>  src/compiler/glsl/ast_to_hir.cpp | 14 ++++++++++++--
>>  1 file changed, 12 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/compiler/glsl/ast_to_hir.cpp 
>> b/src/compiler/glsl/ast_to_hir.cpp
>> index d193028acd..ee1bd4f968 100644
>> --- a/src/compiler/glsl/ast_to_hir.cpp
>> +++ b/src/compiler/glsl/ast_to_hir.cpp
>> @@ -6964,9 +6964,19 @@ 
>> ast_process_struct_or_iface_block_members(exec_list *instructions,
>>        assert(decl_type);
>>
>>        if (is_interface) {
>> -         if (decl_type->contains_opaque()) {
>> +         /* From section 4.3.7 of the ARB_bindless_texture spec:
>> +          *
>> +          *    "(remove the following bullet from the last list on p. 
>> 39,
>> +          *     thereby permitting sampler types in interface blocks; 
>> image
>> +          *     types are also permitted in blocks by this extension)"
>> +          *
>> +          *     * sampler types are not allowed
>> +          */
>> +         if (decl_type->contains_atomic() ||
>> +             (!state->has_bindless() && decl_type->contains_opaque())) {
>>              _mesa_glsl_error(&loc, state, "uniform/buffer in 
>> non-default "
>> -                             "interface block contains opaque 
>> variable");
>> +                             "interface block contains %s variable",
>> +                             state->has_bindless() ? "atomic" : 
>> "opaque");
>>           }
>>        } else {
>>           if (decl_type->contains_atomic()) {
>>
> 
> 


More information about the mesa-dev mailing list