From 7f7c8e83dfeefb34a033e2fdfa41b31d7053c28c Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Wed, 24 Aug 2022 15:20:42 +0200 Subject: [PATCH] mesa: fall-back to fp16 for bptc-textures MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FP16 is way more commonly supported than FP32, and requires half the memory bandwidth. Because the internal format of BPTC is really FP16, let's fall back to that instead. Acked-by: Marek Olšák Acked-by: Soroush Kashani Part-of: --- src/mesa/main/texcompress_bptc.c | 14 +++++++------- src/mesa/state_tracker/st_extensions.c | 2 +- src/mesa/state_tracker/st_format.c | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/mesa/main/texcompress_bptc.c b/src/mesa/main/texcompress_bptc.c index aa96dd61e2f..d70e35ffedd 100644 --- a/src/mesa/main/texcompress_bptc.c +++ b/src/mesa/main/texcompress_bptc.c @@ -253,17 +253,17 @@ _mesa_unpack_bptc(uint8_t *dst_row, { switch (format) { case MESA_FORMAT_BPTC_RGB_SIGNED_FLOAT: - decompress_rgb_float(src_width, src_height, - src_row, src_stride, - (float *)dst_row, dst_stride, + decompress_rgb_fp16(src_width, src_height, + src_row, src_stride, + (uint16_t *)dst_row, dst_stride, true); break; case MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT: - decompress_rgb_float(src_width, src_height, - src_row, src_stride, - (float *)dst_row, dst_stride, - false); + decompress_rgb_fp16(src_width, src_height, + src_row, src_stride, + (uint16_t *)dst_row, dst_stride, + false); break; default: diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index 42b3ed7dda1..cbb8a3eeb0a 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -979,7 +979,7 @@ void st_init_extensions(struct pipe_screen *screen, { { o(ARB_texture_compression_bptc) }, { PIPE_FORMAT_R8G8B8A8_UNORM, PIPE_FORMAT_R8G8B8A8_SRGB, - PIPE_FORMAT_R32G32B32X32_FLOAT } }, + PIPE_FORMAT_R16G16B16X16_FLOAT } }, { { o(TDFX_texture_compression_FXT1) }, { PIPE_FORMAT_FXT1_RGB, diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c index c3cbefe3de0..dd1a79b7282 100644 --- a/src/mesa/state_tracker/st_format.c +++ b/src/mesa/state_tracker/st_format.c @@ -123,7 +123,7 @@ st_mesa_format_to_pipe_format(const struct st_context *st, switch (mesaFormat) { case MESA_FORMAT_BPTC_RGB_SIGNED_FLOAT: case MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT: - return PIPE_FORMAT_R32G32B32X32_FLOAT; + return PIPE_FORMAT_R16G16B16X16_FLOAT; default: return _mesa_is_format_srgb(mesaFormat) ? PIPE_FORMAT_R8G8B8A8_SRGB : PIPE_FORMAT_R8G8B8A8_UNORM;