| From 6f4c4df6c2da6b2c055952df78bad8edf83c4dc8 Mon Sep 17 00:00:00 2001 |
| From: cheyang <cheyang@bytedance.com> |
| Date: Fri, 26 Feb 2021 17:47:27 +0800 |
| Subject: [PATCH] virgl: add astc 2d compressed formats |
| |
| Signed-off-by: cheyang <cheyang@bytedance.com> |
| Signed-off-by: hexin <hexin.op@bytedance.com> |
| Reviewed-by: Gert Wollny <gert.wollny@collabora.com> |
| Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9306> |
| --- |
| src/gallium/drivers/virgl/virgl_encode.c | 28 ++++++++++++++++++++++ |
| src/gallium/drivers/virgl/virgl_screen.c | 5 ++++ |
| src/virtio/virtio-gpu/virgl_hw.h | 30 ++++++++++++++++++++++++ |
| 3 files changed, 63 insertions(+) |
| |
| diff --git a/src/gallium/drivers/virgl/virgl_encode.c b/src/gallium/drivers/virgl/virgl_encode.c |
| index 47a44c3489f..d93fb85098a 100644 |
| --- a/src/gallium/drivers/virgl/virgl_encode.c |
| +++ b/src/gallium/drivers/virgl/virgl_encode.c |
| @@ -259,6 +259,34 @@ static const enum virgl_formats virgl_formats_conv_table[PIPE_FORMAT_COUNT] = { |
| CONV_FORMAT(ETC2_R11_SNORM) |
| CONV_FORMAT(ETC2_RG11_UNORM) |
| CONV_FORMAT(ETC2_RG11_SNORM) |
| + CONV_FORMAT(ASTC_4x4) |
| + CONV_FORMAT(ASTC_5x4) |
| + CONV_FORMAT(ASTC_5x5) |
| + CONV_FORMAT(ASTC_6x5) |
| + CONV_FORMAT(ASTC_6x6) |
| + CONV_FORMAT(ASTC_8x5) |
| + CONV_FORMAT(ASTC_8x6) |
| + CONV_FORMAT(ASTC_8x8) |
| + CONV_FORMAT(ASTC_10x5) |
| + CONV_FORMAT(ASTC_10x6) |
| + CONV_FORMAT(ASTC_10x8) |
| + CONV_FORMAT(ASTC_10x10) |
| + CONV_FORMAT(ASTC_12x10) |
| + CONV_FORMAT(ASTC_12x12) |
| + CONV_FORMAT(ASTC_4x4_SRGB) |
| + CONV_FORMAT(ASTC_5x4_SRGB) |
| + CONV_FORMAT(ASTC_5x5_SRGB) |
| + CONV_FORMAT(ASTC_6x5_SRGB) |
| + CONV_FORMAT(ASTC_6x6_SRGB) |
| + CONV_FORMAT(ASTC_8x5_SRGB) |
| + CONV_FORMAT(ASTC_8x6_SRGB) |
| + CONV_FORMAT(ASTC_8x8_SRGB ) |
| + CONV_FORMAT(ASTC_10x5_SRGB) |
| + CONV_FORMAT(ASTC_10x6_SRGB) |
| + CONV_FORMAT(ASTC_10x8_SRGB) |
| + CONV_FORMAT(ASTC_10x10_SRGB) |
| + CONV_FORMAT(ASTC_12x10_SRGB) |
| + CONV_FORMAT(ASTC_12x12_SRGB) |
| }; |
| |
| enum virgl_formats pipe_to_virgl_format(enum pipe_format format) |
| diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c |
| index 1189a3e1b59..24c692df405 100644 |
| --- a/src/gallium/drivers/virgl/virgl_screen.c |
| +++ b/src/gallium/drivers/virgl/virgl_screen.c |
| @@ -670,6 +670,7 @@ virgl_is_format_supported( struct pipe_screen *screen, |
| |
| if ((format_desc->layout == UTIL_FORMAT_LAYOUT_RGTC || |
| format_desc->layout == UTIL_FORMAT_LAYOUT_ETC || |
| + format_desc->layout == UTIL_FORMAT_LAYOUT_ASTC || |
| format_desc->layout == UTIL_FORMAT_LAYOUT_S3TC) && |
| target == PIPE_TEXTURE_3D) |
| return false; |
| @@ -731,6 +732,10 @@ virgl_is_format_supported( struct pipe_screen *screen, |
| goto out_lookup; |
| } |
| |
| + if (format_desc->layout == UTIL_FORMAT_LAYOUT_ASTC) { |
| + goto out_lookup; |
| + } |
| + |
| /* Find the first non-VOID channel. */ |
| for (i = 0; i < 4; i++) { |
| if (format_desc->channel[i].type != UTIL_FORMAT_TYPE_VOID) { |
| diff --git a/src/virtio/virtio-gpu/virgl_hw.h b/src/virtio/virtio-gpu/virgl_hw.h |
| index 94997a3b005..c77d1fcec1f 100644 |
| --- a/src/virtio/virtio-gpu/virgl_hw.h |
| +++ b/src/virtio/virtio-gpu/virgl_hw.h |
| @@ -358,6 +358,36 @@ enum virgl_formats { |
| VIRGL_FORMAT_ETC2_RG11_UNORM = 277, |
| VIRGL_FORMAT_ETC2_RG11_SNORM = 278, |
| |
| + /* astc compressed */ |
| + VIRGL_FORMAT_ASTC_4x4 = 279, |
| + VIRGL_FORMAT_ASTC_5x4 = 280, |
| + VIRGL_FORMAT_ASTC_5x5 = 281, |
| + VIRGL_FORMAT_ASTC_6x5 = 282, |
| + VIRGL_FORMAT_ASTC_6x6 = 283, |
| + VIRGL_FORMAT_ASTC_8x5 = 284, |
| + VIRGL_FORMAT_ASTC_8x6 = 285, |
| + VIRGL_FORMAT_ASTC_8x8 = 286, |
| + VIRGL_FORMAT_ASTC_10x5 = 287, |
| + VIRGL_FORMAT_ASTC_10x6 = 288, |
| + VIRGL_FORMAT_ASTC_10x8 = 289, |
| + VIRGL_FORMAT_ASTC_10x10 = 290, |
| + VIRGL_FORMAT_ASTC_12x10 = 291, |
| + VIRGL_FORMAT_ASTC_12x12 = 292, |
| + VIRGL_FORMAT_ASTC_4x4_SRGB = 293, |
| + VIRGL_FORMAT_ASTC_5x4_SRGB = 294, |
| + VIRGL_FORMAT_ASTC_5x5_SRGB = 295, |
| + VIRGL_FORMAT_ASTC_6x5_SRGB = 296, |
| + VIRGL_FORMAT_ASTC_6x6_SRGB = 297, |
| + VIRGL_FORMAT_ASTC_8x5_SRGB = 298, |
| + VIRGL_FORMAT_ASTC_8x6_SRGB = 299, |
| + VIRGL_FORMAT_ASTC_8x8_SRGB = 300, |
| + VIRGL_FORMAT_ASTC_10x5_SRGB = 301, |
| + VIRGL_FORMAT_ASTC_10x6_SRGB = 302, |
| + VIRGL_FORMAT_ASTC_10x8_SRGB = 303, |
| + VIRGL_FORMAT_ASTC_10x10_SRGB = 304, |
| + VIRGL_FORMAT_ASTC_12x10_SRGB = 305, |
| + VIRGL_FORMAT_ASTC_12x12_SRGB = 306, |
| + |
| VIRGL_FORMAT_R10G10B10X2_UNORM = 308, |
| VIRGL_FORMAT_A4B4G4R4_UNORM = 311, |
| |
| -- |
| 2.31.1.498.g6c1eba8ee3d-goog |
| |