radeonsi: unbind disabled shader stages to prevent useless L2 prefetches
authorMarek Olšák <marek.olsak@amd.com>
Tue, 24 Jan 2017 21:54:06 +0000 (22:54 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Mon, 30 Jan 2017 12:27:14 +0000 (13:27 +0100)
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_state_shaders.c

index 010ce15a8b5bd93587983c5206515b4d585c4469..b3616dcfaff17d28b0b22e7b9dd36b1a904d2412 100644 (file)
@@ -2439,6 +2439,9 @@ bool si_update_shaders(struct si_context *sctx)
                if (r)
                        return false;
                si_pm4_bind_state(sctx, es, sctx->vs_shader.current->pm4);
+
+               si_pm4_bind_state(sctx, ls, NULL);
+               si_pm4_bind_state(sctx, hs, NULL);
        } else {
                /* VS as VS */
                r = si_shader_select(ctx, &sctx->vs_shader, &compiler_state);
@@ -2446,6 +2449,9 @@ bool si_update_shaders(struct si_context *sctx)
                        return false;
                si_pm4_bind_state(sctx, vs, sctx->vs_shader.current->pm4);
                si_update_so(sctx, sctx->vs_shader.cso);
+
+               si_pm4_bind_state(sctx, ls, NULL);
+               si_pm4_bind_state(sctx, hs, NULL);
        }
 
        /* Update GS. */