radeonsi: force dcc clear to use compute clear

After the previous commit, when running the following
deqp-gles31 caselist:

  dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba32f_rgba32ui
  dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba32f_rgba32i

The second test always fails on gfx10. I don't know why,
but forcing the dcc clear from si_decompress_dcc to use
compute fixes the problem.

The test caselist wasn't failing before because the dcc
disable step was done in si_resource_copy_region, before
calling si_compute_copy_image.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8958>
This commit is contained in:
Pierre-Eric Pelloux-Prayer 2021-02-09 15:13:44 +01:00
parent 1d64a1045e
commit 90d6365ad4

View file

@ -1306,11 +1306,17 @@ void si_decompress_dcc(struct si_context *sctx, struct si_texture *tex)
true);
}
/* Now clear DCC metadata to uncompressed. */
/* Now clear DCC metadata to uncompressed.
*
* This uses SI_COMPUTE_CLEAR_METHOD to avoid a failure when running this
* deqp caselist on gfx10:
* dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba32f_rgba32ui
* dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba32f_rgba32i
*/
uint32_t clear_value = DCC_UNCOMPRESSED;
si_clear_buffer(sctx, ptex, tex->surface.dcc_offset,
tex->surface.dcc_size, &clear_value, 4,
SI_COHERENCY_CB_META, SI_AUTO_SELECT_CLEAR_METHOD);
SI_COHERENCY_CB_META, SI_COMPUTE_CLEAR_METHOD);
}
}