st/mesa: no-op glCopyPixels if source region is out of bounds

If the source region for a glCopyPixels is completely outside the
source buffer bounds, no-op the copy.  Fixes a failed assertion.

NOTE: This is a candidate for the 8.0 branch.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
This commit is contained in:
Brian Paul 2012-04-20 16:45:12 -06:00
parent d7f9b6ce13
commit 99ed0b2f9b

View file

@ -1509,7 +1509,15 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy,
readY = srcy;
readW = width;
readH = height;
_mesa_clip_readpixels(ctx, &readX, &readY, &readW, &readH, &pack);
if (!_mesa_clip_readpixels(ctx, &readX, &readY, &readW, &readH, &pack)) {
/* The source region is completely out of bounds. Do nothing.
* The GL spec says "Results of copies from outside the window,
* or from regions of the window that are not exposed, are
* hardware dependent and undefined."
*/
return;
}
readW = MAX2(0, readW);
readH = MAX2(0, readH);