r600g: bc 4/5 or rgtc textures need to be tiled as well.
authorDave Airlie <airlied@redhat.com>
Thu, 24 Feb 2011 03:55:25 +0000 (13:55 +1000)
committerDave Airlie <airlied@redhat.com>
Thu, 24 Feb 2011 23:18:42 +0000 (09:18 +1000)
Make the s3tc upload code more generic.

Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r600/r600_blit.c
src/gallium/drivers/r600/r600_texture.c

index 9865ea17ae52a91e8c109b1b9de93d2d683e3fc6..04408a5cc8eb434aa5aed9dd601bb064829cb8fb 100644 (file)
@@ -225,7 +225,7 @@ struct texture_orig_info {
        unsigned height0;
 };
 
-static void r600_s3tc_to_blittable(struct pipe_resource *tex,
+static void r600_compressed_to_blittable(struct pipe_resource *tex,
                                   unsigned level,
                                   struct texture_orig_info *orig)
 {
@@ -253,7 +253,7 @@ static void r600_s3tc_to_blittable(struct pipe_resource *tex,
 
 }
 
-static void r600_reset_blittable_to_s3tc(struct pipe_resource *tex,
+static void r600_reset_blittable_to_compressed(struct pipe_resource *tex,
                                         unsigned level,
                                         struct texture_orig_info *orig)
 {
@@ -282,13 +282,13 @@ static void r600_resource_copy_region(struct pipe_context *ctx,
 
        restore_orig[0] = restore_orig[1] = FALSE;
 
-       if (util_format_is_s3tc(src->format)) {
-               r600_s3tc_to_blittable(src, src_level, &orig_info[0]);
+       if (util_format_is_compressed(src->format)) {
+               r600_compressed_to_blittable(src, src_level, &orig_info[0]);
                restore_orig[0] = TRUE;
        }
 
-       if (util_format_is_s3tc(dst->format)) {
-               r600_s3tc_to_blittable(dst, dst_level, &orig_info[1]);
+       if (util_format_is_compressed(dst->format)) {
+               r600_compressed_to_blittable(dst, dst_level, &orig_info[1]);
                restore_orig[1] = TRUE;
                /* translate the dst box as well */
                dstx = util_format_get_nblocksx(orig_info[1].format, dstx);
@@ -299,10 +299,10 @@ static void r600_resource_copy_region(struct pipe_context *ctx,
                            src, src_level, src_box);
 
        if (restore_orig[0])
-               r600_reset_blittable_to_s3tc(src, src_level, &orig_info[0]);
+               r600_reset_blittable_to_compressed(src, src_level, &orig_info[0]);
 
        if (restore_orig[1])
-               r600_reset_blittable_to_s3tc(dst, dst_level, &orig_info[1]);
+               r600_reset_blittable_to_compressed(dst, dst_level, &orig_info[1]);
 }
 
 void r600_init_blit_functions(struct r600_pipe_context *rctx)
index 095558d0337bacd9aa5b69ffb58b8bee88033e9b..87143ee54cc79fface477c54dcd378a2087188aa 100644 (file)
@@ -292,7 +292,7 @@ static boolean permit_hardware_blit(struct pipe_screen *screen,
                bind = PIPE_BIND_RENDER_TARGET;
 
        /* hackaround for S3TC */
-       if (util_format_is_s3tc(res->format))
+       if (util_format_is_compressed(res->format))
                return TRUE;
            
        if (!screen->is_format_supported(screen,
@@ -424,7 +424,7 @@ struct pipe_resource *r600_texture_create(struct pipe_screen *screen,
        }
 
        if (!(templ->flags & R600_RESOURCE_FLAG_TRANSFER) &&
-           util_format_is_s3tc(templ->format))
+           util_format_is_compressed(templ->format))
                array_mode = V_038000_ARRAY_1D_TILED_THIN1;
 
        return (struct pipe_resource *)r600_texture_create_object(screen, templ, array_mode,