Revert "st/nir: use NIR for asm programs"

This reverts commit 5c33e8c772.  It broke
fixed function vertex programs on vc4 and v3d, and apparently caused
trouble for radeonsi's NIR paths as well.

Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
https://bugs.freedesktop.org/show_bug.cgi?id=106673
This commit is contained in:
Eric Anholt 2018-05-17 15:53:40 +01:00 committed by Timothy Arceri
parent 4714784dae
commit 3b6dfcf7ae
1 changed files with 7 additions and 58 deletions

View File

@ -37,7 +37,6 @@
#include "main/mtypes.h"
#include "program/prog_parameter.h"
#include "program/prog_print.h"
#include "program/prog_to_nir.h"
#include "program/programopt.h"
#include "compiler/nir/nir.h"
@ -378,28 +377,6 @@ st_release_cp_variants(struct st_context *st, struct st_compute_program *stcp)
}
}
/**
* Translate ARB (asm) program to NIR
*/
static nir_shader *
st_translate_prog_to_nir(struct st_context *st, struct gl_program *prog,
gl_shader_stage stage)
{
const struct gl_shader_compiler_options *options =
&st->ctx->Const.ShaderCompilerOptions[stage];
/* Translate to NIR */
nir_shader *nir = prog_to_nir(prog, options->NirOptions);
NIR_PASS_V(nir, nir_lower_regs_to_ssa); /* turn registers into SSA */
nir_validate_shader(nir);
/* Optimise NIR */
st_nir_opts(nir);
nir_validate_shader(nir);
return nir;
}
/**
* Translate a vertex program.
*/
@ -481,28 +458,15 @@ st_translate_vertex_program(struct st_context *st,
/* No samplers are allowed in ARB_vp. */
}
enum pipe_shader_ir preferred_ir = (enum pipe_shader_ir)
st->pipe->screen->get_shader_param(st->pipe->screen, PIPE_SHADER_VERTEX,
PIPE_SHADER_CAP_PREFERRED_IR);
if (preferred_ir == PIPE_SHADER_IR_NIR) {
if (stvp->shader_program) {
struct gl_program *prog = stvp->shader_program->last_vert_prog;
if (prog) {
st_translate_stream_output_info2(prog->sh.LinkedTransformFeedback,
stvp->result_to_output,
&stvp->tgsi.stream_output);
}
st_store_ir_in_disk_cache(st, &stvp->Base, true);
} else {
nir_shader *nir = st_translate_prog_to_nir(st, &stvp->Base,
MESA_SHADER_VERTEX);
stvp->tgsi.type = PIPE_SHADER_IR_NIR;
stvp->tgsi.ir.nir = nir;
if (stvp->shader_program) {
struct gl_program *prog = stvp->shader_program->last_vert_prog;
if (prog) {
st_translate_stream_output_info2(prog->sh.LinkedTransformFeedback,
stvp->result_to_output,
&stvp->tgsi.stream_output);
}
st_store_ir_in_disk_cache(st, &stvp->Base, true);
return true;
}
@ -742,21 +706,6 @@ st_translate_fragment_program(struct st_context *st,
}
}
enum pipe_shader_ir preferred_ir = (enum pipe_shader_ir)
st->pipe->screen->get_shader_param(st->pipe->screen,
PIPE_SHADER_FRAGMENT,
PIPE_SHADER_CAP_PREFERRED_IR);
if (preferred_ir == PIPE_SHADER_IR_NIR) {
nir_shader *nir = st_translate_prog_to_nir(st, &stfp->Base,
MESA_SHADER_FRAGMENT);
stfp->tgsi.type = PIPE_SHADER_IR_NIR;
stfp->tgsi.ir.nir = nir;
return true;
}
/*
* Convert Mesa program inputs to TGSI input register semantics.
*/