r600g/sb: fix kcache handling on r6xx
authorVadim Girlin <vadimgirlin@gmail.com>
Sun, 5 May 2013 02:01:20 +0000 (06:01 +0400)
committerVadim Girlin <vadimgirlin@gmail.com>
Tue, 7 May 2013 00:40:26 +0000 (04:40 +0400)
Use the same limit for kcache constants in alu group on r6xx as on other
chips (two const pairs). Relaxing this will require additional checks to
make sure that all 4 consts in the group come from 2 kcache sets (clause
limit), probably without noticeable improvements of shader performance.

Signed-off-by: Vadim Girlin <vadimgirlin@gmail.com>
src/gallium/drivers/r600/sb/sb_sched.cpp

index b21b342578d70e2e6ccf0e2645c10df823c76c17..d0045ce75efdd80b1b20fa4ac39c5168f5f580d6 100644 (file)
@@ -43,7 +43,11 @@ namespace r600_sb {
 using std::cerr;
 
 rp_kcache_tracker::rp_kcache_tracker(shader &sh) : rp(), uc(),
-       sel_count(sh.get_ctx().is_r600() ? 4 : 2) {}
+               // FIXME: for now we'll use "two const pairs" limit for r600, same as
+               // for other chips, otherwise additional check in alu_group_tracker is
+               // required to make sure that all 4 consts in the group fit into 2
+               // kcache sets
+               sel_count(2) {}
 
 bool rp_kcache_tracker::try_reserve(sel_chan r) {
        unsigned sel = kc_sel(r);