[Mesa-dev] [PATCH] radeonsi: fix dvec[34] attributes sourced from current attribute state
Nicolai Hähnle
nhaehnle at gmail.com
Thu Mar 23 17:14:23 UTC 2017
From: Nicolai Hähnle <nicolai.haehnle at amd.com>
The state tracker no longer uploads those attributes for us,
so we must conservatively upload the size of the largest
attribute, which is a dvec4.
Fixes a regression of GL45-CTS.gpu_shader_fp64.varyings and
GL45-CTS.vertex_attrib_64bit.limits_test.
Fixes: 9b91e0b54cc2 ("radeonsi: allow unaligned vertex buffer offsets and strides on CIK-VI")
---
src/gallium/drivers/radeonsi/si_state.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index 6948a74..0ee4af3 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -3525,26 +3525,27 @@ static void si_set_vertex_buffers(struct pipe_context *ctx,
if (buffers) {
for (i = 0; i < count; i++) {
const struct pipe_vertex_buffer *src = buffers + i;
struct pipe_vertex_buffer *dsti = dst + i;
if (unlikely(src->user_buffer)) {
/* Zero-stride attribs only. */
assert(src->stride == 0);
- /* Assume the attrib has 4 dwords like the vbo
- * module. This is also a good upper bound.
+ /* Assume that the user_buffer comes from
+ * gl_current_attrib, which implies it has
+ * 4 * 8 bytes (for dvec4 attributes).
*
* Use const_uploader to upload into VRAM directly.
*/
- u_upload_data(sctx->b.b.const_uploader, 0, 16, 16,
+ u_upload_data(sctx->b.b.const_uploader, 0, 32, 32,
src->user_buffer,
&dsti->buffer_offset,
&dsti->buffer);
dsti->stride = 0;
} else {
struct pipe_resource *buf = src->buffer;
pipe_resource_reference(&dsti->buffer, buf);
dsti->buffer_offset = src->buffer_offset;
dsti->stride = src->stride;
--
2.9.3
More information about the mesa-dev
mailing list