From 4807a83da0e0f5e3272e85504ee3b2213ef1910a Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Fri, 4 Nov 2016 11:40:10 +1100 Subject: [PATCH] mesa/glsl: set num_textures per stage directly in shader_info Reviewed-by: Eric Anholt --- src/compiler/glsl/glsl_to_nir.cpp | 1 - src/compiler/glsl/link_uniforms.cpp | 2 +- src/compiler/glsl/linker.cpp | 3 ++- src/mesa/main/mtypes.h | 1 - src/mesa/main/uniform_query.cpp | 2 +- src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 2 +- 6 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp index cf3511e10b9..6cf4f501ee8 100644 --- a/src/compiler/glsl/glsl_to_nir.cpp +++ b/src/compiler/glsl/glsl_to_nir.cpp @@ -149,7 +149,6 @@ glsl_to_nir(const struct gl_shader_program *shader_prog, shader->info->name = ralloc_asprintf(shader, "GLSL%d", shader_prog->Name); if (shader_prog->Label) shader->info->label = ralloc_strdup(shader, shader_prog->Label); - shader->info->num_textures = util_last_bit(sh->Program->SamplersUsed); shader->info->clip_distance_array_size = sh->Program->ClipDistanceArraySize; shader->info->cull_distance_array_size = sh->Program->CullDistanceArraySize; shader->info->has_transform_feedback_varyings = diff --git a/src/compiler/glsl/link_uniforms.cpp b/src/compiler/glsl/link_uniforms.cpp index caee147aa1d..f2fc7161f10 100644 --- a/src/compiler/glsl/link_uniforms.cpp +++ b/src/compiler/glsl/link_uniforms.cpp @@ -1315,7 +1315,7 @@ link_assign_uniform_locations(struct gl_shader_program *prog, uniform_size.process(var); } - sh->num_samplers = uniform_size.num_shader_samplers; + sh->Program->info.num_textures = uniform_size.num_shader_samplers; sh->NumImages = uniform_size.num_shader_images; sh->num_uniform_components = uniform_size.num_shader_uniform_components; sh->num_combined_uniform_components = sh->num_uniform_components; diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp index 327b7be8006..d4a484fdea0 100644 --- a/src/compiler/glsl/linker.cpp +++ b/src/compiler/glsl/linker.cpp @@ -3067,7 +3067,8 @@ check_resources(struct gl_context *ctx, struct gl_shader_program *prog) if (sh == NULL) continue; - if (sh->num_samplers > ctx->Const.Program[i].MaxTextureImageUnits) { + if (sh->Program->info.num_textures > + ctx->Const.Program[i].MaxTextureImageUnits) { linker_error(prog, "Too many %s shader texture samplers\n", _mesa_shader_stage_to_string(i)); } diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index ffd21ecea3b..69241beadd1 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -2356,7 +2356,6 @@ struct gl_linked_shader * \note Each of these fields is only set post-linking. */ /*@{*/ - unsigned num_samplers; /**< Number of samplers used by this shader. */ GLbitfield active_samplers; /**< Bitfield of which samplers are used */ GLbitfield shadow_samplers; /**< Samplers used for shadow sampling. */ /*@}*/ diff --git a/src/mesa/main/uniform_query.cpp b/src/mesa/main/uniform_query.cpp index ec6d2774844..73e7b0bfdfd 100644 --- a/src/mesa/main/uniform_query.cpp +++ b/src/mesa/main/uniform_query.cpp @@ -1141,7 +1141,7 @@ _mesa_sampler_uniforms_pipeline_are_valid(struct gl_pipeline_object *pipeline) TexturesUsed[unit] |= (1 << tgt); } - active_samplers += shader->num_samplers; + active_samplers += shader->Program->info.num_textures; } if (active_samplers > MAX_COMBINED_TEXTURE_IMAGE_UNITS) { diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index b4ccc5f0525..12a53ecb73d 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -6636,7 +6636,7 @@ set_affected_state_flags(uint64_t *states, if (prog->Parameters->NumParameters) *states |= new_constants; - if (shader->num_samplers) + if (prog->info.num_textures) *states |= new_sampler_views | new_samplers; if (shader->NumImages) -- 2.30.2