Reviewed-by: Marek Olšák <mar...@gmail.com>

Nice cleanup BTW.

Marek

On Tue, Oct 4, 2011 at 10:44 PM, Ian Romanick <i...@freedesktop.org> wrote:
> From: Ian Romanick <ian.d.roman...@intel.com>
>
> Signed-off-by: Ian Romanick <ian.d.roman...@intel.com>
> Cc: Marek Olšák <mar...@gmail.com>
> ---
>  src/mesa/program/ir_to_mesa.cpp            |   33 +++++++--------------
>  src/mesa/state_tracker/st_glsl_to_tgsi.cpp |   44 
> +++++++---------------------
>  2 files changed, 22 insertions(+), 55 deletions(-)
>
> diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp
> index b9b7b1a..5be44bc 100644
> --- a/src/mesa/program/ir_to_mesa.cpp
> +++ b/src/mesa/program/ir_to_mesa.cpp
> @@ -3288,31 +3288,20 @@ _mesa_ir_link_shader(struct gl_context *ctx, struct 
> gl_shader_program *prog)
>       linked_prog = get_mesa_program(ctx, prog, prog->_LinkedShaders[i]);
>
>       if (linked_prog) {
> -         bool ok = true;
> +        static const GLenum targets[] = {
> +           GL_VERTEX_PROGRAM_ARB,
> +           GL_FRAGMENT_PROGRAM_ARB,
> +           GL_GEOMETRY_PROGRAM_NV
> +        };
>
> -         switch (prog->_LinkedShaders[i]->Type) {
> -         case GL_VERTEX_SHADER:
> +        if (i == MESA_SHADER_VERTEX) {
>             ((struct gl_vertex_program *)linked_prog)->UsesClipDistance
>                = prog->Vert.UsesClipDistance;
> -            _mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
> -                                   linked_prog);
> -            ok = ctx->Driver.ProgramStringNotify(ctx, GL_VERTEX_PROGRAM_ARB,
> -                                                 linked_prog);
> -            break;
> -         case GL_FRAGMENT_SHADER:
> -            _mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
> -                                   linked_prog);
> -            ok = ctx->Driver.ProgramStringNotify(ctx, 
> GL_FRAGMENT_PROGRAM_ARB,
> -                                                 linked_prog);
> -            break;
> -         case GL_GEOMETRY_SHADER:
> -            _mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
> -                                   linked_prog);
> -            ok = ctx->Driver.ProgramStringNotify(ctx, GL_GEOMETRY_PROGRAM_NV,
> -                                                 linked_prog);
> -            break;
> -         }
> -         if (!ok) {
> +        }
> +
> +        _mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
> +                                linked_prog);
> +         if (!ctx->Driver.ProgramStringNotify(ctx, targets[i], linked_prog)) 
> {
>             return GL_FALSE;
>          }
>       }
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp 
> b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index 80a5930..fe65ae5 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> @@ -5180,39 +5180,17 @@ st_link_shader(struct gl_context *ctx, struct 
> gl_shader_program *prog)
>       linked_prog = get_mesa_program(ctx, prog, prog->_LinkedShaders[i]);
>
>       if (linked_prog) {
> -         bool ok = true;
> -
> -         switch (prog->_LinkedShaders[i]->Type) {
> -         case GL_VERTEX_SHADER:
> -            _mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
> -                                    linked_prog);
> -            ok = ctx->Driver.ProgramStringNotify(ctx, GL_VERTEX_PROGRAM_ARB,
> -                                                 linked_prog);
> -            if (!ok) {
> -               _mesa_reference_vertprog(ctx, &prog->VertexProgram, NULL);
> -            }
> -            break;
> -         case GL_FRAGMENT_SHADER:
> -            _mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
> -                                   linked_prog);
> -            ok = ctx->Driver.ProgramStringNotify(ctx, 
> GL_FRAGMENT_PROGRAM_ARB,
> -                                                 linked_prog);
> -            if (!ok) {
> -               _mesa_reference_fragprog(ctx, &prog->FragmentProgram, NULL);
> -            }
> -            break;
> -         case GL_GEOMETRY_SHADER:
> -            _mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
> -                                   linked_prog);
> -            ok = ctx->Driver.ProgramStringNotify(ctx, GL_GEOMETRY_PROGRAM_NV,
> -                                                 linked_prog);
> -            if (!ok) {
> -               _mesa_reference_geomprog(ctx, &prog->GeometryProgram, NULL);
> -            }
> -            break;
> -         }
> -         if (!ok) {
> -            _mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program, 
> NULL);
> +        static const GLenum targets[] = {
> +           GL_VERTEX_PROGRAM_ARB,
> +           GL_FRAGMENT_PROGRAM_ARB,
> +           GL_GEOMETRY_PROGRAM_NV
> +        };
> +
> +        _mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
> +                                linked_prog);
> +         if (!ctx->Driver.ProgramStringNotify(ctx, targets[i], linked_prog)) 
> {
> +           _mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
> +                                   NULL);
>             _mesa_reference_program(ctx, &linked_prog, NULL);
>             return GL_FALSE;
>          }
> --
> 1.7.6
>
>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to