From: Keith Whitwell Date: Thu, 11 Dec 2003 19:06:32 +0000 (+0000) Subject: add driClipRectToFramebuffer helper function X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7ed58285abede813fbf5fa0a2e29982043f1bbbe;hp=844cdaf461e3e181bcf1d4c0ba79ef5c4140cb4e;p=mesa.git add driClipRectToFramebuffer helper function --- diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c index 0d21ceda562..4276854224d 100644 --- a/src/mesa/drivers/dri/common/utils.c +++ b/src/mesa/drivers/dri/common/utils.c @@ -184,3 +184,36 @@ driCheckDriDdxDrmVersions(__DRIscreenPrivate *sPriv, return GL_TRUE; } + +GLboolean driClipRectToFramebuffer( const GLframebuffer *buffer, + GLint *x, GLint *y, + GLsizei *width, GLsizei *height ) +{ + /* left clipping */ + if (*x < buffer->_Xmin) { + *width -= (buffer->_Xmin - *x); + *x = buffer->_Xmin; + } + + /* right clipping */ + if (*x + *width > buffer->_Xmax) + *width -= (*x + *width - buffer->_Xmax - 1); + + if (*width <= 0) + return GL_FALSE; + + /* bottom clipping */ + if (*y < buffer->_Ymin) { + *height -= (buffer->_Ymin - *y); + *y = buffer->_Ymin; + } + + /* top clipping */ + if (*y + *height > buffer->_Ymax) + *height -= (*y + *height - buffer->_Ymax - 1); + + if (*height <= 0) + return GL_FALSE; + + return GL_TRUE; +} diff --git a/src/mesa/drivers/dri/common/utils.h b/src/mesa/drivers/dri/common/utils.h index d6506c5b88c..401a1b882f5 100644 --- a/src/mesa/drivers/dri/common/utils.h +++ b/src/mesa/drivers/dri/common/utils.h @@ -51,4 +51,8 @@ extern GLboolean driCheckDriDdxDrmVersions( __DRIscreenPrivate *sPriv, const char * driver_name, int dri_major, int dri_minor, int ddx_major, int ddx_minor, int drm_major, int drm_minor ); +extern GLboolean driClipRectToFramebuffer( const GLframebuffer *buffer, + GLint *x, GLint *y, + GLsizei *width, GLsizei *height ); + #endif /* DRI_DEBUG_H */