Hello, This series separates GPU commands and indirect state into two distinct buffers - the batch buffer and the state buffer. It then adds support for growing the batch/state buffers, in case we need more space but are in a "critical section" where we can't safely "wrap" (flush) the batch. Growing ends up being fairly cheap, especially on modern kernels where we have I915_EXEC_HANDLE_LUT and I915_EXEC_BATCH_FIRST.
We then drop the BATCH_RESERVED logic (no one will miss that math) and most of the estimated max prim arithmetic (we still estimate, but the consequence is a small amount of overhead rather than certain death). This fixes a long standing bug, and also opens up the possibility of having larger batches. A couple issues remain: the series drops the malloc'd shadow copy of the batch for non-LLC systems. I haven't checked how dire this is. The last patch also dramatically impacts batch sizes, which we'll need to benchmark. However, I thought I'd get the code out there for review before finishing that - I don't expect the mechanics to change much. Enjoy! _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev