i965/vs: Move lazy NIR creation to codegen_vs_prog

The next commit will add code to codegen_vs_prog that requires the NIR
shader to be there in all cases.  It doesn't hurt anything to just move it
from brw_vs_emit to its only caller.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
This commit is contained in:
Jason Ekstrand 2015-09-30 16:06:43 -07:00
parent 64b145422b
commit fc3f45234b
2 changed files with 13 additions and 12 deletions

View File

@ -1953,18 +1953,6 @@ brw_vs_emit(struct brw_context *brw,
if (unlikely(INTEL_DEBUG & DEBUG_VS))
brw_dump_ir("vertex", prog, &shader->base, &vp->Base);
if (!vp->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->Base.Id == 0 && prog == NULL);
vp->Base.nir =
brw_create_nir(brw, NULL, &vp->Base, MESA_SHADER_VERTEX,
brw->intelScreen->compiler->scalar_vs);
}
if (brw->intelScreen->compiler->scalar_vs) {
prog_data->base.dispatch_mode = DISPATCH_MODE_SIMD8;

View File

@ -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];