> Layers are always rendered sequentially to completion starting from
> the consumer backwards‚ all of layer 1, then all of layer 2, then all
> of layer 3 etc. (this goes for sublayers, etc)

Correct (for renderers/consumers -- processing patches are not executed in any 
defined order)

> So if a Receiver exists in Layer 1, and the corresponding Sender
> exists in Layer 2, then the output of this receiver will be
> potentially unexpected.

Not quite -- the output of the receiver is "well-defined" in a weird sense:

on the first frame, the output is "undefined" (nothing has set it yet), 
probably a default like 0.
On subsequent frames, it's either the previous frame value (if a 
sample-and-hold method is employed), or still undefined (if the values only 
persist for a single frame).

Where this gets more confusing is when we take the above (processing patch 
execution order is not strictly defined), and combine it with our receiver 
(which cannot be a consumer, since it has outputs) -- now we cannot reliably 
control whether the sender executes before or after the receiver (which is a 
consumer).   For a quick stroll through history, on 10.5 a consumer on layer 1 
would execute all upstream patches, then execute itself, then layer 2 would 
follow suit (skipping already-executed upstream patches).  On 10.6, _all_ 
upstream patches are executed before _any_ consumers are executed (As part of 
the idle-state detection feature on Snow Leopard);  because processor order is 
never defined, this is "ok", but that means it's impossible to make 
future-proof compositions (unless processing patch order is also well-defined, 
which piles on a new set of problems).

[Note:  all that mess is an implementation detail you generally shouldn't need 
to know or care about -- don't ever depend on it]

> Because layer order  cannot be changed by the composition, the
> Receiver will always know if it's at risk of being out of sync?
> If Rendering mode was set to bug-finding, could the entire patch be
> run twice, and differences in Send/Receive states be highlighted?

Because of the undefined-ness of non-consumer patch execution order, debug mode 
cannot possibly provide meaningful data on this -- it could be totally valid on 
one version, and completely wrong on another, and there's no way it can know.

--
Christopher Wright
christopher_wri...@apple.com


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list      (Quartzcomposer-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to