On Fri, Oct 9, 2015 at 12:15 AM, Pohjolainen, Topi <topi.pohjolai...@intel.com> wrote: > 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).
Not quite. I believe that's replaced with shader->info.outputs_written & BITFIELD64_BIT(FRAG_RESULT_DEPTH) It is used in patch 15 but it's used by the updated compute_depth_mode function. --Jason >> + } >> + >> 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