st/mesa: Add GL_TDFX_texture_compression_FXT1 support
Eric recently added PIPE_FORMAT_FXT1_RGB[A] as part of his format unification work. This was really most of the work of implementing the extension. We just need to handle it in a couple of places and expose the extension. v2: Reject the new formats in llvmpipe_is_format_supported to prevent crashes because it doesn't know how to handle the new formats. Reviewed-by: Marek Olšák <marek.olsak@amd.com> [v1] Reviewed-by: Eric Anholt <eric@anholt.net> [v1]
This commit is contained in:
parent
3e21e17b2f
commit
1bdd342b60
|
@ -665,7 +665,8 @@ llvmpipe_is_format_supported( struct pipe_screen *_screen,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (format_desc->layout == UTIL_FORMAT_LAYOUT_ASTC ||
|
if (format_desc->layout == UTIL_FORMAT_LAYOUT_ASTC ||
|
||||||
format_desc->layout == UTIL_FORMAT_LAYOUT_ATC) {
|
format_desc->layout == UTIL_FORMAT_LAYOUT_ATC ||
|
||||||
|
format_desc->layout == UTIL_FORMAT_LAYOUT_FXT1) {
|
||||||
/* Software decoding is not hooked up. */
|
/* Software decoding is not hooked up. */
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2046,6 +2046,8 @@ st_GetTexSubImage(struct gl_context * ctx,
|
||||||
case PIPE_FORMAT_ASTC_12x10:
|
case PIPE_FORMAT_ASTC_12x10:
|
||||||
case PIPE_FORMAT_ASTC_12x12:
|
case PIPE_FORMAT_ASTC_12x12:
|
||||||
case PIPE_FORMAT_BPTC_RGBA_UNORM:
|
case PIPE_FORMAT_BPTC_RGBA_UNORM:
|
||||||
|
case PIPE_FORMAT_FXT1_RGB:
|
||||||
|
case PIPE_FORMAT_FXT1_RGBA:
|
||||||
dst_glformat = GL_RGBA8;
|
dst_glformat = GL_RGBA8;
|
||||||
break;
|
break;
|
||||||
case PIPE_FORMAT_RGTC1_SNORM:
|
case PIPE_FORMAT_RGTC1_SNORM:
|
||||||
|
|
|
@ -877,6 +877,10 @@ void st_init_extensions(struct pipe_screen *screen,
|
||||||
PIPE_FORMAT_BPTC_RGB_FLOAT,
|
PIPE_FORMAT_BPTC_RGB_FLOAT,
|
||||||
PIPE_FORMAT_BPTC_RGB_UFLOAT } },
|
PIPE_FORMAT_BPTC_RGB_UFLOAT } },
|
||||||
|
|
||||||
|
{ { o(TDFX_texture_compression_FXT1) },
|
||||||
|
{ PIPE_FORMAT_FXT1_RGB,
|
||||||
|
PIPE_FORMAT_FXT1_RGBA } },
|
||||||
|
|
||||||
{ { o(KHR_texture_compression_astc_ldr),
|
{ { o(KHR_texture_compression_astc_ldr),
|
||||||
o(KHR_texture_compression_astc_sliced_3d) },
|
o(KHR_texture_compression_astc_sliced_3d) },
|
||||||
{ PIPE_FORMAT_ASTC_4x4,
|
{ PIPE_FORMAT_ASTC_4x4,
|
||||||
|
|
|
@ -332,16 +332,14 @@ static const struct format_mapping format_map[] = {
|
||||||
{ PIPE_FORMAT_DXT5_RGBA, 0 }
|
{ PIPE_FORMAT_DXT5_RGBA, 0 }
|
||||||
},
|
},
|
||||||
|
|
||||||
#if 0
|
|
||||||
{
|
{
|
||||||
{ GL_COMPRESSED_RGB_FXT1_3DFX, 0 },
|
{ GL_COMPRESSED_RGB_FXT1_3DFX, 0 },
|
||||||
{ PIPE_FORMAT_RGB_FXT1, 0 }
|
{ PIPE_FORMAT_FXT1_RGB, 0 }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ GL_COMPRESSED_RGBA_FXT1_3DFX, 0 },
|
{ GL_COMPRESSED_RGBA_FXT1_3DFX, 0 },
|
||||||
{ PIPE_FORMAT_RGBA_FXT1, 0 }
|
{ PIPE_FORMAT_FXT1_RGBA, 0 }
|
||||||
},
|
},
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Depth formats */
|
/* Depth formats */
|
||||||
{
|
{
|
||||||
|
|
|
@ -495,6 +495,7 @@ util_format_is_compressed(enum pipe_format format)
|
||||||
case UTIL_FORMAT_LAYOUT_BPTC:
|
case UTIL_FORMAT_LAYOUT_BPTC:
|
||||||
case UTIL_FORMAT_LAYOUT_ASTC:
|
case UTIL_FORMAT_LAYOUT_ASTC:
|
||||||
case UTIL_FORMAT_LAYOUT_ATC:
|
case UTIL_FORMAT_LAYOUT_ATC:
|
||||||
|
case UTIL_FORMAT_LAYOUT_FXT1:
|
||||||
/* XXX add other formats in the future */
|
/* XXX add other formats in the future */
|
||||||
return TRUE;
|
return TRUE;
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue