Kenneth Graunke <kenn...@whitecape.org> writes: > On Gen4+, brw_finish_batch() calls brw_emit_query_end(), which emits > some extra PIPE_CONTROLs to capture the current occlusion query data. > Unfortunately, it was being called *after* _intel_batchbuffer_flush > added the MI_BATCH_BUFFER_END, meaning those PIPE_CONTROLs didn't get > inside the batch. > > Not only does this likely cause bogus occlusion query values, it can > also cause crashes: with the recent change to use 64-bit depth count > writes on Gen6+, we started emitting an odd-length PIPE_CONTROL, which > happened after the MI_NOOP padding. This resulted in an odd-length > batch buffer, which resulted in execbuf2 returning -EINVAL and the > application dying with an intel_do_flush_locked failure. > > On older generations, finish_batch() doesn't emit any state, so this > change shouldn't have any effect. > > Huge thanks to Chris Wilson for helping me figure this out. > > NOTE: This is a candidate for stable release branches.
Looks like this is safe for i915 as well. This series is Reviewed-by: Eric Anholt <e...@anholt.net> (though I'd also love a patch asserting that we didn't overflow our RESERVED_SPACE).
pgpBzuZJsrkLq.pgp
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev