From: Marek Olšák <marek.ol...@amd.com> The swizzle has no effect on DCC encoding. --- src/gallium/drivers/radeonsi/si_texture.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-)
diff --git a/src/gallium/drivers/radeonsi/si_texture.c b/src/gallium/drivers/radeonsi/si_texture.c index 5a29624f1fa..1f0de5e71ec 100644 --- a/src/gallium/drivers/radeonsi/si_texture.c +++ b/src/gallium/drivers/radeonsi/si_texture.c @@ -1926,38 +1926,32 @@ vi_get_dcc_channel_type(const struct util_format_description *desc) return dcc_channel_incompatible; } } /* Return if it's allowed to reinterpret one format as another with DCC enabled. */ bool vi_dcc_formats_compatible(enum pipe_format format1, enum pipe_format format2) { const struct util_format_description *desc1, *desc2; enum dcc_channel_type type1, type2; - int i; if (format1 == format2) return true; desc1 = util_format_description(format1); desc2 = util_format_description(format2); + /* This constraint is only needed if we use the TC-compatible + * DCC clear encoding with the clear value of 1. */ if (desc1->nr_channels != desc2->nr_channels) return false; - /* Swizzles must be the same. */ - for (i = 0; i < desc1->nr_channels; i++) - if (desc1->swizzle[i] <= PIPE_SWIZZLE_W && - desc2->swizzle[i] <= PIPE_SWIZZLE_W && - desc1->swizzle[i] != desc2->swizzle[i]) - return false; - type1 = vi_get_dcc_channel_type(desc1); type2 = vi_get_dcc_channel_type(desc2); return type1 != dcc_channel_incompatible && type2 != dcc_channel_incompatible && type1 == type2; } bool vi_dcc_formats_are_incompatible(struct pipe_resource *tex, unsigned level, -- 2.15.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev