mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
mesa: add GL_AMD_compressed_ATC_texture support
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Signed-off-by: Jonathan Marek <jonathan@marek.ca> Reviewed-by: Roland Scheidegger <sroland@vmware.com>
This commit is contained in:
parent
951d60f8cd
commit
73c1d7e8c9
12 changed files with 77 additions and 2 deletions
|
|
@ -565,6 +565,12 @@
|
|||
<enum name="HALF_FLOAT_OES" value="0x8D61"/>
|
||||
</category>
|
||||
|
||||
<category name="GL_AMD_compressed_ATC_texture" number="40">
|
||||
<enum name="ATC_RGB_AMD" value="0x8C92"/>
|
||||
<enum name="ATC_RGBA_EXPLICIT_ALPHA_AMD" value="0x8C93"/>
|
||||
<enum name="ATC_RGBA_INTERPOLATED_ALPHA_AMD" value="0x87EE"/>
|
||||
</category>
|
||||
|
||||
<!-- 41. GL_EXT_texture_filter_anisotropic -->
|
||||
|
||||
<category name="GL_EXT_texture_type_2_10_10_10_REV" number="42">
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
EXT(3DFX_texture_compression_FXT1 , TDFX_texture_compression_FXT1 , GLL, GLC, x , x , 1999)
|
||||
|
||||
EXT(AMD_compressed_ATC_texture , AMD_compressed_ATC_texture , x , x , ES1, ES2, 2008)
|
||||
EXT(AMD_conservative_depth , ARB_conservative_depth , GLL, GLC, x , x , 2009)
|
||||
EXT(AMD_depth_clamp_separate , AMD_depth_clamp_separate , GLL, GLC, x , x , 2009)
|
||||
EXT(AMD_draw_buffers_blend , ARB_draw_buffers_blend , GLL, GLC, x , x , 2009)
|
||||
|
|
|
|||
|
|
@ -126,6 +126,8 @@ def get_channel_bits(fmat, chan_name):
|
|||
elif fmat.layout == 'astc':
|
||||
bits = 16 if 'RGBA' in fmat.name else 8
|
||||
return bits if fmat.has_channel(chan_name) else 0
|
||||
elif fmat.layout == 'atc':
|
||||
return 8 if fmat.has_channel(chan_name) else 0
|
||||
else:
|
||||
assert False
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -712,11 +712,14 @@ _mesa_get_uncompressed_format(mesa_format format)
|
|||
case MESA_FORMAT_ETC1_RGB8:
|
||||
case MESA_FORMAT_ETC2_RGB8:
|
||||
case MESA_FORMAT_ETC2_SRGB8:
|
||||
case MESA_FORMAT_ATC_RGB:
|
||||
return MESA_FORMAT_BGR_UNORM8;
|
||||
case MESA_FORMAT_ETC2_RGBA8_EAC:
|
||||
case MESA_FORMAT_ETC2_SRGB8_ALPHA8_EAC:
|
||||
case MESA_FORMAT_ETC2_RGB8_PUNCHTHROUGH_ALPHA1:
|
||||
case MESA_FORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1:
|
||||
case MESA_FORMAT_ATC_RGBA_EXPLICIT:
|
||||
case MESA_FORMAT_ATC_RGBA_INTERPOLATED:
|
||||
return MESA_FORMAT_A8B8G8R8_UNORM;
|
||||
case MESA_FORMAT_ETC2_R11_EAC:
|
||||
case MESA_FORMAT_ETC2_SIGNED_R11_EAC:
|
||||
|
|
|
|||
|
|
@ -372,3 +372,8 @@ MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x5x5 , astc , 5, 5, 5, x128, , ,
|
|||
MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x5x5 , astc , 6, 5, 5, x128, , , , xyzw, srgb
|
||||
MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6x5 , astc , 6, 6, 5, x128, , , , xyzw, srgb
|
||||
MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6x6 , astc , 6, 6, 6, x128, , , , xyzw, srgb
|
||||
|
||||
# ATC compressed formats
|
||||
MESA_FORMAT_ATC_RGB , atc , 4, 4, 1, x64 , , , , xyz1, rgb
|
||||
MESA_FORMAT_ATC_RGBA_EXPLICIT , atc , 4, 4, 1, x128, , , , xyzw, rgb
|
||||
MESA_FORMAT_ATC_RGBA_INTERPOLATED , atc , 4, 4, 1, x128, , , , xyzw, rgb
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 9 and column 3.
|
|
|
@ -71,6 +71,7 @@ enum mesa_format_layout {
|
|||
MESA_FORMAT_LAYOUT_ETC2,
|
||||
MESA_FORMAT_LAYOUT_BPTC,
|
||||
MESA_FORMAT_LAYOUT_ASTC,
|
||||
MESA_FORMAT_LAYOUT_ATC,
|
||||
MESA_FORMAT_LAYOUT_OTHER,
|
||||
};
|
||||
|
||||
|
|
@ -657,6 +658,12 @@ typedef enum
|
|||
MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x5x5,
|
||||
MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6x5,
|
||||
MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6x6,
|
||||
|
||||
/* ATC compressed formats */
|
||||
MESA_FORMAT_ATC_RGB,
|
||||
MESA_FORMAT_ATC_RGBA_EXPLICIT,
|
||||
MESA_FORMAT_ATC_RGBA_INTERPOLATED,
|
||||
|
||||
MESA_FORMAT_COUNT
|
||||
} mesa_format;
|
||||
|
||||
|
|
|
|||
|
|
@ -1142,6 +1142,9 @@ _mesa_is_color_format(GLenum format)
|
|||
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
|
||||
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
|
||||
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
|
||||
case GL_ATC_RGB_AMD:
|
||||
case GL_ATC_RGBA_EXPLICIT_ALPHA_AMD:
|
||||
case GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD:
|
||||
/* generic integer formats */
|
||||
case GL_RED_INTEGER_EXT:
|
||||
case GL_GREEN_INTEGER_EXT:
|
||||
|
|
@ -1393,6 +1396,8 @@ _mesa_is_compressed_format(const struct gl_context *ctx, GLenum format)
|
|||
_mesa_has_EXT_texture_compression_bptc(ctx);
|
||||
case MESA_FORMAT_LAYOUT_ASTC:
|
||||
return _mesa_has_KHR_texture_compression_astc_ldr(ctx);
|
||||
case MESA_FORMAT_LAYOUT_ATC:
|
||||
return _mesa_has_AMD_compressed_ATC_texture(ctx);
|
||||
default:
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -142,6 +142,12 @@ typedef int GLclampx;
|
|||
#define GL_SR8_EXT 0x8FBD
|
||||
#endif
|
||||
|
||||
#ifndef GL_AMD_compressed_ATC_texture
|
||||
#define GL_ATC_RGB_AMD 0x8C92
|
||||
#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93
|
||||
#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Internal token to represent a GLSL shader program (a collection of
|
||||
* one or more shaders that get linked together). Note that GLSL
|
||||
|
|
|
|||
|
|
@ -4308,6 +4308,7 @@ struct gl_extensions
|
|||
GLboolean OES_texture_view;
|
||||
GLboolean OES_viewport_array;
|
||||
/* vendor extensions */
|
||||
GLboolean AMD_compressed_ATC_texture;
|
||||
GLboolean AMD_framebuffer_multisample_advanced;
|
||||
GLboolean AMD_depth_clamp_separate;
|
||||
GLboolean AMD_performance_monitor;
|
||||
|
|
|
|||
|
|
@ -106,6 +106,7 @@ _mesa_gl_compressed_format_base_format(GLenum format)
|
|||
case GL_PALETTE4_R5_G6_B5_OES:
|
||||
case GL_PALETTE8_RGB8_OES:
|
||||
case GL_PALETTE8_R5_G6_B5_OES:
|
||||
case GL_ATC_RGB_AMD:
|
||||
return GL_RGB;
|
||||
|
||||
case GL_COMPRESSED_RGBA:
|
||||
|
|
@ -131,6 +132,8 @@ _mesa_gl_compressed_format_base_format(GLenum format)
|
|||
case GL_PALETTE4_RGB5_A1_OES:
|
||||
case GL_PALETTE8_RGBA8_OES:
|
||||
case GL_PALETTE8_RGBA4_OES:
|
||||
case GL_ATC_RGBA_EXPLICIT_ALPHA_AMD:
|
||||
case GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD:
|
||||
return GL_RGBA;
|
||||
|
||||
case GL_COMPRESSED_ALPHA:
|
||||
|
|
@ -455,6 +458,20 @@ _mesa_get_compressed_formats(struct gl_context *ctx, GLint *formats)
|
|||
formats[n++] = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES;
|
||||
}
|
||||
|
||||
/* The GL_AMD_compressed_ATC_texture spec says:
|
||||
*
|
||||
* "New State
|
||||
*
|
||||
* The queries for NUM_COMPRESSED_TEXTURE_FORMATS and
|
||||
* COMPRESSED_TEXTURE_FORMATS include ATC_RGB_AMD,
|
||||
* ATC_RGBA_EXPLICIT_ALPHA_AMD, and ATC_RGBA_INTERPOLATED_ALPHA_AMD."
|
||||
*/
|
||||
if (_mesa_has_AMD_compressed_ATC_texture(ctx)) {
|
||||
formats[n++] = GL_ATC_RGB_AMD;
|
||||
formats[n++] = GL_ATC_RGBA_EXPLICIT_ALPHA_AMD;
|
||||
formats[n++] = GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD;
|
||||
}
|
||||
|
||||
assert(n <= ARRAY_SIZE(discard_formats));
|
||||
|
||||
return n;
|
||||
|
|
@ -643,6 +660,13 @@ _mesa_glenum_to_compressed_format(GLenum format)
|
|||
case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES:
|
||||
return MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6x6;
|
||||
|
||||
case GL_ATC_RGB_AMD:
|
||||
return MESA_FORMAT_ATC_RGB;
|
||||
case GL_ATC_RGBA_EXPLICIT_ALPHA_AMD:
|
||||
return MESA_FORMAT_ATC_RGBA_EXPLICIT;
|
||||
case GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD:
|
||||
return MESA_FORMAT_ATC_RGBA_INTERPOLATED;
|
||||
|
||||
default:
|
||||
return MESA_FORMAT_NONE;
|
||||
}
|
||||
|
|
@ -831,6 +855,14 @@ _mesa_compressed_format_to_glenum(struct gl_context *ctx,
|
|||
return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES;
|
||||
case MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6x6:
|
||||
return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES;
|
||||
|
||||
case MESA_FORMAT_ATC_RGB:
|
||||
return GL_ATC_RGB_AMD;
|
||||
case MESA_FORMAT_ATC_RGBA_EXPLICIT:
|
||||
return GL_ATC_RGBA_EXPLICIT_ALPHA_AMD;
|
||||
case MESA_FORMAT_ATC_RGBA_INTERPOLATED:
|
||||
return GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD;
|
||||
|
||||
default:
|
||||
_mesa_problem(ctx, "Unexpected mesa texture format in"
|
||||
" _mesa_compressed_format_to_glenum()");
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ oes_float_internal_format(const struct gl_context *ctx,
|
|||
/**
|
||||
* Install gl_texture_image in a gl_texture_object according to the target
|
||||
* and level parameters.
|
||||
*
|
||||
*
|
||||
* \param tObj texture object.
|
||||
* \param target texture target.
|
||||
* \param level image level.
|
||||
|
|
@ -1366,6 +1366,9 @@ compressedteximage_only_format(GLenum format)
|
|||
case GL_PALETTE8_R5_G6_B5_OES:
|
||||
case GL_PALETTE8_RGBA4_OES:
|
||||
case GL_PALETTE8_RGB5_A1_OES:
|
||||
case GL_ATC_RGB_AMD:
|
||||
case GL_ATC_RGBA_EXPLICIT_ALPHA_AMD:
|
||||
case GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -464,7 +464,11 @@ texfetch_funcs[] =
|
|||
FETCH_NULL(SRGB8_ALPHA8_ASTC_5x5x5),
|
||||
FETCH_NULL(SRGB8_ALPHA8_ASTC_6x5x5),
|
||||
FETCH_NULL(SRGB8_ALPHA8_ASTC_6x6x5),
|
||||
FETCH_NULL(SRGB8_ALPHA8_ASTC_6x6x6)
|
||||
FETCH_NULL(SRGB8_ALPHA8_ASTC_6x6x6),
|
||||
|
||||
FETCH_NULL(ATC_RGB),
|
||||
FETCH_NULL(ATC_RGBA_EXPLICIT),
|
||||
FETCH_NULL(ATC_RGBA_INTERPOLATED)
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue