From 348cf74792a394aae1efd541192d4a3c219584bb Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Tue, 12 Sep 2017 17:30:53 +1000 Subject: i965: create a brw_shader_gather_info() helper This will help us call gather info at a later point and allow us to do some linking in nir. Reviewed-by: Kenneth Graunke Reviewed-by: Eduardo Lima Mitev --- src/mesa/drivers/dri/i965/brw_program.c | 20 +++++++++++++------- src/mesa/drivers/dri/i965/brw_program.h | 3 +++ 2 files changed, 16 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/mesa/drivers/dri/i965/brw_program.c b/src/mesa/drivers/dri/i965/brw_program.c index fa0ce838fa0..a1154d95e0d 100644 --- a/src/mesa/drivers/dri/i965/brw_program.c +++ b/src/mesa/drivers/dri/i965/brw_program.c @@ -107,6 +107,19 @@ brw_create_nir(struct brw_context *brw, NIR_PASS(progress, nir, nir_lower_system_values); NIR_PASS_V(nir, brw_nir_lower_uniforms, is_scalar); + brw_shader_gather_info(nir, prog); + + if (shader_prog) { + NIR_PASS_V(nir, nir_lower_samplers, shader_prog); + NIR_PASS_V(nir, nir_lower_atomics, shader_prog); + } + + return nir; +} + +void +brw_shader_gather_info(nir_shader *nir, struct gl_program *prog) +{ nir_shader_gather_info(nir, nir_shader_get_entrypoint(nir)); /* Copy the info we just generated back into the gl_program */ @@ -115,13 +128,6 @@ brw_create_nir(struct brw_context *brw, prog->info = nir->info; prog->info.name = prog_name; prog->info.label = prog_label; - - if (shader_prog) { - NIR_PASS_V(nir, nir_lower_samplers, shader_prog); - NIR_PASS_V(nir, nir_lower_atomics, shader_prog); - } - - return nir; } static unsigned diff --git a/src/mesa/drivers/dri/i965/brw_program.h b/src/mesa/drivers/dri/i965/brw_program.h index e62b7d366c8..c52193c691c 100644 --- a/src/mesa/drivers/dri/i965/brw_program.h +++ b/src/mesa/drivers/dri/i965/brw_program.h @@ -25,6 +25,7 @@ #define BRW_PROGRAM_H #include "compiler/brw_compiler.h" +#include "nir.h" #ifdef __cplusplus extern "C" { @@ -38,6 +39,8 @@ struct nir_shader *brw_create_nir(struct brw_context *brw, gl_shader_stage stage, bool is_scalar); +void brw_shader_gather_info(nir_shader *nir, struct gl_program *prog); + void brw_setup_tex_for_precompile(struct brw_context *brw, struct brw_sampler_prog_key_data *tex, struct gl_program *prog); -- cgit v1.2.3