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 <kenneth@whitecape.org>
Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
This commit is contained in:
Timothy Arceri 2017-09-12 17:30:53 +10:00
parent 45ef10c06a
commit 348cf74792
2 changed files with 16 additions and 7 deletions

View File

@ -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

View File

@ -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);