[Mesa-dev] [PATCH] i965: allow unsourced enabled VAO
Samuel Iglesias Gonsálvez
siglesias at igalia.com
Wed Dec 21 10:52:32 UTC 2016
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias at 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;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20161221/2681bbca/attachment.sig>
More information about the mesa-dev
mailing list