mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 02:48:06 +02:00
Update the _WindowMap matrix in _mesa_set_viewport() and _mesa_DepthRange().
This is a temporary fix for the DRI drivers. Should really only have to update the matrix via _mesa_update_state().
This commit is contained in:
parent
920023240c
commit
75a8383e8d
1 changed files with 28 additions and 6 deletions
|
|
@ -575,18 +575,28 @@ _mesa_set_viewport( GLcontext *ctx, GLint x, GLint y,
|
|||
return;
|
||||
}
|
||||
|
||||
/* clamp width, and height to implementation dependent range */
|
||||
width = CLAMP( width, 1, ctx->Const.MaxViewportWidth );
|
||||
height = CLAMP( height, 1, ctx->Const.MaxViewportHeight );
|
||||
/* clamp width and height to the implementation dependent range */
|
||||
width = CLAMP(width, 1, ctx->Const.MaxViewportWidth);
|
||||
height = CLAMP(height, 1, ctx->Const.MaxViewportHeight);
|
||||
|
||||
/* Save viewport */
|
||||
ctx->Viewport.X = x;
|
||||
ctx->Viewport.Width = width;
|
||||
ctx->Viewport.Y = y;
|
||||
ctx->Viewport.Height = height;
|
||||
|
||||
ctx->NewState |= _NEW_VIEWPORT;
|
||||
|
||||
#if 1
|
||||
/* XXX remove this someday. Currently the DRI drivers rely on
|
||||
* the WindowMap matrix being up to date in the driver's Viewport
|
||||
* and DepthRange functions.
|
||||
*/
|
||||
_math_matrix_viewport(&ctx->Viewport._WindowMap,
|
||||
ctx->Viewport.X, ctx->Viewport.Y,
|
||||
ctx->Viewport.Width, ctx->Viewport.Height,
|
||||
ctx->Viewport.Near, ctx->Viewport.Far,
|
||||
ctx->DrawBuffer->_DepthMaxF);
|
||||
#endif
|
||||
|
||||
if (ctx->Driver.Viewport) {
|
||||
/* Many drivers will use this call to check for window size changes
|
||||
* and reallocate the z/stencil/accum/etc buffers if needed.
|
||||
|
|
@ -597,7 +607,6 @@ _mesa_set_viewport( GLcontext *ctx, GLint x, GLint y,
|
|||
|
||||
|
||||
#if _HAVE_FULL_GL
|
||||
void GLAPIENTRY
|
||||
/**
|
||||
* Called by glDepthRange
|
||||
*
|
||||
|
|
@ -606,6 +615,7 @@ void GLAPIENTRY
|
|||
* \param farval specifies the Z buffer value which should correspond to
|
||||
* the far clip plane
|
||||
*/
|
||||
void GLAPIENTRY
|
||||
_mesa_DepthRange( GLclampd nearval, GLclampd farval )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
|
@ -618,6 +628,18 @@ _mesa_DepthRange( GLclampd nearval, GLclampd farval )
|
|||
ctx->Viewport.Far = (GLfloat) CLAMP( farval, 0.0, 1.0 );
|
||||
ctx->NewState |= _NEW_VIEWPORT;
|
||||
|
||||
#if 1
|
||||
/* XXX remove this someday. Currently the DRI drivers rely on
|
||||
* the WindowMap matrix being up to date in the driver's Viewport
|
||||
* and DepthRange functions.
|
||||
*/
|
||||
_math_matrix_viewport(&ctx->Viewport._WindowMap,
|
||||
ctx->Viewport.X, ctx->Viewport.Y,
|
||||
ctx->Viewport.Width, ctx->Viewport.Height,
|
||||
ctx->Viewport.Near, ctx->Viewport.Far,
|
||||
ctx->DrawBuffer->_DepthMaxF);
|
||||
#endif
|
||||
|
||||
if (ctx->Driver.DepthRange) {
|
||||
(*ctx->Driver.DepthRange)( ctx, nearval, farval );
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue