Make GL_ARB_texture_compression mandatory
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:

committed by
Ian Romanick

parent
26da28c995
commit
33fa5e4bfa
@@ -180,6 +180,7 @@ driGetRendererString( char * buffer, const char * hardware_name,
|
||||
|
||||
|
||||
#define need_GL_ARB_multisample
|
||||
#define need_GL_ARB_texture_compression
|
||||
#define need_GL_ARB_transpose_matrix
|
||||
#define need_GL_ARB_window_pos
|
||||
#define need_GL_EXT_compiled_vertex_array
|
||||
@@ -199,6 +200,7 @@ driGetRendererString( char * buffer, const char * hardware_name,
|
||||
|
||||
static const struct dri_extension all_mesa_extensions[] = {
|
||||
{ "GL_ARB_multisample", GL_ARB_multisample_functions },
|
||||
{ "GL_ARB_texture_compression", GL_ARB_texture_compression_functions },
|
||||
{ "GL_ARB_transpose_matrix", GL_ARB_transpose_matrix_functions },
|
||||
{ "GL_ARB_window_pos", GL_ARB_window_pos_functions },
|
||||
{ "GL_EXT_blend_func_separate", GL_EXT_blend_func_separate_functions },
|
||||
|
@@ -64,7 +64,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#include "utils.h"
|
||||
|
||||
#define need_GL_ARB_multisample
|
||||
#define need_GL_ARB_texture_compression
|
||||
#define need_GL_ARB_vertex_buffer_object
|
||||
#include "extension_helper.h"
|
||||
|
||||
@@ -125,7 +124,6 @@ const struct dri_extension card_extensions[] =
|
||||
{
|
||||
{ "GL_ARB_multisample", GL_ARB_multisample_functions },
|
||||
{ "GL_ARB_multitexture", NULL },
|
||||
{ "GL_ARB_texture_compression", GL_ARB_texture_compression_functions },
|
||||
{ "GL_ARB_texture_env_add", NULL },
|
||||
{ "GL_ARB_texture_env_combine", NULL },
|
||||
{ "GL_ARB_texture_env_crossbar", NULL },
|
||||
|
@@ -35,7 +35,6 @@
|
||||
#define need_GL_ARB_occlusion_query
|
||||
#define need_GL_ARB_point_parameters
|
||||
#define need_GL_ARB_shader_objects
|
||||
#define need_GL_ARB_texture_compression
|
||||
#define need_GL_ARB_vertex_buffer_object
|
||||
#define need_GL_ARB_vertex_program
|
||||
#define need_GL_ARB_vertex_shader
|
||||
@@ -72,7 +71,6 @@ static const struct dri_extension card_extensions[] = {
|
||||
{ "GL_ARB_multitexture", NULL },
|
||||
{ "GL_ARB_point_parameters", GL_ARB_point_parameters_functions },
|
||||
{ "GL_ARB_texture_border_clamp", NULL },
|
||||
{ "GL_ARB_texture_compression", GL_ARB_texture_compression_functions },
|
||||
{ "GL_ARB_texture_cube_map", NULL },
|
||||
{ "GL_ARB_texture_env_add", NULL },
|
||||
{ "GL_ARB_texture_env_combine", NULL },
|
||||
|
@@ -152,6 +152,7 @@ mach64ChooseTextureFormat( GLcontext *ctx, GLint internalFormat,
|
||||
case GL_ALPHA8:
|
||||
case GL_ALPHA12:
|
||||
case GL_ALPHA16:
|
||||
case GL_COMPRESSED_ALPHA:
|
||||
case 2:
|
||||
case GL_LUMINANCE_ALPHA:
|
||||
case GL_LUMINANCE4_ALPHA4:
|
||||
@@ -160,9 +161,11 @@ mach64ChooseTextureFormat( GLcontext *ctx, GLint internalFormat,
|
||||
case GL_LUMINANCE12_ALPHA4:
|
||||
case GL_LUMINANCE12_ALPHA12:
|
||||
case GL_LUMINANCE16_ALPHA16:
|
||||
case GL_COMPRESSED_LUMINANCE_ALPHA:
|
||||
case 4:
|
||||
case GL_RGBA:
|
||||
case GL_RGBA2:
|
||||
case GL_COMPRESSED_RGBA:
|
||||
if (mmesa->mach64Screen->cpp == 4)
|
||||
return &_mesa_texformat_argb8888;
|
||||
else
|
||||
@@ -193,6 +196,7 @@ mach64ChooseTextureFormat( GLcontext *ctx, GLint internalFormat,
|
||||
case GL_RGB10:
|
||||
case GL_RGB12:
|
||||
case GL_RGB16:
|
||||
case GL_COMPRESSED_RGB:
|
||||
if (mmesa->mach64Screen->cpp == 4)
|
||||
return &_mesa_texformat_argb8888;
|
||||
else
|
||||
@@ -204,6 +208,7 @@ mach64ChooseTextureFormat( GLcontext *ctx, GLint internalFormat,
|
||||
case GL_LUMINANCE8:
|
||||
case GL_LUMINANCE12:
|
||||
case GL_LUMINANCE16:
|
||||
case GL_COMPRESSED_LUMINANCE:
|
||||
if (mmesa->mach64Screen->cpp == 4)
|
||||
return &_mesa_texformat_argb8888; /* inefficient but accurate */
|
||||
else
|
||||
@@ -214,6 +219,7 @@ mach64ChooseTextureFormat( GLcontext *ctx, GLint internalFormat,
|
||||
case GL_INTENSITY8:
|
||||
case GL_INTENSITY12:
|
||||
case GL_INTENSITY16:
|
||||
case GL_COMPRESSED_INTENSITY:
|
||||
if (mmesa->mach64Screen->cpp == 4)
|
||||
return &_mesa_texformat_argb8888; /* inefficient but accurate */
|
||||
else
|
||||
|
@@ -70,7 +70,6 @@
|
||||
#include "GL/internal/dri_interface.h"
|
||||
|
||||
#define need_GL_ARB_multisample
|
||||
#define need_GL_ARB_texture_compression
|
||||
#define need_GL_ARB_vertex_buffer_object
|
||||
#define need_GL_ARB_vertex_program
|
||||
#define need_GL_EXT_fog_coord
|
||||
@@ -386,7 +385,6 @@ static const struct dri_extension g400_extensions[] =
|
||||
static const struct dri_extension card_extensions[] =
|
||||
{
|
||||
{ "GL_ARB_multisample", GL_ARB_multisample_functions },
|
||||
{ "GL_ARB_texture_compression", GL_ARB_texture_compression_functions },
|
||||
{ "GL_ARB_texture_rectangle", NULL },
|
||||
{ "GL_ARB_vertex_buffer_object", GL_ARB_vertex_buffer_object_functions },
|
||||
{ "GL_EXT_blend_logic_op", NULL },
|
||||
|
@@ -66,7 +66,6 @@ int R128_DEBUG = 0;
|
||||
#endif
|
||||
|
||||
#define need_GL_ARB_multisample
|
||||
#define need_GL_ARB_texture_compression
|
||||
#define need_GL_ARB_vertex_buffer_object
|
||||
#define need_GL_EXT_blend_minmax
|
||||
#define need_GL_EXT_fog_coord
|
||||
@@ -77,7 +76,6 @@ const struct dri_extension card_extensions[] =
|
||||
{
|
||||
{ "GL_ARB_multisample", GL_ARB_multisample_functions },
|
||||
{ "GL_ARB_multitexture", NULL },
|
||||
{ "GL_ARB_texture_compression", GL_ARB_texture_compression_functions },
|
||||
{ "GL_ARB_texture_env_add", NULL },
|
||||
{ "GL_ARB_texture_mirrored_repeat", NULL },
|
||||
{ "GL_ARB_vertex_buffer_object", GL_ARB_vertex_buffer_object_functions },
|
||||
|
@@ -63,7 +63,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#include "r200_vertprog.h"
|
||||
|
||||
#define need_GL_ARB_multisample
|
||||
#define need_GL_ARB_texture_compression
|
||||
#define need_GL_ARB_vertex_buffer_object
|
||||
#define need_GL_ARB_vertex_program
|
||||
#define need_GL_ATI_fragment_shader
|
||||
@@ -123,7 +122,6 @@ const struct dri_extension card_extensions[] =
|
||||
{ "GL_ARB_multisample", GL_ARB_multisample_functions },
|
||||
{ "GL_ARB_multitexture", NULL },
|
||||
{ "GL_ARB_texture_border_clamp", NULL },
|
||||
{ "GL_ARB_texture_compression", GL_ARB_texture_compression_functions },
|
||||
{ "GL_ARB_texture_env_add", NULL },
|
||||
{ "GL_ARB_texture_env_combine", NULL },
|
||||
{ "GL_ARB_texture_env_dot3", NULL },
|
||||
|
@@ -80,7 +80,6 @@ int hw_tcl_on = 1;
|
||||
#define need_GL_VERSION_2_0
|
||||
#define need_GL_ARB_multisample
|
||||
#define need_GL_ARB_point_parameters
|
||||
#define need_GL_ARB_texture_compression
|
||||
#define need_GL_ARB_vertex_buffer_object
|
||||
#define need_GL_ARB_vertex_program
|
||||
#define need_GL_EXT_blend_equation_separate
|
||||
@@ -105,7 +104,6 @@ const struct dri_extension card_extensions[] = {
|
||||
{"GL_ARB_shadow", NULL},
|
||||
{"GL_ARB_shadow_ambient", NULL},
|
||||
{"GL_ARB_texture_border_clamp", NULL},
|
||||
{"GL_ARB_texture_compression", GL_ARB_texture_compression_functions},
|
||||
{"GL_ARB_texture_cube_map", NULL},
|
||||
{"GL_ARB_texture_env_add", NULL},
|
||||
{"GL_ARB_texture_env_combine", NULL},
|
||||
|
@@ -63,7 +63,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#include "radeon_maos.h"
|
||||
|
||||
#define need_GL_ARB_multisample
|
||||
#define need_GL_ARB_texture_compression
|
||||
#define need_GL_ARB_vertex_buffer_object
|
||||
#define need_GL_EXT_blend_minmax
|
||||
#define need_GL_EXT_fog_coord
|
||||
@@ -117,7 +116,6 @@ const struct dri_extension card_extensions[] =
|
||||
{ "GL_ARB_multisample", GL_ARB_multisample_functions },
|
||||
{ "GL_ARB_multitexture", NULL },
|
||||
{ "GL_ARB_texture_border_clamp", NULL },
|
||||
{ "GL_ARB_texture_compression", GL_ARB_texture_compression_functions },
|
||||
{ "GL_ARB_texture_env_add", NULL },
|
||||
{ "GL_ARB_texture_env_combine", NULL },
|
||||
{ "GL_ARB_texture_env_crossbar", NULL },
|
||||
|
@@ -60,7 +60,6 @@
|
||||
#include "texmem.h"
|
||||
|
||||
#define need_GL_ARB_multisample
|
||||
#define need_GL_ARB_texture_compression
|
||||
#define need_GL_ARB_vertex_buffer_object
|
||||
#define need_GL_EXT_secondary_color
|
||||
#include "extension_helper.h"
|
||||
@@ -135,7 +134,6 @@ static const struct dri_extension card_extensions[] =
|
||||
{
|
||||
{ "GL_ARB_multisample", GL_ARB_multisample_functions },
|
||||
{ "GL_ARB_multitexture", NULL },
|
||||
{ "GL_ARB_texture_compression", GL_ARB_texture_compression_functions },
|
||||
{ "GL_ARB_vertex_buffer_object", GL_ARB_vertex_buffer_object_functions },
|
||||
{ "GL_EXT_stencil_wrap", NULL },
|
||||
{ "GL_EXT_texture_lod_bias", NULL },
|
||||
|
@@ -58,7 +58,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#include "tnl/t_pipeline.h"
|
||||
|
||||
#define need_GL_ARB_multisample
|
||||
#define need_GL_ARB_texture_compression
|
||||
#define need_GL_ARB_vertex_buffer_object
|
||||
#define need_GL_EXT_fog_coord
|
||||
#define need_GL_EXT_secondary_color
|
||||
@@ -77,7 +76,6 @@ struct dri_extension card_extensions[] =
|
||||
{ "GL_ARB_multisample", GL_ARB_multisample_functions },
|
||||
{ "GL_ARB_multitexture", NULL },
|
||||
{ "GL_ARB_texture_border_clamp", NULL },
|
||||
{ "GL_ARB_texture_compression", GL_ARB_texture_compression_functions },
|
||||
{ "GL_ARB_texture_mirrored_repeat", NULL },
|
||||
{ "GL_ARB_vertex_buffer_object", GL_ARB_vertex_buffer_object_functions },
|
||||
/*{ "GL_EXT_fog_coord", GL_EXT_fog_coord_functions },*/
|
||||
@@ -93,7 +91,6 @@ struct dri_extension card_extensions_6326[] =
|
||||
{
|
||||
{ "GL_ARB_multisample", GL_ARB_multisample_functions },
|
||||
/*{ "GL_ARB_texture_border_clamp", NULL },*/
|
||||
{ "GL_ARB_texture_compression", GL_ARB_texture_compression_functions },
|
||||
/*{ "GL_ARB_texture_mirrored_repeat", NULL },*/
|
||||
/*{ "GL_MESA_ycbcr_texture", NULL },*/
|
||||
{ NULL, NULL }
|
||||
|
@@ -61,7 +61,6 @@
|
||||
#define need_GL_ARB_multisample
|
||||
/* #define need_GL_ARB_point_parameters */
|
||||
#define need_GL_ARB_occlusion_query
|
||||
#define need_GL_ARB_texture_compression
|
||||
#define need_GL_ARB_vertex_buffer_object
|
||||
/* #define need_GL_ARB_vertex_program */
|
||||
#define need_GL_EXT_blend_equation_separate
|
||||
@@ -122,7 +121,6 @@ const struct dri_extension card_extensions[] =
|
||||
*/
|
||||
const struct dri_extension napalm_extensions[] =
|
||||
{
|
||||
{ "GL_ARB_texture_compression", GL_ARB_texture_compression_functions },
|
||||
{ "GL_ARB_texture_env_combine", NULL },
|
||||
{ "GL_EXT_blend_equation_separate", GL_EXT_blend_equation_separate_functions },
|
||||
{ "GL_EXT_blend_subtract", GL_EXT_blend_minmax_functions },
|
||||
|
@@ -1862,7 +1862,6 @@ fxDDInitExtensions(GLcontext * ctx)
|
||||
}
|
||||
|
||||
if (fxMesa->type >= GR_SSTTYPE_Voodoo4) {
|
||||
_mesa_enable_extension(ctx, "GL_ARB_texture_compression");
|
||||
_mesa_enable_extension(ctx, "GL_3DFX_texture_compression_FXT1");
|
||||
_mesa_enable_extension(ctx, "GL_EXT_texture_compression_s3tc");
|
||||
_mesa_enable_extension(ctx, "GL_S3_s3tc");
|
||||
@@ -1894,7 +1893,6 @@ fxDDInitExtensions(GLcontext * ctx)
|
||||
* fxSetupSingleTMU_NoLock/fxSetupDoubleTMU_NoLock:
|
||||
* grTexDownloadTable(GR_TEXTABLE_NCC0, &(ti->palette));
|
||||
*/
|
||||
/*_mesa_enable_extension(ctx, "GL_ARB_texture_compression");*/
|
||||
_mesa_enable_extension(ctx, "GL_SGIS_generate_mipmap");
|
||||
}
|
||||
|
||||
|
@@ -1006,9 +1006,8 @@ _mesa_PopAttrib(void)
|
||||
_mesa_Hint(GL_FOG_HINT, hint->Fog);
|
||||
_mesa_Hint(GL_CLIP_VOLUME_CLIPPING_HINT_EXT,
|
||||
hint->ClipVolumeClipping);
|
||||
if (ctx->Extensions.ARB_texture_compression)
|
||||
_mesa_Hint(GL_TEXTURE_COMPRESSION_HINT_ARB,
|
||||
hint->TextureCompression);
|
||||
_mesa_Hint(GL_TEXTURE_COMPRESSION_HINT_ARB,
|
||||
hint->TextureCompression);
|
||||
}
|
||||
break;
|
||||
case GL_LIGHTING_BIT:
|
||||
|
@@ -64,7 +64,7 @@ static const struct {
|
||||
{ OFF, "GL_ARB_shadow", F(ARB_shadow) },
|
||||
{ OFF, "GL_ARB_shadow_ambient", F(ARB_shadow_ambient) },
|
||||
{ OFF, "GL_ARB_texture_border_clamp", F(ARB_texture_border_clamp) },
|
||||
{ OFF, "GL_ARB_texture_compression", F(ARB_texture_compression) },
|
||||
{ ON, "GL_ARB_texture_compression", F(ARB_texture_compression) },
|
||||
{ OFF, "GL_ARB_texture_cube_map", F(ARB_texture_cube_map) },
|
||||
{ OFF, "GL_ARB_texture_env_add", F(EXT_texture_env_add) },
|
||||
{ OFF, "GL_ARB_texture_env_combine", F(ARB_texture_env_combine) },
|
||||
@@ -345,7 +345,7 @@ _mesa_enable_1_3_extensions(GLcontext *ctx)
|
||||
ctx->Extensions.ARB_multisample = GL_TRUE;
|
||||
ctx->Extensions.ARB_multitexture = GL_TRUE;
|
||||
ctx->Extensions.ARB_texture_border_clamp = GL_TRUE;
|
||||
ctx->Extensions.ARB_texture_compression = GL_TRUE;
|
||||
/*ctx->Extensions.ARB_texture_compression = GL_TRUE;*/
|
||||
ctx->Extensions.ARB_texture_cube_map = GL_TRUE;
|
||||
ctx->Extensions.ARB_texture_env_combine = GL_TRUE;
|
||||
ctx->Extensions.ARB_texture_env_dot3 = GL_TRUE;
|
||||
|
@@ -1078,15 +1078,12 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
|
||||
params[0] = INT_TO_BOOLEAN((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
|
||||
break;
|
||||
case GL_TEXTURE_COMPRESSION_HINT_ARB:
|
||||
CHECK_EXT1(ARB_texture_compression, "GetBooleanv");
|
||||
params[0] = INT_TO_BOOLEAN(ctx->Hint.TextureCompression);
|
||||
break;
|
||||
case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
|
||||
CHECK_EXT1(ARB_texture_compression, "GetBooleanv");
|
||||
params[0] = INT_TO_BOOLEAN(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
|
||||
break;
|
||||
case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
|
||||
CHECK_EXT1(ARB_texture_compression, "GetBooleanv");
|
||||
{
|
||||
GLint formats[100];
|
||||
GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
|
||||
@@ -2930,15 +2927,12 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
|
||||
params[0] = (GLfloat)((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
|
||||
break;
|
||||
case GL_TEXTURE_COMPRESSION_HINT_ARB:
|
||||
CHECK_EXT1(ARB_texture_compression, "GetFloatv");
|
||||
params[0] = (GLfloat)(ctx->Hint.TextureCompression);
|
||||
break;
|
||||
case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
|
||||
CHECK_EXT1(ARB_texture_compression, "GetFloatv");
|
||||
params[0] = (GLfloat)(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
|
||||
break;
|
||||
case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
|
||||
CHECK_EXT1(ARB_texture_compression, "GetFloatv");
|
||||
{
|
||||
GLint formats[100];
|
||||
GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
|
||||
@@ -4782,15 +4776,12 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
|
||||
params[0] = (1 << (ctx->Const.MaxCubeTextureLevels - 1));
|
||||
break;
|
||||
case GL_TEXTURE_COMPRESSION_HINT_ARB:
|
||||
CHECK_EXT1(ARB_texture_compression, "GetIntegerv");
|
||||
params[0] = ctx->Hint.TextureCompression;
|
||||
break;
|
||||
case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
|
||||
CHECK_EXT1(ARB_texture_compression, "GetIntegerv");
|
||||
params[0] = _mesa_get_compressed_formats(ctx, NULL, GL_FALSE);
|
||||
break;
|
||||
case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
|
||||
CHECK_EXT1(ARB_texture_compression, "GetIntegerv");
|
||||
{
|
||||
GLint formats[100];
|
||||
GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
|
||||
|
@@ -523,10 +523,10 @@ StateVars = [
|
||||
|
||||
# GL_ARB_texture_compression */
|
||||
( "GL_TEXTURE_COMPRESSION_HINT_ARB", GLint,
|
||||
["ctx->Hint.TextureCompression"], "", ["ARB_texture_compression"] ),
|
||||
["ctx->Hint.TextureCompression"], "", None ),
|
||||
( "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB", GLint,
|
||||
["_mesa_get_compressed_formats(ctx, NULL, GL_FALSE)"],
|
||||
"", ["ARB_texture_compression"] ),
|
||||
"", None ),
|
||||
( "GL_COMPRESSED_TEXTURE_FORMATS_ARB", GLenum,
|
||||
[],
|
||||
"""GLint formats[100];
|
||||
@@ -534,7 +534,7 @@ StateVars = [
|
||||
ASSERT(n <= 100);
|
||||
for (i = 0; i < n; i++)
|
||||
params[i] = CONVERSION(formats[i]);""",
|
||||
["ARB_texture_compression"] ),
|
||||
None ),
|
||||
|
||||
# GL_EXT_compiled_vertex_array
|
||||
( "GL_ARRAY_ELEMENT_LOCK_FIRST_EXT", GLint, ["ctx->Array.LockFirst"],
|
||||
|
@@ -89,10 +89,6 @@ _mesa_Hint( GLenum target, GLenum mode )
|
||||
|
||||
/* GL_ARB_texture_compression */
|
||||
case GL_TEXTURE_COMPRESSION_HINT_ARB:
|
||||
if (!ctx->Extensions.ARB_texture_compression) {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glHint(target)");
|
||||
return;
|
||||
}
|
||||
if (ctx->Hint.TextureCompression == mode)
|
||||
return;
|
||||
FLUSH_VERTICES(ctx, _NEW_HINT);
|
||||
|
@@ -56,60 +56,58 @@ GLuint
|
||||
_mesa_get_compressed_formats(GLcontext *ctx, GLint *formats, GLboolean all)
|
||||
{
|
||||
GLuint n = 0;
|
||||
if (ctx->Extensions.ARB_texture_compression) {
|
||||
if (ctx->Extensions.TDFX_texture_compression_FXT1) {
|
||||
if (formats) {
|
||||
formats[n++] = GL_COMPRESSED_RGB_FXT1_3DFX;
|
||||
formats[n++] = GL_COMPRESSED_RGBA_FXT1_3DFX;
|
||||
}
|
||||
else {
|
||||
n += 2;
|
||||
}
|
||||
if (ctx->Extensions.TDFX_texture_compression_FXT1) {
|
||||
if (formats) {
|
||||
formats[n++] = GL_COMPRESSED_RGB_FXT1_3DFX;
|
||||
formats[n++] = GL_COMPRESSED_RGBA_FXT1_3DFX;
|
||||
}
|
||||
if (ctx->Extensions.EXT_texture_compression_s3tc) {
|
||||
if (formats) {
|
||||
formats[n++] = GL_COMPRESSED_RGB_S3TC_DXT1_EXT;
|
||||
/* This format has some restrictions/limitations and so should
|
||||
* not be returned via the GL_COMPRESSED_TEXTURE_FORMATS query.
|
||||
* Specifically, all transparent pixels become black. NVIDIA
|
||||
* omits this format too.
|
||||
*/
|
||||
if (all)
|
||||
formats[n++] = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
|
||||
formats[n++] = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
||||
formats[n++] = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
||||
}
|
||||
else {
|
||||
n += 3;
|
||||
if (all)
|
||||
n += 1;
|
||||
}
|
||||
else {
|
||||
n += 2;
|
||||
}
|
||||
if (ctx->Extensions.S3_s3tc) {
|
||||
if (formats) {
|
||||
formats[n++] = GL_RGB_S3TC;
|
||||
formats[n++] = GL_RGB4_S3TC;
|
||||
formats[n++] = GL_RGBA_S3TC;
|
||||
formats[n++] = GL_RGBA4_S3TC;
|
||||
}
|
||||
else {
|
||||
n += 4;
|
||||
}
|
||||
}
|
||||
#if FEATURE_EXT_texture_sRGB
|
||||
if (ctx->Extensions.EXT_texture_sRGB) {
|
||||
if (formats) {
|
||||
formats[n++] = GL_COMPRESSED_SRGB_S3TC_DXT1_EXT;
|
||||
formats[n++] = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;
|
||||
formats[n++] = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;
|
||||
formats[n++] = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;
|
||||
}
|
||||
else {
|
||||
n += 4;
|
||||
}
|
||||
}
|
||||
#endif /* FEATURE_EXT_texture_sRGB */
|
||||
}
|
||||
if (ctx->Extensions.EXT_texture_compression_s3tc) {
|
||||
if (formats) {
|
||||
formats[n++] = GL_COMPRESSED_RGB_S3TC_DXT1_EXT;
|
||||
/* This format has some restrictions/limitations and so should
|
||||
* not be returned via the GL_COMPRESSED_TEXTURE_FORMATS query.
|
||||
* Specifically, all transparent pixels become black. NVIDIA
|
||||
* omits this format too.
|
||||
*/
|
||||
if (all)
|
||||
formats[n++] = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
|
||||
formats[n++] = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
||||
formats[n++] = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
||||
}
|
||||
else {
|
||||
n += 3;
|
||||
if (all)
|
||||
n += 1;
|
||||
}
|
||||
}
|
||||
if (ctx->Extensions.S3_s3tc) {
|
||||
if (formats) {
|
||||
formats[n++] = GL_RGB_S3TC;
|
||||
formats[n++] = GL_RGB4_S3TC;
|
||||
formats[n++] = GL_RGBA_S3TC;
|
||||
formats[n++] = GL_RGBA4_S3TC;
|
||||
}
|
||||
else {
|
||||
n += 4;
|
||||
}
|
||||
}
|
||||
#if FEATURE_EXT_texture_sRGB
|
||||
if (ctx->Extensions.EXT_texture_sRGB) {
|
||||
if (formats) {
|
||||
formats[n++] = GL_COMPRESSED_SRGB_S3TC_DXT1_EXT;
|
||||
formats[n++] = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;
|
||||
formats[n++] = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;
|
||||
formats[n++] = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;
|
||||
}
|
||||
else {
|
||||
n += 4;
|
||||
}
|
||||
}
|
||||
#endif /* FEATURE_EXT_texture_sRGB */
|
||||
return n;
|
||||
}
|
||||
|
||||
|
@@ -1481,41 +1481,39 @@ _mesa_choose_tex_format( GLcontext *ctx, GLint internalFormat,
|
||||
}
|
||||
}
|
||||
|
||||
if (ctx->Extensions.ARB_texture_compression) {
|
||||
switch (internalFormat) {
|
||||
case GL_COMPRESSED_ALPHA_ARB:
|
||||
return &_mesa_texformat_alpha;
|
||||
case GL_COMPRESSED_LUMINANCE_ARB:
|
||||
return &_mesa_texformat_luminance;
|
||||
case GL_COMPRESSED_LUMINANCE_ALPHA_ARB:
|
||||
return &_mesa_texformat_luminance_alpha;
|
||||
case GL_COMPRESSED_INTENSITY_ARB:
|
||||
return &_mesa_texformat_intensity;
|
||||
case GL_COMPRESSED_RGB_ARB:
|
||||
switch (internalFormat) {
|
||||
case GL_COMPRESSED_ALPHA_ARB:
|
||||
return &_mesa_texformat_alpha;
|
||||
case GL_COMPRESSED_LUMINANCE_ARB:
|
||||
return &_mesa_texformat_luminance;
|
||||
case GL_COMPRESSED_LUMINANCE_ALPHA_ARB:
|
||||
return &_mesa_texformat_luminance_alpha;
|
||||
case GL_COMPRESSED_INTENSITY_ARB:
|
||||
return &_mesa_texformat_intensity;
|
||||
case GL_COMPRESSED_RGB_ARB:
|
||||
#if FEATURE_texture_fxt1
|
||||
if (ctx->Extensions.TDFX_texture_compression_FXT1)
|
||||
return &_mesa_texformat_rgb_fxt1;
|
||||
if (ctx->Extensions.TDFX_texture_compression_FXT1)
|
||||
return &_mesa_texformat_rgb_fxt1;
|
||||
#endif
|
||||
#if FEATURE_texture_s3tc
|
||||
if (ctx->Extensions.EXT_texture_compression_s3tc ||
|
||||
ctx->Extensions.S3_s3tc)
|
||||
return &_mesa_texformat_rgb_dxt1;
|
||||
if (ctx->Extensions.EXT_texture_compression_s3tc ||
|
||||
ctx->Extensions.S3_s3tc)
|
||||
return &_mesa_texformat_rgb_dxt1;
|
||||
#endif
|
||||
return &_mesa_texformat_rgb;
|
||||
case GL_COMPRESSED_RGBA_ARB:
|
||||
return &_mesa_texformat_rgb;
|
||||
case GL_COMPRESSED_RGBA_ARB:
|
||||
#if FEATURE_texture_fxt1
|
||||
if (ctx->Extensions.TDFX_texture_compression_FXT1)
|
||||
return &_mesa_texformat_rgba_fxt1;
|
||||
if (ctx->Extensions.TDFX_texture_compression_FXT1)
|
||||
return &_mesa_texformat_rgba_fxt1;
|
||||
#endif
|
||||
#if FEATURE_texture_s3tc
|
||||
if (ctx->Extensions.EXT_texture_compression_s3tc ||
|
||||
ctx->Extensions.S3_s3tc)
|
||||
return &_mesa_texformat_rgba_dxt3; /* Not rgba_dxt1, see spec */
|
||||
if (ctx->Extensions.EXT_texture_compression_s3tc ||
|
||||
ctx->Extensions.S3_s3tc)
|
||||
return &_mesa_texformat_rgba_dxt3; /* Not rgba_dxt1, see spec */
|
||||
#endif
|
||||
return &_mesa_texformat_rgba;
|
||||
default:
|
||||
; /* fallthrough */
|
||||
}
|
||||
return &_mesa_texformat_rgba;
|
||||
default:
|
||||
; /* fallthrough */
|
||||
}
|
||||
|
||||
if (ctx->Extensions.MESA_ycbcr_texture) {
|
||||
|
@@ -253,23 +253,21 @@ _mesa_base_tex_format( GLcontext *ctx, GLint internalFormat )
|
||||
}
|
||||
}
|
||||
|
||||
if (ctx->Extensions.ARB_texture_compression) {
|
||||
switch (internalFormat) {
|
||||
case GL_COMPRESSED_ALPHA:
|
||||
return GL_ALPHA;
|
||||
case GL_COMPRESSED_LUMINANCE:
|
||||
return GL_LUMINANCE;
|
||||
case GL_COMPRESSED_LUMINANCE_ALPHA:
|
||||
return GL_LUMINANCE_ALPHA;
|
||||
case GL_COMPRESSED_INTENSITY:
|
||||
return GL_INTENSITY;
|
||||
case GL_COMPRESSED_RGB:
|
||||
return GL_RGB;
|
||||
case GL_COMPRESSED_RGBA:
|
||||
return GL_RGBA;
|
||||
default:
|
||||
; /* fallthrough */
|
||||
}
|
||||
switch (internalFormat) {
|
||||
case GL_COMPRESSED_ALPHA:
|
||||
return GL_ALPHA;
|
||||
case GL_COMPRESSED_LUMINANCE:
|
||||
return GL_LUMINANCE;
|
||||
case GL_COMPRESSED_LUMINANCE_ALPHA:
|
||||
return GL_LUMINANCE_ALPHA;
|
||||
case GL_COMPRESSED_INTENSITY:
|
||||
return GL_INTENSITY;
|
||||
case GL_COMPRESSED_RGB:
|
||||
return GL_RGB;
|
||||
case GL_COMPRESSED_RGBA:
|
||||
return GL_RGBA;
|
||||
default:
|
||||
; /* fallthrough */
|
||||
}
|
||||
|
||||
if (ctx->Extensions.TDFX_texture_compression_FXT1) {
|
||||
|
@@ -849,33 +849,21 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
|
||||
|
||||
/* GL_ARB_texture_compression */
|
||||
case GL_TEXTURE_COMPRESSED_IMAGE_SIZE:
|
||||
if (ctx->Extensions.ARB_texture_compression) {
|
||||
if (img->IsCompressed && !isProxy) {
|
||||
/* Don't use ctx->Driver.CompressedTextureSize() since that
|
||||
* may returned a padded hardware size.
|
||||
*/
|
||||
*params = _mesa_compressed_texture_size(ctx, img->Width,
|
||||
img->Height, img->Depth,
|
||||
img->TexFormat->MesaFormat);
|
||||
}
|
||||
else {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glGetTexLevelParameter[if]v(pname)");
|
||||
}
|
||||
}
|
||||
else {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM,
|
||||
"glGetTexLevelParameter[if]v(pname)");
|
||||
}
|
||||
if (img->IsCompressed && !isProxy) {
|
||||
/* Don't use ctx->Driver.CompressedTextureSize() since that
|
||||
* may returned a padded hardware size.
|
||||
*/
|
||||
*params = _mesa_compressed_texture_size(ctx, img->Width,
|
||||
img->Height, img->Depth,
|
||||
img->TexFormat->MesaFormat);
|
||||
}
|
||||
else {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glGetTexLevelParameter[if]v(pname)");
|
||||
}
|
||||
break;
|
||||
case GL_TEXTURE_COMPRESSED:
|
||||
if (ctx->Extensions.ARB_texture_compression) {
|
||||
*params = (GLint) img->IsCompressed;
|
||||
}
|
||||
else {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM,
|
||||
"glGetTexLevelParameter[if]v(pname)");
|
||||
}
|
||||
*params = (GLint) img->IsCompressed;
|
||||
break;
|
||||
|
||||
/* GL_ARB_texture_float */
|
||||
|
Reference in New Issue
Block a user