draw: Handle failure to allocate aligned_constant_storage.

Also, actually update const_storage_size, therefore avoiding to
unnecessarily reallocate aligned_constant_storage every single time
draw_vs_set_constants() is called.

Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
José Fonseca 2011-11-09 18:58:28 +00:00
parent e21c5157b6
commit 9e29cdbe95

View file

@ -69,14 +69,20 @@ draw_vs_set_constants(struct draw_context *draw,
if (size > draw->vs.const_storage_size[slot]) {
if (draw->vs.aligned_constant_storage[slot]) {
align_free((void *)draw->vs.aligned_constant_storage[slot]);
draw->vs.const_storage_size[slot] = 0;
}
draw->vs.aligned_constant_storage[slot] =
align_malloc(size, alignment);
if (draw->vs.aligned_constant_storage[slot]) {
draw->vs.const_storage_size[slot] = size;
}
}
assert(constants);
memcpy((void *)draw->vs.aligned_constant_storage[slot],
constants,
size);
if (draw->vs.aligned_constant_storage[slot]) {
memcpy((void *)draw->vs.aligned_constant_storage[slot],
constants,
size);
}
constants = draw->vs.aligned_constant_storage[slot];
}