[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