diff options
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_vs.c')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_vs.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c index 0a348a56127..e1a0d9c29e4 100644 --- a/src/mesa/drivers/dri/i965/brw_vs.c +++ b/src/mesa/drivers/dri/i965/brw_vs.c @@ -37,6 +37,7 @@ #include "brw_state.h" #include "program/prog_print.h" #include "program/prog_parameter.h" +#include "brw_nir.h" #include "util/ralloc.h" @@ -81,6 +82,18 @@ brw_codegen_vs_prog(struct brw_context *brw, bool start_busy = false; double start_time = 0; + if (!vp->program.Base.nir) { + /* Normally we generate NIR in LinkShader() or + * ProgramStringNotify(), but Mesa's fixed-function vertex program + * handling doesn't notify the driver at all. Just do it here, at + * the last minute, even though it's lame. + */ + assert(vp->program.Base.Id == 0 && prog == NULL); + vp->program.Base.nir = + brw_create_nir(brw, NULL, &vp->program.Base, MESA_SHADER_VERTEX, + brw->intelScreen->compiler->scalar_vs); + } + if (prog) vs = (struct brw_shader *) prog->_LinkedShaders[MESA_SHADER_VERTEX]; |