st/mesa: add ETC2 & ASTC fast path for GetTex(Sub)Image

Not sure if GL/GLES can hit this path, but it's just decompression.

Tested-by: Mike Lothian <mike@fireburn.co.uk>
Tested-By: Gert Wollny<gert.wollny@collabora.com>
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
Reviewed-By: Gert Wollny <gw.fossdev@gmail.com>
This commit is contained in:
Marek Olšák 2018-02-13 17:37:56 +01:00
parent ebe03d3699
commit 5fe52044ef

View file

@ -1967,6 +1967,23 @@ st_GetTexSubImage(struct gl_context * ctx,
case PIPE_FORMAT_RGTC1_UNORM:
case PIPE_FORMAT_RGTC2_UNORM:
case PIPE_FORMAT_ETC1_RGB8:
case PIPE_FORMAT_ETC2_RGB8:
case PIPE_FORMAT_ETC2_RGB8A1:
case PIPE_FORMAT_ETC2_RGBA8:
case PIPE_FORMAT_ASTC_4x4:
case PIPE_FORMAT_ASTC_5x4:
case PIPE_FORMAT_ASTC_5x5:
case PIPE_FORMAT_ASTC_6x5:
case PIPE_FORMAT_ASTC_6x6:
case PIPE_FORMAT_ASTC_8x5:
case PIPE_FORMAT_ASTC_8x6:
case PIPE_FORMAT_ASTC_8x8:
case PIPE_FORMAT_ASTC_10x5:
case PIPE_FORMAT_ASTC_10x6:
case PIPE_FORMAT_ASTC_10x8:
case PIPE_FORMAT_ASTC_10x10:
case PIPE_FORMAT_ASTC_12x10:
case PIPE_FORMAT_ASTC_12x12:
case PIPE_FORMAT_BPTC_RGBA_UNORM:
dst_glformat = GL_RGBA8;
break;
@ -1982,6 +1999,30 @@ st_GetTexSubImage(struct gl_context * ctx,
goto fallback;
dst_glformat = GL_RGBA32F;
break;
case PIPE_FORMAT_ETC2_R11_UNORM:
if (!screen->is_format_supported(screen, PIPE_FORMAT_R16_UNORM,
pipe_target, 0, bind))
goto fallback;
dst_glformat = GL_R16;
break;
case PIPE_FORMAT_ETC2_R11_SNORM:
if (!screen->is_format_supported(screen, PIPE_FORMAT_R16_SNORM,
pipe_target, 0, bind))
goto fallback;
dst_glformat = GL_R16_SNORM;
break;
case PIPE_FORMAT_ETC2_RG11_UNORM:
if (!screen->is_format_supported(screen, PIPE_FORMAT_R16G16_UNORM,
pipe_target, 0, bind))
goto fallback;
dst_glformat = GL_RG16;
break;
case PIPE_FORMAT_ETC2_RG11_SNORM:
if (!screen->is_format_supported(screen, PIPE_FORMAT_R16G16_SNORM,
pipe_target, 0, bind))
goto fallback;
dst_glformat = GL_RG16_SNORM;
break;
default:
assert(0);
goto fallback;