r600g: skip repeating vs, gs, and tes shader binds
authorConstantine Kharlamov <Hi-Angel@yandex.ru>
Mon, 10 Apr 2017 20:04:35 +0000 (23:04 +0300)
committerMarek Olšák <marek.olsak@amd.com>
Mon, 10 Apr 2017 20:45:22 +0000 (22:45 +0200)
commit22de96680cf4cd0fbc3ba477956d95770cf6dc69
tree08a2f9614290d81eb425346213df752e5d17258f
parenta4019a81ab5857bb19dc6251bab6bf386947f6fc
r600g: skip repeating vs, gs, and tes shader binds

The idea is taken from radeonsi. The code lacks some checks for null vs,
and I'm unsure about some changes against that, so I left it in place.

Some statistics for GTAⅣ:
Average tesselation bind skip per frame: ≈350
Average geometric shaders bind skip per frame: ≈260
Skip of binding vertex ones occurs rarely enough to not get into per-frame
counter at all, so I just gonna say: it happens.

v2: I've occasionally removed an empty line, don't do this.
v3: return a check for null tes and gs back, while I haven't figured out
the way to move stride assignment to r600_update_derived_state() (as it
is in radeonsi).

Signed-off-by: Constantine Kharlamov <Hi-Angel@yandex.ru>
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/drivers/r600/r600_state_common.c