r600/sb: fix a bug emitting ar load from a constant.
authorDave Airlie <airlied@redhat.com>
Wed, 10 Jan 2018 03:41:57 +0000 (03:41 +0000)
committerDave Airlie <airlied@redhat.com>
Thu, 18 Jan 2018 03:34:46 +0000 (03:34 +0000)
Some tess shaders were doing MOVA_INT _, c0.x on cayman, and then
hitting an assert in sb_bc_finalize.cpp:translate_kcache.

This makes sure the toplevel kcache tracker gets updated,
and the clause gets fixed up.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Cc: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r600/sb/sb_sched.cpp

index 2fbec2f77e01b99328dbcb5720cc70a5bfded9a1..4158317765f0fd059a4a33a1e071a1cdfdcdffcf 100644 (file)
@@ -1130,6 +1130,9 @@ void post_scheduler::emit_clause() {
        if (alu.current_ar) {
                emit_load_ar();
                process_group();
+               if (!alu.check_clause_limits()) {
+                       // Can't happen since clause only contains MOVA/CF_SET_IDX0/1
+               }
                alu.emit_group();
        }