Reviewed-by: Samuel Iglesias Gonsálvez <sigles...@igalia.com>
On Thu, 2016-11-03 at 11:02 +0100, Juan A. Suarez Romero wrote: > The GL 4.5 spec says: > "If any enabled array’s buffer binding is zero when DrawArrays > or one of the other drawing commands defined in section 10.4 is > called, the result is undefined." > > This commits avoids crashing the code, which is not a very good > "undefined result". > > This fixes spec/!opengl 3.1/vao-broken-attrib piglit test. > --- > src/mesa/drivers/dri/i965/brw_draw_upload.c | 23 ++++++++++++++++--- > ---- > 1 file changed, 16 insertions(+), 7 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c > b/src/mesa/drivers/dri/i965/brw_draw_upload.c > index ab2fc50..3925b6e 100644 > --- a/src/mesa/drivers/dri/i965/brw_draw_upload.c > +++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c > @@ -421,13 +421,22 @@ copy_array_to_vbo_array(struct brw_context > *brw, > uint8_t *dst = intel_upload_space(brw, size, dst_stride, > &buffer->bo, &buffer->offset); > > - if (dst_stride == src_stride) { > - memcpy(dst, src, size); > - } else { > - while (count--) { > - memcpy(dst, src, dst_stride); > - src += src_stride; > - dst += dst_stride; > + /* The GL 4.5 spec says: > + * "If any enabled array’s buffer binding is zero when > DrawArrays or > + * one of the other drawing commands defined in section 10.4 > is called, > + * the result is undefined." > + * > + * In this case, let's the dst with undefined values > + */ > + if (src != NULL) { > + if (dst_stride == src_stride) { > + memcpy(dst, src, size); > + } else { > + while (count--) { > + memcpy(dst, src, dst_stride); > + src += src_stride; > + dst += dst_stride; > + } > } > } > buffer->stride = dst_stride;
signature.asc
Description: This is a digitally signed message part
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev