On 18/05/18 00:53, Eric Anholt wrote:
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.
Has someone reported trouble with radeonsi NIR? I'm not aware of any
issues. Dave's patch [1] was for fixing iris, I had no way to test so
didn't try send it out myself after you confirmed it fixed your issue.
The only comment I have for the patch is that maybe we want:
ralloc_strdup(c->parameters, prog->Parameters->Parameters[0].Name);
rather than
strdup(prog->Parameters->Parameters[0].Name);
Otherwise it seems fine to me.
[1]
https://cgit.freedesktop.org/~airlied/mesa/commit/?h=iris&id=00446d8b6b35f8bf0b491a4ad0359111f549ffdb
---
src/mesa/state_tracker/st_program.c | 65 ++++-------------------------
1 file changed, 7 insertions(+), 58 deletions(-)
diff --git a/src/mesa/state_tracker/st_program.c
b/src/mesa/state_tracker/st_program.c
index a7671b7fd1d8..8117f4ff8dbb 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"
@@ -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.
*/
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev