On 12/28/2012 11:04 AM, Mark Zhang wrote:
On 12/28/2012 04:50 PM, Arto Merilainen wrote:
In my opinion asking tegra_stream_begin() to put a bad fence into the stream is a case we should never be. assert() kills the application immediately (in debug builds) and usually this helps the programmer for
- finding bugs 2) not doing bad code.
Yep, I agree. But in release builds, assert does nothing. So this checking doesn't make sense and also a wrong fence will be pushed into command buffer silently. And we always use release version in real products, so we can't count on this "assert".
The only pro of using assert is low (=no :-) ) overhead in release builds.
"Silencing" is not a good solution especially in this case: tegra_stream_flush() returns an invalid fence when flushing fails. If the application chains submits (i.e. do a blit and then do another using the output of the first blit) it is crucial to be sure the first submit has been performed before starting the second one.
Yes. So I suggest doing fence checking at the beginning of the "tegra_stream_begin", if invalid fence found, return an error.
This sounds reasonable.
- Arto