diff options
Diffstat (limited to 'src/gallium/drivers/nv50')
-rw-r--r-- | src/gallium/drivers/nv50/nv50_surface.c | 8 |
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) |