pan/bi: Add some zero bytes after shaders on Bifrost

Bifrost will prefetch bytes after the end of shaders, so make sure
these bytes are allocated and zeroed.

Fixes GPU faults in Xonotic.

Suggested-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8428>
This commit is contained in:
Icecream95 2021-01-12 22:31:55 +13:00 committed by Marge Bot
parent e74b2edcef
commit bfcdc8f174

View file

@ -2236,6 +2236,10 @@ bifrost_compile_shader_nir(void *mem_ctx, nir_shader *nir,
bifrost_debug & BIFROST_DBG_VERBOSE);
}
/* Pad the shader with enough zero bytes to trick the prefetcher */
memset(util_dynarray_grow(&program->compiled, uint8_t, BIFROST_SHADER_PREFETCH),
0, BIFROST_SHADER_PREFETCH);
program->tls_size = ctx->tls_size;
if ((bifrost_debug & BIFROST_DBG_SHADERDB || inputs->shaderdb) &&