i915g: Fallback copy_render for ZS formats
authorStéphane Marchesin <marcheu@chromium.org>
Sat, 22 Nov 2014 08:11:40 +0000 (00:11 -0800)
committerStéphane Marchesin <marcheu@chromium.org>
Sat, 22 Nov 2014 08:13:41 +0000 (00:13 -0800)
These don't work out of the box, need more work, maybe with a proxy
format?

Signed-off-by: Stéphane Marchesin <marcheu@chromium.org>
src/gallium/drivers/i915/i915_surface.c

index b5161722701e0806dcfd088edeea057a8d08bb49..24e01560110c3f32d6355c232c5404c5749a349e 100644 (file)
@@ -89,9 +89,19 @@ i915_surface_copy_render(struct pipe_context *pipe,
    struct pipe_box dstbox;
    struct pipe_sampler_view src_templ, *src_view;
    struct pipe_surface dst_templ, *dst_view;
+   const struct util_format_description *desc;
 
    /* Fallback for buffers. */
-   if ((dst->target == PIPE_BUFFER && src->target == PIPE_BUFFER))
+   if (dst->target == PIPE_BUFFER && src->target == PIPE_BUFFER)
+      goto fallback;
+
+   /* Fallback for depth&stencil. XXX: see if we can use a proxy format */
+   desc = util_format_description(src->format);
+   if (desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS)
+      goto fallback;
+
+   desc = util_format_description(dst->format);
+   if (desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS)
       goto fallback;
 
    util_blitter_default_dst_texture(&dst_templ, dst, dst_level, dstz);