Hi pixelflinger, 

I'm a little disappointed that I'm not any closer to resolution on my bug 
but your comment helped me get a better understanding of what exactly is 
going on here. Thanks for the information!


On Wednesday, 20 June 2012 01:46:31 UTC-4, pixelflinger wrote:
>
> You misread the code (although I admit it is confusing). There are 2 
> different "sequence" variables. 
>
> One is LayerBase::sequence, used for disambiguate the ordering of 
> layers, as you guessed. The other one is LayerBase::State::sequence, 
> which is entirely different and is used during transaction as a way to 
> detect that the state has changed. 
>
>
> Additionally, none of this would explain z-fighting, since 
> SurfaceFlinger doesn't use the depth buffer at all -- it justs draws 
> the layers in order. The depth buffer of each layer is not used at all 
> during composition. 
>
> -- pixelflinger 
>
>
> On Tue, Jun 19, 2012 at 10:23 AM, Inan Top <[email protected]> wrote: 
> > Hi all, 
> > 
> > I've been trying to track down a rendering issue in our application, 
> > and I'm considering z-fighting as a potential root cause. I've tracked 
> > the z-ordering logic from SurfaceFlinger.h down to LayerBase.cpp. Here 
> > are my findings, please correct me if I'm wrong: 
> > 
> > SurfaceFlinger.h composites the layers in z-order, which is determined 
> > by the ViewParent classes. In the case that two elements have the same 
> > z-value their *sequence* is used as the comparison for ordering 
> > purposes. Sequence appears to be an attempt at a UID for each 
> > LayerBase instance. 
> > 
> > Sequence is initialized to an incremented sSequence, which is a static 
> > member of the LayerBase class. This guarantees that no two instances 
> > of LayerBase begin with the same sequence. So far so good. 
> > 
> > However each of the transformation operations within LayerBase, i.e. 
> > setAlpha, setPosition, etc. increment this sequence value. This means 
> > (as far as I understand) that I can create two LayerBase objects A and 
> > B, with sequence 1 and 2 respectively to begin with, and then do some 
> > sort of transformation onto A causing it to increment its sequence to 
> > 2 also. 
> > 
> > This could potentially result in a situation where A and B share the 
> > same z-order AND the same sequence, in which case ordering is not sane 
> > and z-fighting issues can occur. 
> > 
> > Am I correct in that assessment or am I completely misunderstanding 
> > this system? I'm completely new to Android so don't worry about 
> > hurting my feelings if I'm completely wrong. 
> > 
> > -- 
> > unsubscribe: [email protected] 
> > website: http://groups.google.com/group/android-porting 
>

-- 
unsubscribe: [email protected]
website: http://groups.google.com/group/android-porting

Reply via email to