From: Brian Paul Date: Fri, 20 Apr 2012 22:45:12 +0000 (-0600) Subject: st/mesa: no-op glCopyPixels if source region is out of bounds X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=99ed0b2f9b95a484aa78aeee0277bb669611be5b;p=mesa.git 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 --- diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c index 5e078a85edf..9a3f22465c6 100644 --- a/src/mesa/state_tracker/st_cb_drawpixels.c +++ b/src/mesa/state_tracker/st_cb_drawpixels.c @@ -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);