For BDW and newer hardware, vertex shaders can be dispatched using simd8 scalars, but when spills occur performance will be impacted.
Fixes spec@glsl-1.10@execution@varying-packing@simple by falling back to vec4x2 dispatch. There is another issue with simd8 dispatch which will be addressed later. Bugzill : https://bugs.freedesktop.org/show_bug.cgi?id=89055 --- src/mesa/drivers/dri/i965/brw_vec4.cpp | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp index 5a9c3f5..6ea9f92 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp @@ -1909,26 +1909,34 @@ brw_vs_emit(struct brw_context *brw, return NULL; } - - fs_generator g(brw, mem_ctx, (void *) &c->key, &prog_data->base.base, + + if (!v.spilled_any_registers) { + fs_generator g(brw, mem_ctx, (void *) &c->key, &prog_data->base.base, &c->vp->program.Base, v.promoted_constants, v.runtime_check_aads_emit, "VS"); - if (INTEL_DEBUG & DEBUG_VS) { - char *name; - if (prog) { - name = ralloc_asprintf(mem_ctx, "%s vertex shader %d", + if (INTEL_DEBUG & DEBUG_VS) { + char *name; + if (prog) { + name = ralloc_asprintf(mem_ctx, "%s vertex shader %d", prog->Label ? prog->Label : "unnamed", prog->Name); - } else { - name = ralloc_asprintf(mem_ctx, "vertex program %d", + } else { + name = ralloc_asprintf(mem_ctx, "vertex program %d", c->vp->program.Base.Id); + } + g.enable_debug(name); } - g.enable_debug(name); - } - g.generate_code(v.cfg, 8); - assembly = g.get_assembly(final_assembly_size); + g.generate_code(v.cfg, 8); + assembly = g.get_assembly(final_assembly_size); - c->base.last_scratch = v.last_scratch; + c->base.last_scratch = v.last_scratch; + } else { + /* + * Clean up from previous attempt to use simd8 dispatch + */ + brw->scalar_vs = false; + prog_data->base.base.total_scratch = 0; /* reset */ + } } if (!assembly) { -- 2.1.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev