freedreno/a6xx: WFI in program stateobj too
authorRob Clark <robdclark@chromium.org>
Fri, 17 May 2019 04:04:29 +0000 (21:04 -0700)
committerRob Clark <robdclark@chromium.org>
Mon, 20 May 2019 16:10:12 +0000 (09:10 -0700)
This "fixes" hangs seen w/ various android games.  I think a similar
issue to with constant state, we need to avoid CP_LOAD_STATE until
previous draw completes.

It isn't entirely clear why blob doesn't need to do this, but it might
have a different way to accomplish the same thing.

Signed-off-by: Rob Clark <robdclark@chromium.org>
src/gallium/drivers/freedreno/a6xx/fd6_program.c

index 3603d800f04445b079e896793449f4aa7cd05dbf..b90ad2e06e5b6c0bb2a4500dcd977b0aa703fd81 100644 (file)
@@ -326,6 +326,8 @@ setup_stateobj(struct fd_ringbuffer *ring, struct fd6_program_state *state,
        uint8_t psize_loc = ~0;
        int i, j;
 
+       OUT_WFI5(ring);
+
        setup_stages(state, s, binning_pass);
 
        bool sample_shading = s[FS].v->per_samp | key->sample_shading;