[Mesa-dev] [PATCH V2 10/11] genX/cmd_buffer: Enable fast depth clears

Jason Ekstrand jason at jlekstrand.net
Tue Oct 4 01:21:30 UTC 2016

On Mon, Oct 3, 2016 at 6:11 PM, Jason Ekstrand <jason at jlekstrand.net> wrote:

> On Tue, Sep 27, 2016 at 3:23 PM, Nanley Chery <nanleychery at gmail.com>
> wrote:
>> On Tue, Sep 27, 2016 at 03:12:17PM -0700, Chad Versace wrote:
>> > On Tue 27 Sep 2016, Nanley Chery wrote:
>> > > On Tue, Sep 27, 2016 at 11:00:21AM -0700, Chad Versace wrote:
>> >
>> > > > As a consequence of that reasoning, we should set
>> 3DSTATE_CLEAR_PARAMS.DepthClearValueValid = 1
>> > > > whenever hiz is enabled, even if we don't care about the actual
>> clear value.
> The logic seems to imply that we can't trust the context to save/restore
> our depth clear value so we have to set it every time.  At the very least,
> once per batch?  In any case, I doubt there's all that much cost involved
> in emitting 3DSTATE_CLEAR_PARAMS so I don't think re-emitting it is that
> big of a deal.

Thinking about it a bit more...

We only set up dept/stencil packets once per subpass and we only do clears
once per subpass so... I don't think we're actually saving anything by
emitting it at clear time rather than at depth/stencil setup time.  It is a
bit more convenient because the clear values may be more accessible at
clear time.

As far as "should we emit 3DSTATE_CLEAR_PARAMS all the time?"  Let's not go
to any heroics to try and avoid re-emitting it.  Once per subpass is not a
big deal at all.


> > >
>> > > In the V3, I plan to emit that packet once at device initialization
>> time
>> > > HSW+, and to always emit it (in the expected location) for IVB/BYT.
>> Only
>> > > the latter platforms have the restriction that it must always be
>> > > programmed with the other depth/stencil commands.
>> >
>> > Is there any benefit to emitting it multiple times on ivb/byt? Does
>> > emitting once during initialization, as for hsw, also work for ivb/byt?
>> > If so, the code is cleaner if the two gens share the same workaround
>> > code.
>> The benefit for emitting it multiple times on IVB/BYT is that we're
>> (possibly) following the oddly-worded programming note for the packet:
>>    From the IVB PRM Vol2P1, 3DSTATE_CLEAR_PARAMS:
>>       3DSTATE_CLEAR_PARAMS must always be programmed in the along with
>>       the other Depth/Stencil state commands(i.e.  3DSTATE_DEPTH_BUFFER,
>> HSW+ doesn't have this restriction, so we're free to only do it once.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20161003/1f6fa66e/attachment.html>

More information about the mesa-dev mailing list