r600g: allow copying between compatible un/compressed formats
authorEdward O'Callaghan <eocallaghan@alterapraxis.com>
Mon, 7 Dec 2015 13:36:26 +0000 (00:36 +1100)
committerDave Airlie <airlied@redhat.com>
Wed, 9 Dec 2015 04:40:32 +0000 (14:40 +1000)
See: `commit e82c527f1fc2f8ddc64954ecd06b0de3cea92e93`

which is where a block in src maps to a pixel in dst and vice versa.
    e.g. DXT1 <-> R32G32_UINT
         DXT5 <-> R32G32B32A32_UINT

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r600/r600_blit.c

index 3d44ff2e6a64fcb485019cc11e18f6e12f406c66..8a08dbdd82aba4aae33e61a7609407ffb2ffa600 100644 (file)
@@ -656,7 +656,8 @@ void r600_resource_copy_region(struct pipe_context *ctx,
        util_blitter_default_dst_texture(&dst_templ, dst, dst_level, dstz);
        util_blitter_default_src_texture(&src_templ, src, src_level);
 
-       if (util_format_is_compressed(src->format)) {
+       if (util_format_is_compressed(src->format) ||
+           util_format_is_compressed(dst->format)) {
                unsigned blocksize = util_format_get_blocksize(src->format);
 
                if (blocksize == 8)