Keith Whitwell wrote:
> Jerome Glisse wrote:
>> On 2/26/07, Keith Whitwell <[EMAIL PROTECTED]> wrote:
>>> Jerome Glisse wrote:
>>> > On 2/26/07, Roland Scheidegger <[EMAIL PROTECTED]> wrote:
>>> >> Christoph Brill wrote:
>>> >>> Attached is a mini-patch to add the address of early Z to r300_reg.h
>>> >>> and use it. Jerome Glisse helped me with this patch. Thanks. :-)
>>> >> Not really related directly to the patch itself, but it seems to
>>> me that
>>> >> the conditions when to enable early-z are a bit wrong. First, I'd
>>> think
>>> >> you need to disable early-z when writing to the depth output (or use
>>> >> texkill) in fragment programs. Second, why disable early-z
>>> specifically
>>> >> if the depth function is gl_never? Is that some workaround because
>>> >> stencil updates don't work otherwise (in that case should certainly
>>> >> rather check for that) or something similar?
>>> >>
>>> >> Roland
>>> >
>>> > Yes we need to disable early z when the fragment program write to
>>> > z buffer, so far there isn't real support for depth writing in the
>>> driver
>>> > (it's in the todo list). I fail to see why we should disable early
>>> z when
>>> > there is texkill instruction (and stencil disabled), if we disable
>>> early
>>> > z then if the fragment doesn't pass the test in the early pass it
>>> > won't after texkill so will be killed anyway (and better kill early
>>> then
>>> > at the end).
>>>
>>> If you don't disable early z, you can end up writing values to the depth
>>> buffer for fragments that are later killed.
>>>
>>> Keith
>>
>> Doesn't early z only discard fragment that fail z test and doesn't write
>> z value, differing the write after fragment operation ?
> 
> I guess it depends on the hardware - at least some do both the test and
> write early.  You'd have to test somehow.
> 
> If it does do the writeback early, you need to also look at disabling
> when alphatest is enabled.
Indeed the driver already does that, r300 chips apparently do early z
write (http://ati.amd.com/developer/gpups/index.html mentions "Force
Alpha Test Enable" "Can identify problems related to early Z test").
As for stencil, I'm actually not sure that stencil isn't performed (that
was just a guess for that disabling of early z when gl_never z test is
used, since in that case you're probably updating stencil, what's the
point of doing rendering at all otherwise) - since it's a shared
stencil/depth buffer it would make sense for the hardware to perform
stencil test at the same time and thus it would still work with early z.
IIRC I think there was some talk about some differences there between
r300 and r400, can't remember though. Test apps should easily reveal if
it works.

Roland

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to