[Mesa-dev] [PATCH] glsl: report correct number of allowed vertex inputs and fragment outputs
Timothy Arceri
timothy.arceri at collabora.com
Wed Mar 9 23:41:21 UTC 2016
On Wed, 2016-03-09 at 11:48 +0100, Iago Toral Quiroga wrote:
> Before we would always report 16 for both and we would only fail if
> either
> one exceeded 16. Now we fail if the maximum for each is exceeded,
> even if
> it is smaller than 16 and we report the correct maximum.
>
> Also, expand the size of to_assign[] to 32. There is code at the top
> of the function handling max_index up to 32, so this just makes the
> code more consistent.
Looks good.
Reviewed-by: Timothy Arceri <timothy.arceri at collabora.com>
> ---
> src/compiler/glsl/linker.cpp | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/src/compiler/glsl/linker.cpp
> b/src/compiler/glsl/linker.cpp
> index 4cec107..76b700d 100644
> --- a/src/compiler/glsl/linker.cpp
> +++ b/src/compiler/glsl/linker.cpp
> @@ -2417,7 +2417,8 @@
> assign_attribute_or_color_locations(gl_shader_program *prog,
> /* Reversed because we want a descending order sort below.
> */
> return r->slots - l->slots;
> }
> - } to_assign[16];
> + } to_assign[32];
> + assert(max_index <= 32);
>
> unsigned num_attr = 0;
>
> @@ -2625,11 +2626,11 @@
> assign_attribute_or_color_locations(gl_shader_program *prog,
> continue;
> }
>
> - if (num_attr >= ARRAY_SIZE(to_assign)) {
> + if (num_attr >= max_index) {
> linker_error(prog, "too many %s (max %u)",
> target_index == MESA_SHADER_VERTEX ?
> "vertex shader inputs" : "fragment shader
> outputs",
> - (unsigned)ARRAY_SIZE(to_assign));
> + max_index);
> return false;
> }
> to_assign[num_attr].slots = slots;
More information about the mesa-dev
mailing list