On Thu, Oct 08, 2015 at 05:22:38PM -0700, Jason Ekstrand wrote: > --- > src/glsl/nir/glsl_to_nir.cpp | 9 +++++++++ > src/glsl/nir/nir.h | 13 +++++++++++++ > src/mesa/program/prog_to_nir.c | 6 ++++++ > 3 files changed, 28 insertions(+) > > diff --git a/src/glsl/nir/glsl_to_nir.cpp b/src/glsl/nir/glsl_to_nir.cpp > index e4aa709..ddacb4e 100644 > --- a/src/glsl/nir/glsl_to_nir.cpp > +++ b/src/glsl/nir/glsl_to_nir.cpp > @@ -173,6 +173,15 @@ glsl_to_nir(const struct gl_shader_program *shader_prog, > shader->info.gs.invocations = sh->Geom.Invocations; > break; > > + case MESA_SHADER_FRAGMENT: { > + struct gl_fragment_program *fp = > + (struct gl_fragment_program *)sh->Program; > + > + shader->info.fs.uses_discard = fp->UsesKill; > + shader->info.fs.early_fragment_tests = sh->EarlyFragmentTests; > + shader->info.fs.depth_layout = fp->FragDepthLayout;
This series replaces in patch 15 the expression: fp->Base.OutputsWritten & BITFIELD64_BIT(FRAG_RESULT_DEPTH) with this, right? If that is the case, it would be nice to say something in one of the commits (or perhaps even use a separate patch changing the logic itself). > + } > + > case MESA_SHADER_COMPUTE: { > struct gl_compute_program *cp = (struct gl_compute_program > *)sh->Program; > shader->info.cs.local_size[0] = cp->LocalSize[0]; > diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h > index 2ce958a..14f5535 100644 > --- a/src/glsl/nir/nir.h > +++ b/src/glsl/nir/nir.h > @@ -1503,6 +1503,19 @@ typedef struct nir_shader_info { > } gs; > > struct { > + bool uses_discard; > + > + /** > + * Whether early fragment tests are enabled as defined by > + * ARB_shader_image_load_store. > + */ > + bool early_fragment_tests; > + > + /** gl_FragDepth layout for ARB_conservative_depth. */ > + enum gl_frag_depth_layout depth_layout; > + } fs; > + > + struct { > unsigned local_size[3]; > } cs; > }; > diff --git a/src/mesa/program/prog_to_nir.c b/src/mesa/program/prog_to_nir.c > index fc00534..3d91b3b 100644 > --- a/src/mesa/program/prog_to_nir.c > +++ b/src/mesa/program/prog_to_nir.c > @@ -1135,6 +1135,12 @@ prog_to_nir(const struct gl_program *prog, > s->info.uses_clip_distance_out = false; > s->info.separate_shader = false; > > + if (stage == MESA_SHADER_FRAGMENT) { > + struct gl_fragment_program *fp = (struct gl_fragment_program *)prog; > + > + s->info.fs.uses_discard = fp->UsesKill; > + } > + > fail: > if (c->error) { > ralloc_free(s); > -- > 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