mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-08 08:30:10 +01:00
radeon: Make use of _mesa_get_viewport_xform v2.
Instead of _WindowMap just use the translation and scale of the viewport transform directly. Thereby avoid dividing by _DepthMaxF again. v2: Change order of assignments. Reviewed-by: Brian Paul <brianp@vmware.com> Signed-off-by: Mathias Froehlich <Mathias.Froehlich@web.de>
This commit is contained in:
parent
a8ceb8e450
commit
472913ea75
2 changed files with 18 additions and 16 deletions
|
|
@ -42,6 +42,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#include "main/framebuffer.h"
|
||||
#include "main/fbobject.h"
|
||||
#include "main/stencil.h"
|
||||
#include "main/viewport.h"
|
||||
|
||||
#include "swrast/swrast.h"
|
||||
#include "vbo/vbo.h"
|
||||
|
|
@ -1544,9 +1545,8 @@ void r200UpdateWindow( struct gl_context *ctx )
|
|||
__DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon);
|
||||
GLfloat xoffset = 0;
|
||||
GLfloat yoffset = dPriv ? (GLfloat) dPriv->h : 0;
|
||||
const GLfloat *v = ctx->ViewportArray[0]._WindowMap.m;
|
||||
const GLboolean render_to_fbo = (ctx->DrawBuffer ? _mesa_is_user_fbo(ctx->DrawBuffer) : 0);
|
||||
const GLfloat depthScale = 1.0F / ctx->DrawBuffer->_DepthMaxF;
|
||||
double scale[3], translate[3];
|
||||
GLfloat y_scale, y_bias;
|
||||
|
||||
if (render_to_fbo) {
|
||||
|
|
@ -1557,12 +1557,13 @@ void r200UpdateWindow( struct gl_context *ctx )
|
|||
y_bias = yoffset;
|
||||
}
|
||||
|
||||
float_ui32_type sx = { v[MAT_SX] };
|
||||
float_ui32_type tx = { v[MAT_TX] + xoffset };
|
||||
float_ui32_type sy = { v[MAT_SY] * y_scale };
|
||||
float_ui32_type ty = { (v[MAT_TY] * y_scale) + y_bias };
|
||||
float_ui32_type sz = { v[MAT_SZ] * depthScale };
|
||||
float_ui32_type tz = { v[MAT_TZ] * depthScale };
|
||||
_mesa_get_viewport_xform(ctx, 0, scale, translate);
|
||||
float_ui32_type sx = { scale[0] };
|
||||
float_ui32_type sy = { scale[1] * y_scale };
|
||||
float_ui32_type sz = { scale[2] };
|
||||
float_ui32_type tx = { translate[0] + xoffset };
|
||||
float_ui32_type ty = { (translate[1] * y_scale) + y_bias };
|
||||
float_ui32_type tz = { translate[2] };
|
||||
|
||||
R200_STATECHANGE( rmesa, vpt );
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#include "main/state.h"
|
||||
#include "main/core.h"
|
||||
#include "main/stencil.h"
|
||||
#include "main/viewport.h"
|
||||
|
||||
#include "vbo/vbo.h"
|
||||
#include "tnl/tnl.h"
|
||||
|
|
@ -1352,9 +1353,8 @@ void radeonUpdateWindow( struct gl_context *ctx )
|
|||
__DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon);
|
||||
GLfloat xoffset = 0.0;
|
||||
GLfloat yoffset = dPriv ? (GLfloat) dPriv->h : 0;
|
||||
const GLfloat *v = ctx->ViewportArray[0]._WindowMap.m;
|
||||
const GLboolean render_to_fbo = (ctx->DrawBuffer ? _mesa_is_user_fbo(ctx->DrawBuffer) : 0);
|
||||
const GLfloat depthScale = 1.0F / ctx->DrawBuffer->_DepthMaxF;
|
||||
double scale[3], translate[3];
|
||||
GLfloat y_scale, y_bias;
|
||||
|
||||
if (render_to_fbo) {
|
||||
|
|
@ -1365,12 +1365,13 @@ void radeonUpdateWindow( struct gl_context *ctx )
|
|||
y_bias = yoffset;
|
||||
}
|
||||
|
||||
float_ui32_type sx = { v[MAT_SX] };
|
||||
float_ui32_type tx = { v[MAT_TX] + xoffset + SUBPIXEL_X };
|
||||
float_ui32_type sy = { v[MAT_SY] * y_scale };
|
||||
float_ui32_type ty = { (v[MAT_TY] * y_scale) + y_bias + SUBPIXEL_Y };
|
||||
float_ui32_type sz = { v[MAT_SZ] * depthScale };
|
||||
float_ui32_type tz = { v[MAT_TZ] * depthScale };
|
||||
_mesa_get_viewport_xform(ctx, 0, scale, translate);
|
||||
float_ui32_type sx = { scale[0] };
|
||||
float_ui32_type sy = { scale[1] * y_scale };
|
||||
float_ui32_type sz = { scale[2] };
|
||||
float_ui32_type tx = { translate[0] + xoffset + SUBPIXEL_X };
|
||||
float_ui32_type ty = { (translate[1] * y_scale) + y_bias + SUBPIXEL_Y };
|
||||
float_ui32_type tz = { translate[2] };
|
||||
|
||||
RADEON_STATECHANGE( rmesa, vpt );
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue