diff options
author | marha <marha@users.sourceforge.net> | 2014-11-29 12:44:10 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2014-11-29 12:44:10 +0100 |
commit | 0dbe845b2f4ba08924d6fcb9634d09dc3dde13d6 (patch) | |
tree | 4fc0c706447f18bc522bb503273ec9e10f6c2ba5 /mesalib/src/mesa/main/state.c | |
parent | d17578910169acabae7e67a3da8f26b5ed608ce6 (diff) | |
parent | d6d5581d5fba846c8476ad4d593da662306765d7 (diff) | |
download | vcxsrv-0dbe845b2f4ba08924d6fcb9634d09dc3dde13d6.tar.gz vcxsrv-0dbe845b2f4ba08924d6fcb9634d09dc3dde13d6.tar.bz2 vcxsrv-0dbe845b2f4ba08924d6fcb9634d09dc3dde13d6.zip |
Merge remote-tracking branch 'origin/released'
Conflicts:
xorg-server/hw/xwin/winclip.c
xorg-server/hw/xwin/winengine.c
xorg-server/hw/xwin/winfont.c
xorg-server/hw/xwin/wingc.c
xorg-server/hw/xwin/wingetsp.c
xorg-server/hw/xwin/winmisc.c
xorg-server/hw/xwin/winnativegdi.c
xorg-server/hw/xwin/winpfbdd.c
xorg-server/hw/xwin/winpixmap.c
xorg-server/hw/xwin/winpolyline.c
xorg-server/hw/xwin/winscrinit.c
xorg-server/hw/xwin/winsetsp.c
xorg-server/hw/xwin/winwindow.c
Diffstat (limited to 'mesalib/src/mesa/main/state.c')
-rw-r--r-- | mesalib/src/mesa/main/state.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/mesalib/src/mesa/main/state.c b/mesalib/src/mesa/main/state.c index 80287c470..45bce78fd 100644 --- a/mesalib/src/mesa/main/state.c +++ b/mesalib/src/mesa/main/state.c @@ -51,6 +51,7 @@ #include "texobj.h" #include "texstate.h" #include "varray.h" +#include "viewport.h" #include "blend.h" @@ -281,16 +282,29 @@ update_viewport_matrix(struct gl_context *ctx) * NOTE: RasterPos uses this. */ for (i = 0; i < ctx->Const.MaxViewports; i++) { + double scale[3], translate[3]; + + _mesa_get_viewport_xform(ctx, i, scale, translate); _math_matrix_viewport(&ctx->ViewportArray[i]._WindowMap, - ctx->ViewportArray[i].X, ctx->ViewportArray[i].Y, - ctx->ViewportArray[i].Width, ctx->ViewportArray[i].Height, - ctx->ViewportArray[i].Near, ctx->ViewportArray[i].Far, - depthMax); + scale, translate, depthMax); } } /** + * Update the ctx->Polygon._FrontBit flag. + */ +static void +update_frontbit(struct gl_context *ctx) +{ + if (ctx->Transform.ClipOrigin == GL_LOWER_LEFT) + ctx->Polygon._FrontBit = (ctx->Polygon.FrontFace == GL_CW); + else + ctx->Polygon._FrontBit = (ctx->Polygon.FrontFace == GL_CCW); +} + + +/** * Update derived multisample state. */ static void @@ -372,6 +386,9 @@ _mesa_update_state_locked( struct gl_context *ctx ) if (new_state & (_NEW_PROGRAM|_NEW_TEXTURE|_NEW_TEXTURE_MATRIX)) _mesa_update_texture( ctx, new_state ); + if (new_state & _NEW_POLYGON) + update_frontbit( ctx ); + if (new_state & _NEW_BUFFERS) _mesa_update_framebuffer(ctx); |