diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 6bf55088ae2..f71e895c4c6 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -954,9 +954,13 @@ static void *pre_upload_binary(struct si_screen *sscreen, struct si_shader *shad return ret; } else { - return sscreen->ws->buffer_map(sscreen->ws, + void *ptr = sscreen->ws->buffer_map(sscreen->ws, shader->bo->buf, NULL, - PIPE_MAP_READ_WRITE | PIPE_MAP_UNSYNCHRONIZED | RADEON_MAP_TEMPORARY) + bo_offset; + PIPE_MAP_READ_WRITE | PIPE_MAP_UNSYNCHRONIZED | RADEON_MAP_TEMPORARY); + if (!ptr) + return NULL; + + return ptr + bo_offset; } }