From: Nicolai Hähnle <nicolai.haeh...@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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev