diff options
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/glsl/link_uniforms.cpp | 8 | ||||
-rw-r--r-- | 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 c195e767e25..f6335b0f9eb 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; + /* Samplers (bound or bindless) 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; + /* Images (bound or bindless) 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 22a54d06eff..8fa626bba96 100644 --- a/src/compiler/glsl_types.cpp +++ b/src/compiler/glsl_types.cpp @@ -1293,6 +1293,8 @@ glsl_type::component_slots() const case GLSL_TYPE_SAMPLER: case GLSL_TYPE_IMAGE: + return 2; + case GLSL_TYPE_SUBROUTINE: return 1; |