Mesa (9.2): nvc0: restore viewport after blit
Carl Worth
cworth at kemper.freedesktop.org
Fri Sep 27 23:03:18 UTC 2013
Module: Mesa
Branch: 9.2
Commit: 72295c5f6715555082455072bfd29a1e5ae545de
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=72295c5f6715555082455072bfd29a1e5ae545de
Author: Maarten Lankhorst <maarten.lankhorst at canonical.com>
Date: Mon Sep 2 17:08:48 2013 +0200
nvc0: restore viewport after blit
Based on calim's original fix in the nine branch.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst at canonical.com>
Cc: "9.2 and 9.1" <mesa-stable at lists.freedesktop.org>
(cherry picked from commit ad4dc7723199b3052231f5b4aed1bd1ba1505025)
---
src/gallium/drivers/nvc0/nvc0_context.h | 1 +
src/gallium/drivers/nvc0/nvc0_state_validate.c | 6 ++++--
src/gallium/drivers/nvc0/nvc0_surface.c | 4 ++--
3 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/gallium/drivers/nvc0/nvc0_context.h b/src/gallium/drivers/nvc0/nvc0_context.h
index e4029c5..a18cd00 100644
--- a/src/gallium/drivers/nvc0/nvc0_context.h
+++ b/src/gallium/drivers/nvc0/nvc0_context.h
@@ -198,6 +198,7 @@ struct nvc0_context {
struct pipe_surface *surfaces[2][NVC0_MAX_SURFACE_SLOTS];
uint16_t surfaces_dirty[2];
uint16_t surfaces_valid[2];
+ uint32_t vport_int[2];
struct util_dynarray global_residents;
diff --git a/src/gallium/drivers/nvc0/nvc0_state_validate.c b/src/gallium/drivers/nvc0/nvc0_state_validate.c
index 1e14723..22c9a84 100644
--- a/src/gallium/drivers/nvc0/nvc0_state_validate.c
+++ b/src/gallium/drivers/nvc0/nvc0_state_validate.c
@@ -245,9 +245,11 @@ nvc0_validate_viewport(struct nvc0_context *nvc0)
zmin = vp->translate[2] - fabsf(vp->scale[2]);
zmax = vp->translate[2] + fabsf(vp->scale[2]);
+ nvc0->vport_int[0] = (w << 16) | x;
+ nvc0->vport_int[1] = (h << 16) | y;
BEGIN_NVC0(push, NVC0_3D(VIEWPORT_HORIZ(0)), 2);
- PUSH_DATA (push, (w << 16) | x);
- PUSH_DATA (push, (h << 16) | y);
+ PUSH_DATA (push, nvc0->vport_int[0]);
+ PUSH_DATA (push, nvc0->vport_int[1]);
BEGIN_NVC0(push, NVC0_3D(DEPTH_RANGE_NEAR(0)), 2);
PUSH_DATAf(push, zmin);
PUSH_DATAf(push, zmax);
diff --git a/src/gallium/drivers/nvc0/nvc0_surface.c b/src/gallium/drivers/nvc0/nvc0_surface.c
index 606a2b5..4ef1a44 100644
--- a/src/gallium/drivers/nvc0/nvc0_surface.c
+++ b/src/gallium/drivers/nvc0/nvc0_surface.c
@@ -948,8 +948,8 @@ nvc0_blit_3d(struct nvc0_context *nvc0, const struct pipe_blit_info *info)
/* restore viewport */
BEGIN_NVC0(push, NVC0_3D(VIEWPORT_HORIZ(0)), 2);
- PUSH_DATA (push, nvc0->framebuffer.width << 16);
- PUSH_DATA (push, nvc0->framebuffer.height << 16);
+ PUSH_DATA (push, nvc0->vport_int[0]);
+ PUSH_DATA (push, nvc0->vport_int[1]);
IMMED_NVC0(push, NVC0_3D(VIEWPORT_TRANSFORM_EN), 1);
}
More information about the mesa-commit
mailing list