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:
parent
64b145422b
commit
fc3f45234b
|
@ -1953,18 +1953,6 @@ brw_vs_emit(struct brw_context *brw,
|
||||||
if (unlikely(INTEL_DEBUG & DEBUG_VS))
|
if (unlikely(INTEL_DEBUG & DEBUG_VS))
|
||||||
brw_dump_ir("vertex", prog, &shader->base, &vp->Base);
|
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) {
|
if (brw->intelScreen->compiler->scalar_vs) {
|
||||||
prog_data->base.dispatch_mode = DISPATCH_MODE_SIMD8;
|
prog_data->base.dispatch_mode = DISPATCH_MODE_SIMD8;
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
#include "brw_state.h"
|
#include "brw_state.h"
|
||||||
#include "program/prog_print.h"
|
#include "program/prog_print.h"
|
||||||
#include "program/prog_parameter.h"
|
#include "program/prog_parameter.h"
|
||||||
|
#include "brw_nir.h"
|
||||||
|
|
||||||
#include "util/ralloc.h"
|
#include "util/ralloc.h"
|
||||||
|
|
||||||
|
@ -81,6 +82,18 @@ brw_codegen_vs_prog(struct brw_context *brw,
|
||||||
bool start_busy = false;
|
bool start_busy = false;
|
||||||
double start_time = 0;
|
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)
|
if (prog)
|
||||||
vs = (struct brw_shader *) prog->_LinkedShaders[MESA_SHADER_VERTEX];
|
vs = (struct brw_shader *) prog->_LinkedShaders[MESA_SHADER_VERTEX];
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue