summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/nv50
diff options
context:
space:
mode:
authorChristoph Bumiller <[email protected]>2013-03-22 13:49:40 +0100
committerChristoph Bumiller <[email protected]>2013-03-29 00:33:00 +0100
commit443b247878edd6a67adc073b0c36e2941436b9a0 (patch)
treede2ce6b163bf232d82101ddcaf274b1187ce6a96 /src/gallium/drivers/nv50
parent090e73fc4642dfedb9ac46259572135229c8199e (diff)
nv50,nvc0: fix 3d blits, restore viewport after blit
Diffstat (limited to 'src/gallium/drivers/nv50')
-rw-r--r--src/gallium/drivers/nv50/nv50_surface.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/gallium/drivers/nv50/nv50_surface.c b/src/gallium/drivers/nv50/nv50_surface.c
index 117d3d1894b..b29a736ae3c 100644
--- a/src/gallium/drivers/nv50/nv50_surface.c
+++ b/src/gallium/drivers/nv50/nv50_surface.c
@@ -935,7 +935,7 @@ nv50_blit_3d(struct nv50_context *nv50, const struct pipe_blit_info *info)
nv50_blit_select_fp(blit, info);
nv50_blitctx_pre_blit(blit);
- nv50_blit_set_dst(blit, dst, info->dst.level, 0, info->dst.format);
+ nv50_blit_set_dst(blit, dst, info->dst.level, -1, info->dst.format);
nv50_blit_set_src(blit, src, info->src.level, -1, info->src.format,
blit->filter);
@@ -1223,10 +1223,14 @@ nv50_blit(struct pipe_context *pipe, const struct pipe_blit_info *info)
debug_printf("blit: cannot filter array or cube textures in z direction");
}
- if (!eng3d && info->dst.format != info->src.format)
+ if (!eng3d && info->dst.format != info->src.format) {
if (!nv50_2d_format_faithful(info->dst.format) ||
!nv50_2d_format_faithful(info->src.format))
eng3d = TRUE;
+ if (info->dst.format == PIPE_FORMAT_R8_UNORM ||
+ info->dst.format == PIPE_FORMAT_R16_UNORM)
+ eng3d = TRUE;
+ }
if (info->src.resource->nr_samples == 8 &&
info->dst.resource->nr_samples <= 1)