case PIPE_FORMAT_R9G9B9E5_FLOAT:
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:
/* Fallthrough to default */
break;
/* Compute the would-be stride */
unsigned stride = bytes_per_pixel * effective_width;
+ if (util_format_is_compressed(res->format))
+ stride /= 4;
+
/* ..but cache-line align it for performance */
if (can_align_stride && pres->layout == PAN_LINEAR)
stride = ALIGN_POT(stride, 64);
if (scanout && renderable && !util_format_is_rgba8_variant(format_desc))
return false;
- if (format_desc->layout != UTIL_FORMAT_LAYOUT_PLAIN &&
- format_desc->layout != UTIL_FORMAT_LAYOUT_OTHER) {
- /* Compressed formats not yet hooked up. */
- return false;
+ switch (format_desc->layout) {
+ case UTIL_FORMAT_LAYOUT_PLAIN:
+ case UTIL_FORMAT_LAYOUT_OTHER:
+ break;
+ case UTIL_FORMAT_LAYOUT_ETC:
+ return true;
+ default:
+ return false;
}
/* Internally, formats that are depth/stencil renderable are limited.
/* 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 */
#define MALI_FORMAT_SPECIAL (2 << 5)
#define MALI_CHANNEL_FLOAT 7
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_RGB5_A1_UNORM = MALI_FORMAT_SPECIAL | 0x2,
MALI_RGB10_A2_UNORM = MALI_FORMAT_SPECIAL | 0x3,