projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch '7.8' into master
[mesa.git]
/
src
/
mesa
/
state_tracker
/
st_atom_scissor.c
diff --git
a/src/mesa/state_tracker/st_atom_scissor.c
b/src/mesa/state_tracker/st_atom_scissor.c
index 3fd59e1945c2677b2de1cf8bbc3fd3388c7f50a8..5e0c51cff0af3f273a2c922899cf005cd64813eb 100644
(file)
--- a/
src/mesa/state_tracker/st_atom_scissor.c
+++ b/
src/mesa/state_tracker/st_atom_scissor.c
@@
-31,6
+31,7
@@
*/
*/
+#include "main/macros.h"
#include "st_context.h"
#include "pipe/p_context.h"
#include "st_atom.h"
#include "st_context.h"
#include "pipe/p_context.h"
#include "st_atom.h"
@@
-52,15
+53,19
@@
update_scissor( struct st_context *st )
scissor.maxy = fb->Height;
if (st->ctx->Scissor.Enabled) {
scissor.maxy = fb->Height;
if (st->ctx->Scissor.Enabled) {
- if ((GLuint)st->ctx->Scissor.X > scissor.minx)
+ /* need to be careful here with xmax or ymax < 0 */
+ GLint xmax = MAX2(0, st->ctx->Scissor.X + st->ctx->Scissor.Width);
+ GLint ymax = MAX2(0, st->ctx->Scissor.Y + st->ctx->Scissor.Height);
+
+ if (st->ctx->Scissor.X > (GLint)scissor.minx)
scissor.minx = st->ctx->Scissor.X;
scissor.minx = st->ctx->Scissor.X;
- if (
(GLuint)st->ctx->Scissor.Y >
scissor.miny)
+ if (
st->ctx->Scissor.Y > (GLint)
scissor.miny)
scissor.miny = st->ctx->Scissor.Y;
scissor.miny = st->ctx->Scissor.Y;
- if (
(GLuint)st->ctx->Scissor.X + st->ctx->Scissor.Width <
scissor.maxx)
- scissor.maxx =
st->ctx->Scissor.X + st->ctx->Scissor.Width
;
- if (
(GLuint)st->ctx->Scissor.Y + st->ctx->Scissor.Height <
scissor.maxy)
- scissor.maxy =
st->ctx->Scissor.Y + st->ctx->Scissor.Height
;
+ if (
xmax < (GLint)
scissor.maxx)
+ scissor.maxx =
xmax
;
+ if (
ymax < (GLint)
scissor.maxy)
+ scissor.maxy =
ymax
;
/* check for null space */
if (scissor.minx >= scissor.maxx || scissor.miny >= scissor.maxy)
/* check for null space */
if (scissor.minx >= scissor.maxx || scissor.miny >= scissor.maxy)