From bfcdc8f1747eabad57449a309be7160dd27605ac Mon Sep 17 00:00:00 2001 From: Icecream95 Date: Tue, 12 Jan 2021 22:31:55 +1300 Subject: [PATCH] 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 Reviewed-by: Alyssa Rosenzweig Part-of: --- src/panfrost/bifrost/bifrost_compile.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/panfrost/bifrost/bifrost_compile.c b/src/panfrost/bifrost/bifrost_compile.c index ea26034dafd..55a17f3bf35 100644 --- a/src/panfrost/bifrost/bifrost_compile.c +++ b/src/panfrost/bifrost/bifrost_compile.c @@ -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) &&