mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
mesa/st: add BPTC formats, expose ARB_texture_compression_bptc
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Roland Scheidegger <sroland@vmware.com>
This commit is contained in:
parent
19563f0880
commit
ffd706dac0
3 changed files with 49 additions and 1 deletions
|
|
@ -1016,6 +1016,7 @@ st_GetTexImage(struct gl_context * ctx,
|
|||
case PIPE_FORMAT_RGTC1_UNORM:
|
||||
case PIPE_FORMAT_RGTC2_UNORM:
|
||||
case PIPE_FORMAT_ETC1_RGB8:
|
||||
case PIPE_FORMAT_BPTC_RGBA_UNORM:
|
||||
dst_glformat = GL_RGBA8;
|
||||
break;
|
||||
case PIPE_FORMAT_RGTC1_SNORM:
|
||||
|
|
@ -1024,7 +1025,12 @@ st_GetTexImage(struct gl_context * ctx,
|
|||
goto fallback;
|
||||
dst_glformat = GL_RGBA8_SNORM;
|
||||
break;
|
||||
/* TODO: for BPTC_*FLOAT, set RGBA32F and check for ARB_texture_float */
|
||||
case PIPE_FORMAT_BPTC_RGB_FLOAT:
|
||||
case PIPE_FORMAT_BPTC_RGB_UFLOAT:
|
||||
if (!ctx->Extensions.ARB_texture_float)
|
||||
goto fallback;
|
||||
dst_glformat = GL_RGBA32F;
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
goto fallback;
|
||||
|
|
|
|||
|
|
@ -517,6 +517,12 @@ void st_init_extensions(struct pipe_screen *screen,
|
|||
PIPE_FORMAT_DXT3_RGBA,
|
||||
PIPE_FORMAT_DXT5_RGBA } },
|
||||
|
||||
{ { o(ARB_texture_compression_bptc) },
|
||||
{ PIPE_FORMAT_BPTC_RGBA_UNORM,
|
||||
PIPE_FORMAT_BPTC_SRGBA,
|
||||
PIPE_FORMAT_BPTC_RGB_FLOAT,
|
||||
PIPE_FORMAT_BPTC_RGB_UFLOAT } },
|
||||
|
||||
{ { o(EXT_texture_shared_exponent) },
|
||||
{ PIPE_FORMAT_R9G9B9E5_FLOAT } },
|
||||
|
||||
|
|
|
|||
|
|
@ -328,6 +328,15 @@ st_mesa_format_to_pipe_format(struct st_context *st, mesa_format mesaFormat)
|
|||
case MESA_FORMAT_ETC1_RGB8:
|
||||
return st->has_etc1 ? PIPE_FORMAT_ETC1_RGB8 : PIPE_FORMAT_R8G8B8A8_UNORM;
|
||||
|
||||
case MESA_FORMAT_BPTC_RGBA_UNORM:
|
||||
return PIPE_FORMAT_BPTC_RGBA_UNORM;
|
||||
case MESA_FORMAT_BPTC_SRGB_ALPHA_UNORM:
|
||||
return PIPE_FORMAT_BPTC_SRGBA;
|
||||
case MESA_FORMAT_BPTC_RGB_SIGNED_FLOAT:
|
||||
return PIPE_FORMAT_BPTC_RGB_FLOAT;
|
||||
case MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT:
|
||||
return PIPE_FORMAT_BPTC_RGB_UFLOAT;
|
||||
|
||||
/* signed normalized formats */
|
||||
case MESA_FORMAT_R_SNORM8:
|
||||
return PIPE_FORMAT_R8_SNORM;
|
||||
|
|
@ -707,6 +716,15 @@ st_pipe_format_to_mesa_format(enum pipe_format format)
|
|||
case PIPE_FORMAT_ETC1_RGB8:
|
||||
return MESA_FORMAT_ETC1_RGB8;
|
||||
|
||||
case PIPE_FORMAT_BPTC_RGBA_UNORM:
|
||||
return MESA_FORMAT_BPTC_RGBA_UNORM;
|
||||
case PIPE_FORMAT_BPTC_SRGBA:
|
||||
return MESA_FORMAT_BPTC_SRGB_ALPHA_UNORM;
|
||||
case PIPE_FORMAT_BPTC_RGB_FLOAT:
|
||||
return MESA_FORMAT_BPTC_RGB_SIGNED_FLOAT;
|
||||
case PIPE_FORMAT_BPTC_RGB_UFLOAT:
|
||||
return MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT;
|
||||
|
||||
/* signed normalized formats */
|
||||
case PIPE_FORMAT_R8_SNORM:
|
||||
return MESA_FORMAT_R_SNORM8;
|
||||
|
|
@ -1273,6 +1291,24 @@ static const struct format_mapping format_map[] = {
|
|||
{ PIPE_FORMAT_ETC1_RGB8, 0 }
|
||||
},
|
||||
|
||||
/* BPTC */
|
||||
{
|
||||
{ GL_COMPRESSED_RGBA_BPTC_UNORM, 0 },
|
||||
{ PIPE_FORMAT_BPTC_RGBA_UNORM, 0 },
|
||||
},
|
||||
{
|
||||
{ GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM, 0 },
|
||||
{ PIPE_FORMAT_BPTC_SRGBA, 0 },
|
||||
},
|
||||
{
|
||||
{ GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT, 0 },
|
||||
{ PIPE_FORMAT_BPTC_RGB_FLOAT, 0 },
|
||||
},
|
||||
{
|
||||
{ GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT, 0 },
|
||||
{ PIPE_FORMAT_BPTC_RGB_UFLOAT, 0 },
|
||||
},
|
||||
|
||||
/* signed/unsigned integer formats.
|
||||
*/
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue