[Mesa-dev] [PATCH v3 74/78] i965/vec4: Enable NIR-vec4 pass on ARB_vertex_programs

Jason Ekstrand jason at jlekstrand.net
Sat Aug 1 08:24:40 PDT 2015


LGTM RB
On Aug 1, 2015 5:16 AM, "Eduardo Lima Mitev" <elima at igalia.com> wrote:

> From: Antia Puentes <apuentes at igalia.com>
>
> ---
>  src/mesa/drivers/dri/i965/brw_vec4.cpp | 47
> +++++++++++++++++-----------------
>  1 file changed, 24 insertions(+), 23 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp
> b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> index 8d83887..88b601a 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> @@ -1732,18 +1732,16 @@ vec4_visitor::run(gl_clip_plane *clip_planes)
>
>     emit_prolog();
>
> -   if (shader) {
> -      if (use_vec4_nir) {
> -         assert(prog->nir != NULL);
> -         emit_nir_code();
> -         if (failed)
> -            return false;
> -      } else {
> -         /* Generate VS IR for main().  (the visitor only descends into
> -          * functions called "main").
> -          */
> -         visit_instructions(shader->base.ir);
> -      }
> +   if (use_vec4_nir) {
> +      assert(prog->nir != NULL);
> +      emit_nir_code();
> +      if (failed)
> +         return false;
> +   } else if (shader) {
> +      /* Generate VS IR for main().  (the visitor only descends into
> +       * functions called "main").
> +       */
> +      visit_instructions(shader->base.ir);
>     } else {
>        emit_program_code();
>     }
> @@ -1921,18 +1919,21 @@ brw_vs_emit(struct brw_context *brw,
>     if (unlikely(INTEL_DEBUG & DEBUG_VS))
>        brw_dump_ir("vertex", prog, &shader->base, &vp->Base);
>
> -   if (brw->intelScreen->compiler->scalar_vs) {
> -      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,
> true);
> -      }
> +   if (!vp->Base.nir &&
> +       (brw->intelScreen->compiler->scalar_vs ||
> +
> brw->intelScreen->compiler->glsl_compiler_options[MESA_SHADER_VERTEX].NirOptions
> != NULL)) {
> +      /* 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;
>
>        fs_visitor v(brw->intelScreen->compiler, brw,
> --
> 2.4.6
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150801/c07b1cde/attachment-0001.html>


More information about the mesa-dev mailing list