diff options
author | Maarten Lankhorst <maarten.lankhorst@canonical.com> | 2013-09-02 17:08:48 +0200 |
---|---|---|
committer | Maarten Lankhorst <maarten.lankhorst@canonical.com> | 2013-09-02 17:09:21 +0200 |
commit | ad4dc7723199b3052231f5b4aed1bd1ba1505025 (patch) | |
tree | 7745387dcdcba6015b865e47767d04376f0e0cce /src | |
parent | 3e81b8eedd48bb80900522bceebf6f81c6a00312 (diff) |
nvc0: restore viewport after blit
Based on calim's original fix in the nine branch.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Cc: "9.2 and 9.1" <mesa-stable@lists.freedesktop.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/nvc0/nvc0_context.h | 1 | ||||
-rw-r--r-- | src/gallium/drivers/nvc0/nvc0_state_validate.c | 6 | ||||
-rw-r--r-- | 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 a175f0acc9a..0baf811f3d7 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 4b50b43cf76..2b55adeb0a8 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 606a2b577ff..4ef1a445914 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); } |