[Mesa-dev] [PATCH v2 18/17 (was 10/17)] i965/vs: Move use_legacy_snorm_formula into the shader key

Jason Ekstrand jason at jlekstrand.net
Sat Oct 10 08:05:59 PDT 2015


This is really an input into the shader compiler so it kind of makes sense
in the key.  Also, given where it's placed into the key, it doesn't
actually make it any bigger.

v2 (Jason Ekstrand):
   - Rebase on top of the compiler clean-ups so the affects of this patch
     can better be studied without being in the middle of a series.
---
 src/mesa/drivers/dri/i965/brw_compiler.h          | 3 ++-
 src/mesa/drivers/dri/i965/brw_vec4.cpp            | 4 +---
 src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp | 9 ++++-----
 src/mesa/drivers/dri/i965/brw_vs.c                | 3 ++-
 src/mesa/drivers/dri/i965/brw_vs.h                | 5 +----
 5 files changed, 10 insertions(+), 14 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_compiler.h b/src/mesa/drivers/dri/i965/brw_compiler.h
index 4bc1caa..153e381 100644
--- a/src/mesa/drivers/dri/i965/brw_compiler.h
+++ b/src/mesa/drivers/dri/i965/brw_compiler.h
@@ -161,6 +161,8 @@ struct brw_vs_prog_key {
 
    bool clamp_vertex_color:1;
 
+   bool use_legacy_snorm_formula:1;
+
    /**
     * How many user clipping planes are being uploaded to the vertex shader as
     * push constants.
@@ -585,7 +587,6 @@ brw_compile_vs(const struct brw_compiler *compiler, void *log_data,
                struct brw_vs_prog_data *prog_data,
                const struct nir_shader *shader,
                gl_clip_plane *clip_planes,
-               bool use_legacy_snorm_formula,
                int shader_time_index,
                unsigned *final_assembly_size,
                char **error_str);
diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp
index 8636323..5336590 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp
@@ -1943,7 +1943,6 @@ brw_compile_vs(const struct brw_compiler *compiler, void *log_data,
                struct brw_vs_prog_data *prog_data,
                const nir_shader *shader,
                gl_clip_plane *clip_planes,
-               bool use_legacy_snorm_formula,
                int shader_time_index,
                unsigned *final_assembly_size,
                char **error_str)
@@ -1982,8 +1981,7 @@ brw_compile_vs(const struct brw_compiler *compiler, void *log_data,
       prog_data->base.dispatch_mode = DISPATCH_MODE_4X2_DUAL_OBJECT;
 
       vec4_vs_visitor v(compiler, log_data, key, prog_data,
-                        shader, clip_planes, mem_ctx,
-                        shader_time_index, use_legacy_snorm_formula);
+                        shader, clip_planes, mem_ctx, shader_time_index);
       if (!v.run()) {
          if (error_str)
             *error_str = ralloc_strdup(mem_ctx, v.fail_msg);
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp
index 485a80e..9cf04cd 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp
@@ -77,7 +77,8 @@ vec4_vs_visitor::emit_prolog()
             /* ES 3.0 has different rules for converting signed normalized
              * fixed-point numbers than desktop GL.
              */
-            if ((wa_flags & BRW_ATTRIB_WA_SIGN) && !use_legacy_snorm_formula) {
+            if ((wa_flags & BRW_ATTRIB_WA_SIGN) &&
+                !key->use_legacy_snorm_formula) {
                /* According to equation 2.2 of the ES 3.0 specification,
                 * signed normalization conversion is done by:
                 *
@@ -304,14 +305,12 @@ vec4_vs_visitor::vec4_vs_visitor(const struct brw_compiler *compiler,
                                  const nir_shader *shader,
                                  gl_clip_plane *clip_planes,
                                  void *mem_ctx,
-                                 int shader_time_index,
-                                 bool use_legacy_snorm_formula)
+                                 int shader_time_index)
    : vec4_visitor(compiler, log_data, &key->tex, &vs_prog_data->base, shader,
                   mem_ctx, false /* no_spills */, shader_time_index),
      key(key),
      vs_prog_data(vs_prog_data),
-     clip_planes(clip_planes),
-     use_legacy_snorm_formula(use_legacy_snorm_formula)
+     clip_planes(clip_planes)
 {
 }
 
diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c
index 9c9b83b..3b3eb8b 100644
--- a/src/mesa/drivers/dri/i965/brw_vs.c
+++ b/src/mesa/drivers/dri/i965/brw_vs.c
@@ -184,7 +184,6 @@ brw_codegen_vs_prog(struct brw_context *brw,
    program = brw_compile_vs(brw->intelScreen->compiler, brw, mem_ctx, key,
                             &prog_data, vp->program.Base.nir,
                             brw_select_clip_planes(&brw->ctx),
-                            !_mesa_is_gles3(&brw->ctx),
                             st_index, &program_size, &error_str);
    if (program == NULL) {
       if (prog) {
@@ -341,6 +340,8 @@ brw_vs_populate_key(struct brw_context *brw,
       key->clamp_vertex_color = ctx->Light._ClampVertexColor;
    }
 
+   key->use_legacy_snorm_formula = !_mesa_is_gles3(&brw->ctx);
+
    /* _NEW_POINT */
    if (brw->gen < 6 && ctx->Point.PointSprite) {
       for (i = 0; i < 8; i++) {
diff --git a/src/mesa/drivers/dri/i965/brw_vs.h b/src/mesa/drivers/dri/i965/brw_vs.h
index bcb5e7b..e8be713 100644
--- a/src/mesa/drivers/dri/i965/brw_vs.h
+++ b/src/mesa/drivers/dri/i965/brw_vs.h
@@ -83,8 +83,7 @@ public:
                    const nir_shader *shader,
                    gl_clip_plane *clip_planes,
                    void *mem_ctx,
-                   int shader_time_index,
-                   bool use_legacy_snorm_formula);
+                   int shader_time_index);
 
 protected:
    virtual dst_reg *make_reg_for_system_value(int location,
@@ -105,8 +104,6 @@ private:
    struct brw_vs_prog_data * const vs_prog_data;
 
    gl_clip_plane *clip_planes;
-
-   bool use_legacy_snorm_formula;
 };
 
 } /* namespace brw */
-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list