[Mesa-dev] [PATCH 00/10] R600: Cache flush fixes and cleanup v2
Marek Olšák
maraeo at gmail.com
Wed Jun 1 18:57:03 UTC 2016
Hi,
This is version 2 of the previous series. This time it's been tested!!
Tested cards:
- RV670
- RV730
- EG/REDWOOD
- CAYMAN
This patch series:
- fixes several bugs around making 3D and CP DMA idle with respect to CP.PFP,
which allows removing a lot of cache flushes (= hacks really) and IB flushes
around CP DMA
- removes unnecessary cache flushes
- moves other cache flushes to places where their frequency is lower
>From the perspective of functions:
- binding shader resources doesn't flush anything (why should it)
- set_framebuffer_state flushes CB, DB, TC
- CP DMA copy_buffer only flushes TC, VC, KC. Never CB or DB.
- CP DMA clear_buffer only flushes TC, VC, KC when shader coherency is
requested, or CB when CB coherency is requested. Never DB.
- fast color clear no longer flushes TC, VC, KC, DB. (implied by clear_buffer)
- ending streamout newly flushes TC, VC, KC
>From the perspective of caches:
- TC is flushed only by set_framebuffer_state, texture_barrier, before
CP DMA (except fast color clear), and after streamout
- VC & KC are flushed only before CP DMA (except fast color clear) or after
streamout
- CB is flushed by set_framebuffer_state or by fast color clear
- DB is only flushed by set_framebuffer_state
More testing may be needed, especially testing on GPUs not listed above.
Also available here:
https://cgit.freedesktop.org/~mareko/mesa/log/?h=r600-opt-flushes
Please review.
Marek
More information about the mesa-dev
mailing list