From 28b234a092f79eb517f43f5fce852b68127e16f4 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 27 Mar 2019 02:22:33 +0000 Subject: [PATCH] panfrost: Fix vertex buffer corruption Fixes crash in dEQP-GLES2.functional.buffer.* Signed-off-by: Alyssa Rosenzweig --- src/gallium/drivers/panfrost/pan_context.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c index c513791615e..8fed5270f50 100644 --- a/src/gallium/drivers/panfrost/pan_context.c +++ b/src/gallium/drivers/panfrost/pan_context.c @@ -773,12 +773,14 @@ panfrost_emit_vertex_data(struct panfrost_context *ctx) * rsrc->gpu. However, attribute buffers must be 64 aligned. If * it is not, for now we have to duplicate the buffer. */ - mali_ptr effective_address = (rsrc->bo->gpu + buf->buffer_offset); + mali_ptr effective_address = rsrc ? (rsrc->bo->gpu + buf->buffer_offset) : 0; - if (effective_address & 0x3F) { - attrs[i].elements = panfrost_upload_transient(ctx, rsrc->bo->cpu + buf->buffer_offset, attrs[i].size) | 1; + if (effective_address) { + attrs[i].elements = panfrost_upload_transient(ctx, rsrc->bo->cpu + buf->buffer_offset, attrs[i].size) | MALI_ATTR_LINEAR; + } else if (effective_address) { + attrs[i].elements = effective_address | MALI_ATTR_LINEAR; } else { - attrs[i].elements = effective_address | 1; + /* Leave unset? */ } } -- 2.11.0