panfrost: Dirty tracking, the easy part
With last week's overhead reduction opts landed, RSD state emit is substantially faster. However, state emit routines still execute way too often. Let's track state changes and cache descriptors at the batch level for an additional performance improvement. Compared to current main, these patches yield
- 38% improvement in draws/second on drawoverhead test 1
- 9% reduction in total time on an apitrace trace of Chromium rendering the Collabora website
This is the 'easy' part of dirty tracking, requiring no invasive changes. The 'hard' part will be dirty tracking uniform uploads and vertex attributes, since the respective routines are spaghetti involving all sorts of state. Those will need to be refactored considerably to be dirty tracked effectively, that's coming next.