From: Maarten Lankhorst Date: Mon, 2 Sep 2013 15:08:48 +0000 (+0200) Subject: nvc0: restore viewport after blit X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ad4dc7723199b3052231f5b4aed1bd1ba1505025;p=mesa.git nvc0: restore viewport after blit Based on calim's original fix in the nine branch. Signed-off-by: Maarten Lankhorst Cc: "9.2 and 9.1" --- 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); }