i965: Use a 'nir' temporary rather than poking at brw_program
It's shorter and will also be useful when I adjust cloning soon. Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
This commit is contained in:
parent
0d17b685b1
commit
6a10dd08f4
|
@ -58,6 +58,7 @@ brw_codegen_cs_prog(struct brw_context *brw,
|
||||||
struct brw_cs_prog_data prog_data;
|
struct brw_cs_prog_data prog_data;
|
||||||
bool start_busy = false;
|
bool start_busy = false;
|
||||||
double start_time = 0;
|
double start_time = 0;
|
||||||
|
nir_shader *nir = cp->program.nir;
|
||||||
|
|
||||||
memset(&prog_data, 0, sizeof(prog_data));
|
memset(&prog_data, 0, sizeof(prog_data));
|
||||||
|
|
||||||
|
@ -76,7 +77,7 @@ brw_codegen_cs_prog(struct brw_context *brw,
|
||||||
|
|
||||||
assign_cs_binding_table_offsets(devinfo, &cp->program, &prog_data);
|
assign_cs_binding_table_offsets(devinfo, &cp->program, &prog_data);
|
||||||
|
|
||||||
brw_nir_setup_glsl_uniforms(mem_ctx, cp->program.nir,
|
brw_nir_setup_glsl_uniforms(mem_ctx, nir,
|
||||||
&cp->program, &prog_data.base, true);
|
&cp->program, &prog_data.base, true);
|
||||||
|
|
||||||
if (unlikely(brw->perf_debug)) {
|
if (unlikely(brw->perf_debug)) {
|
||||||
|
@ -91,8 +92,7 @@ brw_codegen_cs_prog(struct brw_context *brw,
|
||||||
|
|
||||||
char *error_str;
|
char *error_str;
|
||||||
program = brw_compile_cs(brw->screen->compiler, brw, mem_ctx, key,
|
program = brw_compile_cs(brw->screen->compiler, brw, mem_ctx, key,
|
||||||
&prog_data, cp->program.nir, st_index,
|
&prog_data, nir, st_index, &error_str);
|
||||||
&error_str);
|
|
||||||
if (program == NULL) {
|
if (program == NULL) {
|
||||||
cp->program.sh.data->LinkStatus = LINKING_FAILURE;
|
cp->program.sh.data->LinkStatus = LINKING_FAILURE;
|
||||||
ralloc_strcat(&cp->program.sh.data->InfoLog, error_str);
|
ralloc_strcat(&cp->program.sh.data->InfoLog, error_str);
|
||||||
|
|
|
@ -89,15 +89,17 @@ brw_codegen_gs_prog(struct brw_context *brw,
|
||||||
|
|
||||||
void *mem_ctx = ralloc_context(NULL);
|
void *mem_ctx = ralloc_context(NULL);
|
||||||
|
|
||||||
|
nir_shader *nir = gp->program.nir;
|
||||||
|
|
||||||
assign_gs_binding_table_offsets(devinfo, &gp->program, &prog_data);
|
assign_gs_binding_table_offsets(devinfo, &gp->program, &prog_data);
|
||||||
|
|
||||||
brw_nir_setup_glsl_uniforms(mem_ctx, gp->program.nir, &gp->program,
|
brw_nir_setup_glsl_uniforms(mem_ctx, nir, &gp->program,
|
||||||
&prog_data.base.base,
|
&prog_data.base.base,
|
||||||
compiler->scalar_stage[MESA_SHADER_GEOMETRY]);
|
compiler->scalar_stage[MESA_SHADER_GEOMETRY]);
|
||||||
brw_nir_analyze_ubo_ranges(compiler, gp->program.nir, NULL,
|
brw_nir_analyze_ubo_ranges(compiler, nir, NULL,
|
||||||
prog_data.base.base.ubo_ranges);
|
prog_data.base.base.ubo_ranges);
|
||||||
|
|
||||||
uint64_t outputs_written = gp->program.nir->info.outputs_written;
|
uint64_t outputs_written = nir->info.outputs_written;
|
||||||
|
|
||||||
brw_compute_vue_map(devinfo,
|
brw_compute_vue_map(devinfo,
|
||||||
&prog_data.base.vue_map, outputs_written,
|
&prog_data.base.vue_map, outputs_written,
|
||||||
|
@ -115,8 +117,7 @@ brw_codegen_gs_prog(struct brw_context *brw,
|
||||||
char *error_str;
|
char *error_str;
|
||||||
const unsigned *program =
|
const unsigned *program =
|
||||||
brw_compile_gs(brw->screen->compiler, brw, mem_ctx, key,
|
brw_compile_gs(brw->screen->compiler, brw, mem_ctx, key,
|
||||||
&prog_data, gp->program.nir, &gp->program,
|
&prog_data, nir, &gp->program, st_index, &error_str);
|
||||||
st_index, &error_str);
|
|
||||||
if (program == NULL) {
|
if (program == NULL) {
|
||||||
ralloc_strcat(&gp->program.sh.data->InfoLog, error_str);
|
ralloc_strcat(&gp->program.sh.data->InfoLog, error_str);
|
||||||
_mesa_problem(NULL, "Failed to compile geometry shader: %s\n", error_str);
|
_mesa_problem(NULL, "Failed to compile geometry shader: %s\n", error_str);
|
||||||
|
|
|
@ -100,7 +100,7 @@ brw_codegen_tcs_prog(struct brw_context *brw, struct brw_program *tcp,
|
||||||
brw_nir_setup_glsl_uniforms(mem_ctx, nir, &tcp->program,
|
brw_nir_setup_glsl_uniforms(mem_ctx, nir, &tcp->program,
|
||||||
&prog_data.base.base,
|
&prog_data.base.base,
|
||||||
compiler->scalar_stage[MESA_SHADER_TESS_CTRL]);
|
compiler->scalar_stage[MESA_SHADER_TESS_CTRL]);
|
||||||
brw_nir_analyze_ubo_ranges(compiler, tcp->program.nir, NULL,
|
brw_nir_analyze_ubo_ranges(compiler, nir, NULL,
|
||||||
prog_data.base.base.ubo_ranges);
|
prog_data.base.base.ubo_ranges);
|
||||||
} else {
|
} else {
|
||||||
/* Upload the Patch URB Header as the first two uniforms.
|
/* Upload the Patch URB Header as the first two uniforms.
|
||||||
|
|
|
@ -85,7 +85,7 @@ brw_codegen_tes_prog(struct brw_context *brw,
|
||||||
brw_nir_setup_glsl_uniforms(mem_ctx, nir, &tep->program,
|
brw_nir_setup_glsl_uniforms(mem_ctx, nir, &tep->program,
|
||||||
&prog_data.base.base,
|
&prog_data.base.base,
|
||||||
compiler->scalar_stage[MESA_SHADER_TESS_EVAL]);
|
compiler->scalar_stage[MESA_SHADER_TESS_EVAL]);
|
||||||
brw_nir_analyze_ubo_ranges(compiler, tep->program.nir, NULL,
|
brw_nir_analyze_ubo_ranges(compiler, nir, NULL,
|
||||||
prog_data.base.base.ubo_ranges);
|
prog_data.base.base.ubo_ranges);
|
||||||
|
|
||||||
int st_index = -1;
|
int st_index = -1;
|
||||||
|
|
|
@ -174,26 +174,28 @@ brw_codegen_vs_prog(struct brw_context *brw,
|
||||||
|
|
||||||
mem_ctx = ralloc_context(NULL);
|
mem_ctx = ralloc_context(NULL);
|
||||||
|
|
||||||
|
nir_shader *nir = vp->program.nir;
|
||||||
|
|
||||||
brw_assign_common_binding_table_offsets(devinfo, &vp->program,
|
brw_assign_common_binding_table_offsets(devinfo, &vp->program,
|
||||||
&prog_data.base.base, 0);
|
&prog_data.base.base, 0);
|
||||||
|
|
||||||
if (!vp->program.is_arb_asm) {
|
if (!vp->program.is_arb_asm) {
|
||||||
brw_nir_setup_glsl_uniforms(mem_ctx, vp->program.nir, &vp->program,
|
brw_nir_setup_glsl_uniforms(mem_ctx, nir, &vp->program,
|
||||||
&prog_data.base.base,
|
&prog_data.base.base,
|
||||||
compiler->scalar_stage[MESA_SHADER_VERTEX]);
|
compiler->scalar_stage[MESA_SHADER_VERTEX]);
|
||||||
brw_nir_analyze_ubo_ranges(compiler, vp->program.nir, key,
|
brw_nir_analyze_ubo_ranges(compiler, nir, key,
|
||||||
prog_data.base.base.ubo_ranges);
|
prog_data.base.base.ubo_ranges);
|
||||||
} else {
|
} else {
|
||||||
brw_nir_setup_arb_uniforms(mem_ctx, vp->program.nir, &vp->program,
|
brw_nir_setup_arb_uniforms(mem_ctx, nir, &vp->program,
|
||||||
&prog_data.base.base);
|
&prog_data.base.base);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t outputs_written =
|
uint64_t outputs_written =
|
||||||
brw_vs_outputs_written(brw, key, vp->program.nir->info.outputs_written);
|
brw_vs_outputs_written(brw, key, nir->info.outputs_written);
|
||||||
|
|
||||||
brw_compute_vue_map(devinfo,
|
brw_compute_vue_map(devinfo,
|
||||||
&prog_data.base.vue_map, outputs_written,
|
&prog_data.base.vue_map, outputs_written,
|
||||||
vp->program.nir->info.separate_shader);
|
nir->info.separate_shader);
|
||||||
|
|
||||||
if (0) {
|
if (0) {
|
||||||
_mesa_fprint_program_opt(stderr, &vp->program, PROG_PRINT_DEBUG, true);
|
_mesa_fprint_program_opt(stderr, &vp->program, PROG_PRINT_DEBUG, true);
|
||||||
|
@ -220,8 +222,7 @@ brw_codegen_vs_prog(struct brw_context *brw,
|
||||||
*/
|
*/
|
||||||
char *error_str;
|
char *error_str;
|
||||||
program = brw_compile_vs(compiler, brw, mem_ctx, key, &prog_data,
|
program = brw_compile_vs(compiler, brw, mem_ctx, key, &prog_data,
|
||||||
vp->program.nir,
|
nir, st_index, &error_str);
|
||||||
st_index, &error_str);
|
|
||||||
if (program == NULL) {
|
if (program == NULL) {
|
||||||
if (!vp->program.is_arb_asm) {
|
if (!vp->program.is_arb_asm) {
|
||||||
vp->program.sh.data->LinkStatus = LINKING_FAILURE;
|
vp->program.sh.data->LinkStatus = LINKING_FAILURE;
|
||||||
|
|
|
@ -139,6 +139,8 @@ brw_codegen_wm_prog(struct brw_context *brw,
|
||||||
bool start_busy = false;
|
bool start_busy = false;
|
||||||
double start_time = 0;
|
double start_time = 0;
|
||||||
|
|
||||||
|
nir_shader *nir = fp->program.nir;
|
||||||
|
|
||||||
memset(&prog_data, 0, sizeof(prog_data));
|
memset(&prog_data, 0, sizeof(prog_data));
|
||||||
|
|
||||||
/* Use ALT floating point mode for ARB programs so that 0^0 == 1. */
|
/* Use ALT floating point mode for ARB programs so that 0^0 == 1. */
|
||||||
|
@ -148,13 +150,12 @@ brw_codegen_wm_prog(struct brw_context *brw,
|
||||||
assign_fs_binding_table_offsets(devinfo, &fp->program, key, &prog_data);
|
assign_fs_binding_table_offsets(devinfo, &fp->program, key, &prog_data);
|
||||||
|
|
||||||
if (!fp->program.is_arb_asm) {
|
if (!fp->program.is_arb_asm) {
|
||||||
brw_nir_setup_glsl_uniforms(mem_ctx, fp->program.nir, &fp->program,
|
brw_nir_setup_glsl_uniforms(mem_ctx, nir, &fp->program,
|
||||||
&prog_data.base, true);
|
&prog_data.base, true);
|
||||||
brw_nir_analyze_ubo_ranges(brw->screen->compiler, fp->program.nir,
|
brw_nir_analyze_ubo_ranges(brw->screen->compiler, nir,
|
||||||
NULL, prog_data.base.ubo_ranges);
|
NULL, prog_data.base.ubo_ranges);
|
||||||
} else {
|
} else {
|
||||||
brw_nir_setup_arb_uniforms(mem_ctx, fp->program.nir, &fp->program,
|
brw_nir_setup_arb_uniforms(mem_ctx, nir, &fp->program, &prog_data.base);
|
||||||
&prog_data.base);
|
|
||||||
|
|
||||||
if (unlikely(INTEL_DEBUG & DEBUG_WM))
|
if (unlikely(INTEL_DEBUG & DEBUG_WM))
|
||||||
brw_dump_arb_asm("fragment", &fp->program);
|
brw_dump_arb_asm("fragment", &fp->program);
|
||||||
|
@ -178,7 +179,7 @@ brw_codegen_wm_prog(struct brw_context *brw,
|
||||||
|
|
||||||
char *error_str = NULL;
|
char *error_str = NULL;
|
||||||
program = brw_compile_fs(brw->screen->compiler, brw, mem_ctx,
|
program = brw_compile_fs(brw->screen->compiler, brw, mem_ctx,
|
||||||
key, &prog_data, fp->program.nir,
|
key, &prog_data, nir,
|
||||||
&fp->program, st_index8, st_index16, st_index32,
|
&fp->program, st_index8, st_index16, st_index32,
|
||||||
true, false, vue_map,
|
true, false, vue_map,
|
||||||
&error_str);
|
&error_str);
|
||||||
|
|
Loading…
Reference in New Issue