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>
(cherry picked from commit 99ed0b2f9b)
This commit is contained in:
Brian Paul 2012-04-20 16:45:12 -06:00 committed by Ian Romanick
parent 7e824b728b
commit 2aaaa18853

View file

@ -1543,7 +1543,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);