From ad094433b4180ae5d9a33562a0982d399a0bb4bc Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Mon, 17 Feb 2020 11:01:50 +1100 Subject: [PATCH] glsl: add some error checks to the nir uniform linker MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These are optional for spirv but it shouldnt hurt to enable them. Reviewed-by: Alejandro PiƱeiro Tested-by: Marge Bot Part-of: --- src/compiler/glsl/gl_nir_link_uniforms.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/compiler/glsl/gl_nir_link_uniforms.c b/src/compiler/glsl/gl_nir_link_uniforms.c index fc2de8753b1..375340026a0 100644 --- a/src/compiler/glsl/gl_nir_link_uniforms.c +++ b/src/compiler/glsl/gl_nir_link_uniforms.c @@ -802,6 +802,22 @@ gl_nir_link_uniforms(struct gl_context *ctx, return false; } + if (state.num_shader_samplers > + ctx->Const.Program[shader_type].MaxTextureImageUnits) { + linker_error(prog, "Too many %s shader texture samplers\n", + _mesa_shader_stage_to_string(shader_type)); + continue; + } + + if (state.num_shader_images > + ctx->Const.Program[shader_type].MaxImageUniforms) { + linker_error(prog, "Too many %s shader image uniforms (%u > %u)\n", + _mesa_shader_stage_to_string(shader_type), + state.num_shader_images, + ctx->Const.Program[shader_type].MaxImageUniforms); + continue; + } + sh->Program->SamplersUsed = state.shader_samplers_used; sh->shadow_samplers = state.shader_shadow_samplers; sh->Program->info.num_textures = state.num_shader_samplers;