panfrost: Add ETC1/ETC2 texture formats
Acked-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3414>
This commit is contained in:

committed by
Alyssa Rosenzweig

parent
2091d311c9
commit
960fe9daea
@@ -217,6 +217,29 @@ panfrost_find_format(const struct util_format_description *desc) {
|
|||||||
case PIPE_FORMAT_R9G9B9E5_FLOAT:
|
case PIPE_FORMAT_R9G9B9E5_FLOAT:
|
||||||
return MALI_R9F_G9F_B9F_E5F;
|
return MALI_R9F_G9F_B9F_E5F;
|
||||||
|
|
||||||
|
case PIPE_FORMAT_ETC1_RGB8:
|
||||||
|
case PIPE_FORMAT_ETC2_RGB8:
|
||||||
|
case PIPE_FORMAT_ETC2_SRGB8:
|
||||||
|
return MALI_ETC2_RGB8;
|
||||||
|
|
||||||
|
case PIPE_FORMAT_ETC2_RGB8A1:
|
||||||
|
case PIPE_FORMAT_ETC2_SRGB8A1:
|
||||||
|
return MALI_ETC2_RGB8A1;
|
||||||
|
|
||||||
|
case PIPE_FORMAT_ETC2_RGBA8:
|
||||||
|
case PIPE_FORMAT_ETC2_SRGBA8:
|
||||||
|
return MALI_ETC2_RGBA8;
|
||||||
|
|
||||||
|
case PIPE_FORMAT_ETC2_R11_UNORM:
|
||||||
|
return MALI_ETC2_R11_UNORM;
|
||||||
|
case PIPE_FORMAT_ETC2_R11_SNORM:
|
||||||
|
return MALI_ETC2_R11_SNORM;
|
||||||
|
|
||||||
|
case PIPE_FORMAT_ETC2_RG11_UNORM:
|
||||||
|
return MALI_ETC2_RG11_UNORM;
|
||||||
|
case PIPE_FORMAT_ETC2_RG11_SNORM:
|
||||||
|
return MALI_ETC2_RG11_SNORM;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
/* Fallthrough to default */
|
/* Fallthrough to default */
|
||||||
break;
|
break;
|
||||||
|
@@ -315,6 +315,9 @@ panfrost_setup_slices(struct panfrost_resource *pres, size_t *bo_size)
|
|||||||
/* Compute the would-be stride */
|
/* Compute the would-be stride */
|
||||||
unsigned stride = bytes_per_pixel * effective_width;
|
unsigned stride = bytes_per_pixel * effective_width;
|
||||||
|
|
||||||
|
if (util_format_is_compressed(res->format))
|
||||||
|
stride /= 4;
|
||||||
|
|
||||||
/* ..but cache-line align it for performance */
|
/* ..but cache-line align it for performance */
|
||||||
if (can_align_stride && pres->layout == PAN_LINEAR)
|
if (can_align_stride && pres->layout == PAN_LINEAR)
|
||||||
stride = ALIGN_POT(stride, 64);
|
stride = ALIGN_POT(stride, 64);
|
||||||
|
@@ -459,10 +459,14 @@ panfrost_is_format_supported( struct pipe_screen *screen,
|
|||||||
if (scanout && renderable && !util_format_is_rgba8_variant(format_desc))
|
if (scanout && renderable && !util_format_is_rgba8_variant(format_desc))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (format_desc->layout != UTIL_FORMAT_LAYOUT_PLAIN &&
|
switch (format_desc->layout) {
|
||||||
format_desc->layout != UTIL_FORMAT_LAYOUT_OTHER) {
|
case UTIL_FORMAT_LAYOUT_PLAIN:
|
||||||
/* Compressed formats not yet hooked up. */
|
case UTIL_FORMAT_LAYOUT_OTHER:
|
||||||
return false;
|
break;
|
||||||
|
case UTIL_FORMAT_LAYOUT_ETC:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Internally, formats that are depth/stencil renderable are limited.
|
/* Internally, formats that are depth/stencil renderable are limited.
|
||||||
|
@@ -229,6 +229,9 @@ struct mali_channel_swizzle {
|
|||||||
|
|
||||||
/* The top 3 bits specify how the bits of each component are interpreted. */
|
/* The top 3 bits specify how the bits of each component are interpreted. */
|
||||||
|
|
||||||
|
/* e.g. ETC2_RGB8 */
|
||||||
|
#define MALI_FORMAT_COMPRESSED (0 << 5)
|
||||||
|
|
||||||
/* e.g. R11F_G11F_B10F */
|
/* e.g. R11F_G11F_B10F */
|
||||||
#define MALI_FORMAT_SPECIAL (2 << 5)
|
#define MALI_FORMAT_SPECIAL (2 << 5)
|
||||||
|
|
||||||
@@ -273,6 +276,14 @@ struct mali_channel_swizzle {
|
|||||||
#define MALI_CHANNEL_FLOAT 7
|
#define MALI_CHANNEL_FLOAT 7
|
||||||
|
|
||||||
enum mali_format {
|
enum mali_format {
|
||||||
|
MALI_ETC2_RGB8 = MALI_FORMAT_COMPRESSED | 0x1,
|
||||||
|
MALI_ETC2_R11_UNORM = MALI_FORMAT_COMPRESSED | 0x2,
|
||||||
|
MALI_ETC2_RGBA8 = MALI_FORMAT_COMPRESSED | 0x3,
|
||||||
|
MALI_ETC2_RG11_UNORM = MALI_FORMAT_COMPRESSED | 0x4,
|
||||||
|
MALI_ETC2_R11_SNORM = MALI_FORMAT_COMPRESSED | 0x11,
|
||||||
|
MALI_ETC2_RG11_SNORM = MALI_FORMAT_COMPRESSED | 0x12,
|
||||||
|
MALI_ETC2_RGB8A1 = MALI_FORMAT_COMPRESSED | 0x13,
|
||||||
|
|
||||||
MALI_RGB565 = MALI_FORMAT_SPECIAL | 0x0,
|
MALI_RGB565 = MALI_FORMAT_SPECIAL | 0x0,
|
||||||
MALI_RGB5_A1_UNORM = MALI_FORMAT_SPECIAL | 0x2,
|
MALI_RGB5_A1_UNORM = MALI_FORMAT_SPECIAL | 0x2,
|
||||||
MALI_RGB10_A2_UNORM = MALI_FORMAT_SPECIAL | 0x3,
|
MALI_RGB10_A2_UNORM = MALI_FORMAT_SPECIAL | 0x3,
|
||||||
|
Reference in New Issue
Block a user