<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 11, 2016 at 11:50 AM, Pohjolainen, Topi <span dir="ltr"><<a href="mailto:topi.pohjolainen@gmail.com" target="_blank">topi.pohjolainen@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Tue, Oct 11, 2016 at 09:46:41PM +0300, Pohjolainen, Topi wrote:<br>
> On Fri, Oct 07, 2016 at 09:41:08PM -0700, Jason Ekstrand wrote:<br>
> > Signed-off-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br>
> > ---<br>
> >  src/intel/blorp/blorp.h       | 10 ++++++++<br>
> >  src/intel/blorp/blorp_clear.c | 58 ++++++++++++++++++++++++++++++<wbr>+++++++++++++<br>
> >  2 files changed, 68 insertions(+)<br>
> ><br>
> > diff --git a/src/intel/blorp/blorp.h b/src/intel/blorp/blorp.h<br>
> > index 480f1bb..263d194 100644<br>
> > --- a/src/intel/blorp/blorp.h<br>
> > +++ b/src/intel/blorp/blorp.h<br>
> > @@ -134,6 +134,16 @@ blorp_clear(struct blorp_batch *batch,<br>
> >              const bool color_write_disable[4]);<br>
> ><br>
> >  void<br>
> > +blorp_clear_depth_stencil(<wbr>struct blorp_batch *batch,<br>
> > +                          const struct blorp_surf *depth,<br>
> > +                          const struct blorp_surf *stencil,<br>
> > +                          uint32_t level, uint32_t start_layer,<br>
> > +                          uint32_t num_layers,<br>
> > +                          uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1,<br>
> > +                          bool clear_depth, float depth_value,<br>
> > +                          bool clear_stencil, uint8_t stencil_value);<br>
> > +<br>
> > +void<br>
> >  blorp_ccs_resolve(struct blorp_batch *batch,<br>
> >                    struct blorp_surf *surf, enum isl_format format);<br>
> ><br>
> > diff --git a/src/intel/blorp/blorp_clear.<wbr>c b/src/intel/blorp/blorp_clear.<wbr>c<br>
> > index a8f29fd..1d6bf1c 100644<br>
> > --- a/src/intel/blorp/blorp_clear.<wbr>c<br>
> > +++ b/src/intel/blorp/blorp_clear.<wbr>c<br>
> > @@ -306,6 +306,64 @@ blorp_clear(struct blorp_batch *batch,<br>
> >  }<br>
> ><br>
> >  void<br>
> > +blorp_clear_depth_stencil(<wbr>struct blorp_batch *batch,<br>
> > +                          const struct blorp_surf *depth,<br>
> > +                          const struct blorp_surf *stencil,<br>
> > +                          uint32_t level, uint32_t start_layer,<br>
> > +                          uint32_t num_layers,<br>
> > +                          uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1,<br>
> > +                          bool clear_depth, float depth_value,<br>
> > +                          bool clear_stencil, uint8_t stencil_value)<br>
> > +{<br>
> > +   struct blorp_params params;<br>
> > +   blorp_params_init(&params);<br>
> > +<br>
> > +   params.x0 = x0;<br>
> > +   params.y0 = y0;<br>
> > +   params.x1 = x1;<br>
> > +   params.y1 = y1;<br>
> > +<br>
> > +   while (num_layers > 0) {<br>
> > +      params.num_layers = num_layers;<br>
> > +<br>
> > +      if (clear_stencil) {<br>
> > +         brw_blorp_surface_info_init(<wbr>batch->blorp, &params.stencil, stencil,<br>
> > +                                     level, start_layer,<br>
> > +                                     ISL_FORMAT_UNSUPPORTED, true);<br>
> > +         params.stencil_ref = stencil_value;<br>
> > +<br>
> > +         params.dst.surf.samples = params.stencil.surf.samples;<br>
> > +         params.dst.surf.logical_<wbr>level0_px =<br>
> > +            params.stencil.surf.logical_<wbr>level0_px;<br>
><br>
> Similarly to patch four, here you are thinking of having additionally:<br>
><br>
>             params.dst.view = params.depth.view;<br>
> > +<br>
> > +         if (params.stencil.view.array_len < params.num_layers)<br>
> > +            params.num_layers = params.stencil.view.array_len;<br>
> > +      }<br>
> > +<br>
> > +      if (clear_depth) {<br>
> > +         brw_blorp_surface_info_init(<wbr>batch->blorp, &params.depth, depth,<br>
> > +                                     level, start_layer,<br>
> > +                                     ISL_FORMAT_UNSUPPORTED, true);<br>
> > +         params.z = depth_value;<br>
> > +         params.depth_format =<br>
> > +            isl_format_get_depth_format(<wbr>depth->surf->format, false);<br>
> > +<br>
> > +         params.dst.surf.samples = params.depth.surf.samples;<br>
> > +         params.dst.surf.logical_<wbr>level0_px =<br>
> > +            params.depth.surf.logical_<wbr>level0_px;<br>
><br>
> As well as here:<br>
><br>
>             params.dst.view = params.depth.view;<br>
><br>
> Destination render surface itself is a null surface, right? Why do we need<br>
> to specify the view?<br>
<br>
</div></div>Is this because when performing layrered depth clear even null render surface<br>
has to have corresponding amount of layers set?<br></blockquote><div><br></div><div>Yes, that's the reasoning.  I'm not sure how accurate the null render target is supposed to be but I figure more accurate is better than less.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">
><br>
> > +<br>
> > +         if (params.depth.view.array_len < params.num_layers)<br>
> > +            params.num_layers = params.depth.view.array_len;<br>
> > +      }<br>
> > +<br>
> > +      batch->blorp->exec(batch, &params);<br>
> > +<br>
> > +      start_layer += params.num_layers;<br>
> > +      num_layers -= params.num_layers;<br>
> > +   }<br>
> > +}<br>
> > +<br>
> > +void<br>
> >  blorp_ccs_resolve(struct blorp_batch *batch,<br>
> >                    struct blorp_surf *surf, enum isl_format format)<br>
> >  {<br>
> > --<br>
> > 2.5.0.400.gff86faf<br>
> ><br>
> > ______________________________<wbr>_________________<br>
> > mesa-dev mailing list<br>
> > <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
> > <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</div></div></blockquote></div><br></div></div>