--- src/mesa/drivers/dri/i965/brw_link.cpp | 50 ++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 20 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_link.cpp b/src/mesa/drivers/dri/i965/brw_link.cpp index efd67e7..e56df93 100644 --- a/src/mesa/drivers/dri/i965/brw_link.cpp +++ b/src/mesa/drivers/dri/i965/brw_link.cpp @@ -86,6 +86,35 @@ brw_lower_packing_builtins(struct brw_context *brw, } static void +brw_common_opts(struct gl_linked_shader *shader, struct gl_context *ctx, + bool uniform_locs_assigned, + const struct brw_compiler *compiler, + const struct gl_shader_compiler_options *options) +{ + bool progress; + do { + progress = false; + + if (compiler->scalar_stage[shader->Stage]) { + if (shader->Stage == MESA_SHADER_VERTEX || + shader->Stage == MESA_SHADER_FRAGMENT) + brw_do_channel_expressions(shader->ir); + brw_do_vector_splitting(shader->ir); + } + + progress = do_lower_jumps(shader->ir, true, true, + true, /* main return */ + false, /* continue */ + false /* loops */ + ) || progress; + + progress = do_common_optimization(shader->ir, true, + uniform_locs_assigned, true, options, + ctx->Const.NativeIntegers) || progress; + } while (progress); +} + +static void process_glsl_ir(struct brw_context *brw, struct gl_shader_program *shader_prog, struct gl_linked_shader *shader) @@ -149,26 +178,7 @@ process_glsl_ir(struct brw_context *brw, _mesa_shader_stage_to_abbrev(shader->Stage)); } - bool progress; - do { - progress = false; - - if (compiler->scalar_stage[shader->Stage]) { - if (shader->Stage == MESA_SHADER_VERTEX || - shader->Stage == MESA_SHADER_FRAGMENT) - brw_do_channel_expressions(shader->ir); - brw_do_vector_splitting(shader->ir); - } - - progress = do_lower_jumps(shader->ir, true, true, - true, /* main return */ - false, /* continue */ - false /* loops */ - ) || progress; - - progress = do_common_optimization(shader->ir, true, true, true, - options, ctx->Const.NativeIntegers) || progress; - } while (progress); + brw_common_opts(shader, ctx, false, compiler, options); validate_ir_tree(shader->ir); -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev