diff options
author | Timothy Arceri <[email protected]> | 2016-12-09 16:49:10 +1100 |
---|---|---|
committer | Timothy Arceri <[email protected]> | 2016-12-23 10:59:32 +1100 |
commit | 3321eb4c368e673c8d9561ea126a4672825828b1 (patch) | |
tree | f7bbb118d7020c6b1d2662c2f2ca1f54b736068a /src | |
parent | f20ba7ad4476013a6a322a8d562f38bc6c4e2370 (diff) |
i965: make use of nir_lower_returns() for GL
Fixes two new piglit tests:
spec/glsl-1.10/execution/vs-nested-return-sibling-loop.shader_test
spec/glsl-1.10/execution/vs-nested-return-sibling-loop2.shader_test
shader-db results for BDW:
total instructions in shared programs: 12903158 -> 12903134 (-0.00%)
instructions in affected programs: 27100 -> 27076 (-0.09%)
helped: 32
HURT: 6
total cycles in shared programs: 294922518 -> 294922804 (0.00%)
cycles in affected programs: 4372828 -> 4373114 (0.01%)
helped: 31
HURT: 8
Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_link.cpp | 6 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_program.c | 2 |
2 files changed, 2 insertions, 6 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_link.cpp b/src/mesa/drivers/dri/i965/brw_link.cpp index 0d8a6267562..60eb8dce517 100644 --- a/src/mesa/drivers/dri/i965/brw_link.cpp +++ b/src/mesa/drivers/dri/i965/brw_link.cpp @@ -145,12 +145,6 @@ process_glsl_ir(struct brw_context *brw, 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, options, ctx->Const.NativeIntegers) || progress; } while (progress); diff --git a/src/mesa/drivers/dri/i965/brw_program.c b/src/mesa/drivers/dri/i965/brw_program.c index 7f69977e204..fa54c2ac61a 100644 --- a/src/mesa/drivers/dri/i965/brw_program.c +++ b/src/mesa/drivers/dri/i965/brw_program.c @@ -78,6 +78,8 @@ brw_create_nir(struct brw_context *brw, if (shader_prog) { nir = glsl_to_nir(shader_prog, stage, options); nir_remove_dead_variables(nir, nir_var_shader_in | nir_var_shader_out); + nir_lower_returns(nir); + nir_validate_shader(nir); NIR_PASS_V(nir, nir_lower_io_to_temporaries, nir_shader_get_entrypoint(nir), true, false); } else { |