From 35ddb65ea6b5310c56e75f274a2456e49ef04f55 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Mon, 28 Feb 2022 14:39:59 -0800 Subject: [PATCH] freedreno: Use the resource size rather than BO size for VFD_FETCH[].SIZE. We should be using the API size to clamp, rather than what we allocated the BO into. Fixes: #13 Part-of: --- src/gallium/drivers/freedreno/a4xx/fd4_emit.c | 2 +- src/gallium/drivers/freedreno/a5xx/fd5_emit.c | 2 +- src/gallium/drivers/freedreno/a6xx/fd6_emit.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/freedreno/a4xx/fd4_emit.c b/src/gallium/drivers/freedreno/a4xx/fd4_emit.c index c0963c8ff0f..7fc96ead832 100644 --- a/src/gallium/drivers/freedreno/a4xx/fd4_emit.c +++ b/src/gallium/drivers/freedreno/a4xx/fd4_emit.c @@ -428,7 +428,7 @@ fd4_emit_vertex_bufs(struct fd_ringbuffer *ring, struct fd4_emit *emit) bool isint = util_format_is_pure_integer(pfmt); uint32_t fs = util_format_get_blocksize(pfmt); uint32_t off = vb->buffer_offset + elem->src_offset; - uint32_t size = fd_bo_size(rsc->bo) - off; + uint32_t size = vb->buffer.resource->width0 - off; debug_assert(fmt != VFMT4_NONE); #ifdef DEBUG diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_emit.c b/src/gallium/drivers/freedreno/a5xx/fd5_emit.c index b5120b50c50..3cb1f977eb8 100644 --- a/src/gallium/drivers/freedreno/a5xx/fd5_emit.c +++ b/src/gallium/drivers/freedreno/a5xx/fd5_emit.c @@ -487,7 +487,7 @@ fd5_emit_vertex_bufs(struct fd_ringbuffer *ring, struct fd5_emit *emit) enum a5xx_vtx_fmt fmt = fd5_pipe2vtx(pfmt); bool isint = util_format_is_pure_integer(pfmt); uint32_t off = vb->buffer_offset + elem->src_offset; - uint32_t size = fd_bo_size(rsc->bo) - off; + uint32_t size = vb->buffer.resource->width0 - off; debug_assert(fmt != VFMT5_NONE); #ifdef DEBUG diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_emit.c b/src/gallium/drivers/freedreno/a6xx/fd6_emit.c index 21ef07daca9..fc2d8bb9f1b 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_emit.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_emit.c @@ -567,7 +567,7 @@ build_vbo_state(struct fd6_emit *emit) assert_dt OUT_RING(ring, 0); } else { uint32_t off = vb->buffer_offset; - uint32_t size = fd_bo_size(rsc->bo) - off; + uint32_t size = vb->buffer.resource->width0 - off; OUT_RELOC(ring, rsc->bo, off, 0, 0); OUT_RING(ring, size); /* VFD_FETCH[j].SIZE */