On Sat, Oct 10, 2015 at 08:05:59AM -0700, Jason Ekstrand wrote: > 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.
I guess you are planning to check the fixed hangs before pushing. The patch itself looks good: Reviewed-by: Topi Pohjolainen <topi.pohjolai...@intel.com> > --- > 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 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev