mesa/st: implement fallback for latc

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18564>
This commit is contained in:
Erik Faye-Lund 2022-08-10 08:45:16 +02:00
parent 6553e02a0b
commit 1b72045393
2 changed files with 14 additions and 2 deletions

View file

@ -445,6 +445,8 @@ st_compressed_format_fallback(struct st_context *st, mesa_format format)
return !st->has_s3tc;
case MESA_FORMAT_LAYOUT_RGTC:
return !st->has_rgtc;
case MESA_FORMAT_LAYOUT_LATC:
return !st->has_latc;
case MESA_FORMAT_LAYOUT_BPTC:
return !st->has_bptc;
case MESA_FORMAT_LAYOUT_ASTC:
@ -647,7 +649,8 @@ st_UnmapTextureImage(struct gl_context *ctx,
itransfer->temp_stride,
transfer->box.width, transfer->box.height,
texImage->TexFormat);
} else if (_mesa_is_format_rgtc(texImage->TexFormat)) {
} else if (_mesa_is_format_rgtc(texImage->TexFormat) ||
_mesa_is_format_latc(texImage->TexFormat)) {
_mesa_unpack_rgtc(map, transfer->stride,
itransfer->temp_data,
itransfer->temp_stride,

View file

@ -124,7 +124,8 @@ st_mesa_format_to_pipe_format(const struct st_context *st,
PIPE_FORMAT_R8G8B8A8_UNORM;
}
if ((_mesa_is_format_rgtc(mesaFormat) && !st->has_rgtc)) {
if ((_mesa_is_format_rgtc(mesaFormat) && !st->has_rgtc) ||
(_mesa_is_format_latc(mesaFormat) && !st->has_latc)) {
switch (mesaFormat) {
case MESA_FORMAT_R_RGTC1_UNORM:
return PIPE_FORMAT_R8_UNORM;
@ -134,6 +135,14 @@ st_mesa_format_to_pipe_format(const struct st_context *st,
return PIPE_FORMAT_R8G8_UNORM;
case MESA_FORMAT_RG_RGTC2_SNORM:
return PIPE_FORMAT_R8G8_SNORM;
case MESA_FORMAT_L_LATC1_UNORM:
return PIPE_FORMAT_L8_UNORM;
case MESA_FORMAT_L_LATC1_SNORM:
return PIPE_FORMAT_L8_SNORM;
case MESA_FORMAT_LA_LATC2_UNORM:
return PIPE_FORMAT_L8A8_UNORM;
case MESA_FORMAT_LA_LATC2_SNORM:
return PIPE_FORMAT_L8A8_SNORM;
default:
unreachable("Unknown RGTC format");
}