diff options
author | Eric Anholt <[email protected]> | 2018-05-17 15:53:40 +0100 |
---|---|---|
committer | Timothy Arceri <[email protected]> | 2018-05-28 14:41:03 +1000 |
commit | 3b6dfcf7ae0abd65c0db8a71e55977a0e20ea94f (patch) | |
tree | c2403648ba27288f82b99af1fa6474652287129b /src/mesa | |
parent | 4714784daeb4df97fa82cfcf8f566661cc4ff4a4 (diff) |
Revert "st/nir: use NIR for asm programs"
This reverts commit 5c33e8c7729edd5e16020ebb8703be96523e04f2. 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 <[email protected]>
https://bugs.freedesktop.org/show_bug.cgi?id=106673
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/state_tracker/st_program.c | 65 |
1 files changed, 7 insertions, 58 deletions
diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index a7671b7fd1d..8117f4ff8db 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -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" @@ -379,28 +378,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. */ bool @@ -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. */ |