mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 11:48:06 +02:00
i965: allow unsourced enabled VAO
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.
This commit is contained in:
parent
8801734da7
commit
c32a9ec5f5
1 changed files with 16 additions and 7 deletions
|
|
@ -423,13 +423,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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue