Bindless samplers/images are 64-bit unsigned integers, which means they consume two components as specified by ARB_bindless_texture.
It looks like we are not wasting uniform storage by changing this because default-block uniforms are not packed. So, if we use N uint uniforms, they occupy N * 16 bytes in the constant buffer. This is something that could be improved. Though, count_uniform_size needs to be adjusted to not count a sampler (or image) twice. As a side effect, this will probably break the cache if you have one because it will consider sampler/image types as two components. Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> --- src/compiler/glsl/link_uniforms.cpp | 8 ++++++-- src/compiler/glsl_types.cpp | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/compiler/glsl/link_uniforms.cpp b/src/compiler/glsl/link_uniforms.cpp index b462cb9d59..3331c85af4 100644 --- a/src/compiler/glsl/link_uniforms.cpp +++ b/src/compiler/glsl/link_uniforms.cpp @@ -340,9 +340,13 @@ private: if (type->contains_subroutine()) { this->num_shader_subroutines += values; } else if (type->contains_sampler()) { - this->num_shader_samplers += values; + /* Old-style (or bound) samplers are counted as two components as + * specified by ARB_bindless_texture. */ + this->num_shader_samplers += values / 2; } else if (type->contains_image()) { - this->num_shader_images += values; + /* Old-style (or bound) images are counted as two components as + * specified by ARB_bindless_texture. */ + this->num_shader_images += values / 2; /* As drivers are likely to represent image uniforms as * scalar indices, count them against the limit of uniform diff --git a/src/compiler/glsl_types.cpp b/src/compiler/glsl_types.cpp index 0480bef80e..df148cfd21 100644 --- a/src/compiler/glsl_types.cpp +++ b/src/compiler/glsl_types.cpp @@ -1298,6 +1298,8 @@ glsl_type::component_slots() const case GLSL_TYPE_SAMPLER: case GLSL_TYPE_IMAGE: + return 2; + case GLSL_TYPE_SUBROUTINE: return 1; -- 2.12.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev