panfrost: Use panfrost_blendable_formats for SFBD

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tested-by: Christian Hewitt <christianshewitt@gmail.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7352>
This commit is contained in:
Alyssa Rosenzweig 2020-10-27 20:22:34 -04:00 committed by Marge Bot
parent 293198ea04
commit 41f06ac877
1 changed files with 6 additions and 43 deletions

View File

@ -44,50 +44,13 @@ panfrost_sfbd_format(struct pipe_surface *surf,
fb->swizzle = panfrost_translate_swizzle_4(swizzle);
if (desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB)
fb->srgb = true;
struct pan_blendable_format fmt = panfrost_blend_format(surf->format);
if (util_format_is_unorm8(desc)) {
fb->internal_format = MALI_COLOR_BUFFER_INTERNAL_FORMAT_R8G8B8A8;
switch (desc->nr_channels) {
case 1:
fb->color_writeback_format = MALI_SFBD_COLOR_FORMAT_R8;
break;
case 2:
fb->color_writeback_format = MALI_SFBD_COLOR_FORMAT_R8G8;
break;
case 3:
fb->color_writeback_format = MALI_SFBD_COLOR_FORMAT_R8G8B8;
break;
case 4:
fb->color_writeback_format = MALI_SFBD_COLOR_FORMAT_R8G8B8A8;
break;
default:
unreachable("Invalid number of components");
}
/* If 8b RGB variant, we're good to go */
return;
}
/* sRGB handled as a dedicated flag */
enum pipe_format linearized = util_format_linear(surf->format);
switch (linearized) {
case PIPE_FORMAT_B5G6R5_UNORM:
fb->internal_format = MALI_COLOR_BUFFER_INTERNAL_FORMAT_R5G6B5A0;
fb->color_writeback_format = MALI_SFBD_COLOR_FORMAT_R5G6B5;
break;
case PIPE_FORMAT_A4B4G4R4_UNORM:
case PIPE_FORMAT_B4G4R4A4_UNORM:
case PIPE_FORMAT_R4G4B4A4_UNORM:
fb->internal_format = MALI_COLOR_BUFFER_INTERNAL_FORMAT_R4G4B4A4;
fb->color_writeback_format = MALI_SFBD_COLOR_FORMAT_R4G4B4A4;
break;
default:
unreachable("Invalid format rendering");
if (fmt.internal) {
fb->internal_format = fmt.internal;
fb->color_writeback_format = fmt.writeback;
} else {
unreachable("raw formats not finished for SFBD");
}
}