[Mesa-dev] [PATCH 2/2] glsl: verify location when dual source blending
Anuj Phogat
anuj.phogat at gmail.com
Tue Jul 28 09:55:24 PDT 2015
On Tue, Jul 28, 2015 at 3:37 AM, Tapani Pälli <tapani.palli at intel.com> wrote:
> Same check is made for glBindFragDataLocationIndexed but it was missing
> when using layout qualifiers.
>
> Fixes following Piglit test:
> arb_blend_func_extended-output-location
>
> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
> ---
> src/glsl/linker.cpp | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
> diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
> index c8d2e8e..a781211 100644
> --- a/src/glsl/linker.cpp
> +++ b/src/glsl/linker.cpp
> @@ -2431,6 +2431,25 @@ assign_attribute_or_color_locations(gl_shader_program *prog,
> }
> }
>
> + /* From GL4.5 core spec, section 15.2 (Shader Execution):
> + *
> + * "Output binding assignments will cause LinkProgram to fail:
> + * ...
> + * If the program has an active output assigned to a location greater
> + * than or equal to the value of MAX_DUAL_SOURCE_DRAW_BUFFERS and has
> + * an active output assigned an index greater than or equal to one;"
> + */
> + if (target_index == MESA_SHADER_FRAGMENT && var->data.index >= 1 &&
> + var->data.location - generic_base >=
> + (int) constants->MaxDualSourceDrawBuffers) {
> + linker_error(prog,
> + "output location %d >= GL_MAX_DUAL_SOURCE_DRAW_BUFFERS "
> + "with index %u for %s\n",
> + var->data.location - generic_base, var->data.index,
> + var->name);
> + return false;
> + }
> +
> const unsigned slots = var->type->count_attribute_slots();
>
> /* From GL4.5 core spec, section 11.1.1 (Vertex Attributes):
> --
> 2.1.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Both patches are:
Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>
More information about the mesa-dev
mailing list