intel: Merge our choosetexformat fallbacks into core.
We now share the type/format -> MESA_FORMAT_* mappings with software mesa, and the core supports most of the fallbacks hardware drivers will want.
This commit is contained in:
@@ -683,6 +683,64 @@ intelInitContext(struct intel_context *intel,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memset(&ctx->TextureFormatSupported, 0,
|
||||||
|
sizeof(ctx->TextureFormatSupported));
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_ARGB8888] = GL_TRUE;
|
||||||
|
if (intel->has_xrgb_textures)
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_XRGB8888] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_ARGB4444] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_ARGB1555] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_RGB565] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_L8] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_A8] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_I8] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_AL88] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_AL1616] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_S8_Z24] = GL_TRUE;
|
||||||
|
/*
|
||||||
|
* This was disabled in initial FBO enabling to avoid combinations
|
||||||
|
* of depth+stencil that wouldn't work together. We since decided
|
||||||
|
* that it was OK, since it's up to the app to come up with the
|
||||||
|
* combo that actually works, so this can probably be re-enabled.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_Z16] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_Z24] = GL_TRUE;
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* ctx->Extensions.MESA_ycbcr_texture */
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_YCBCR] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_YCBCR_REV] = GL_TRUE;
|
||||||
|
|
||||||
|
/* GL_3DFX_texture_compression_FXT1 */
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_RGB_FXT1] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_RGBA_FXT1] = GL_TRUE;
|
||||||
|
|
||||||
|
/* GL_EXT_texture_compression_s3tc */
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_RGB_DXT1] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_RGBA_DXT1] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_RGBA_DXT3] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_RGBA_DXT5] = GL_TRUE;
|
||||||
|
|
||||||
|
#ifndef I915
|
||||||
|
/* GL_ARB_texture_rg */
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_R8] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_R16] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_RG88] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_RG1616] = GL_TRUE;
|
||||||
|
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_DUDV8] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_RGBA8888_REV] = GL_TRUE;
|
||||||
|
|
||||||
|
/* GL_EXT_texture_sRGB */
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_SARGB8] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_SRGB_DXT1] = GL_TRUE;
|
||||||
|
if (intel->has_luminance_srgb) {
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_SL8] = GL_TRUE;
|
||||||
|
ctx->TextureFormatSupported[MESA_FORMAT_SLA8] = GL_TRUE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
driParseConfigFiles(&intel->optionCache, &intelScreen->optionCache,
|
driParseConfigFiles(&intel->optionCache, &intelScreen->optionCache,
|
||||||
sPriv->myNum, (intel->gen >= 4) ? "i965" : "i915");
|
sPriv->myNum, (intel->gen >= 4) ? "i965" : "i915");
|
||||||
if (intelScreen->deviceID == PCI_CHIP_I865_G)
|
if (intelScreen->deviceID == PCI_CHIP_I865_G)
|
||||||
|
@@ -115,7 +115,7 @@ intel_alloc_renderbuffer_storage(struct gl_context * ctx, struct gl_renderbuffer
|
|||||||
* except they're less useful because you can't texture with
|
* except they're less useful because you can't texture with
|
||||||
* them.
|
* them.
|
||||||
*/
|
*/
|
||||||
rb->Format = intelChooseTextureFormat(ctx, internalFormat,
|
rb->Format = intel->ctx.Driver.ChooseTextureFormat(ctx, internalFormat,
|
||||||
GL_NONE, GL_NONE);
|
GL_NONE, GL_NONE);
|
||||||
break;
|
break;
|
||||||
case GL_STENCIL_INDEX:
|
case GL_STENCIL_INDEX:
|
||||||
|
@@ -113,7 +113,6 @@ intelGenerateMipmap(struct gl_context *ctx, GLenum target,
|
|||||||
void
|
void
|
||||||
intelInitTextureFuncs(struct dd_function_table *functions)
|
intelInitTextureFuncs(struct dd_function_table *functions)
|
||||||
{
|
{
|
||||||
functions->ChooseTextureFormat = intelChooseTextureFormat;
|
|
||||||
functions->GenerateMipmap = intelGenerateMipmap;
|
functions->GenerateMipmap = intelGenerateMipmap;
|
||||||
|
|
||||||
functions->NewTextureObject = intelNewTextureObject;
|
functions->NewTextureObject = intelNewTextureObject;
|
||||||
|
@@ -40,8 +40,6 @@ void intelInitTextureSubImageFuncs(struct dd_function_table *functions);
|
|||||||
|
|
||||||
void intelInitTextureCopyImageFuncs(struct dd_function_table *functions);
|
void intelInitTextureCopyImageFuncs(struct dd_function_table *functions);
|
||||||
|
|
||||||
gl_format intelChooseTextureFormat(struct gl_context *ctx, GLint internalFormat,
|
|
||||||
GLenum format, GLenum type);
|
|
||||||
GLenum intel_mesa_format_to_rb_datatype(gl_format format);
|
GLenum intel_mesa_format_to_rb_datatype(gl_format format);
|
||||||
|
|
||||||
void intelSetTexBuffer(__DRIcontext *pDRICtx,
|
void intelSetTexBuffer(__DRIcontext *pDRICtx,
|
||||||
|
@@ -35,230 +35,6 @@ intel_mesa_format_to_rb_datatype(gl_format format)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Choose hardware texture format given the user's glTexImage parameters.
|
|
||||||
*
|
|
||||||
* It works out that this function is fine for all the supported
|
|
||||||
* hardware. However, there is still a need to map the formats onto
|
|
||||||
* hardware descriptors.
|
|
||||||
*
|
|
||||||
* Note that the i915 can actually support many more formats than
|
|
||||||
* these if we take the step of simply swizzling the colors
|
|
||||||
* immediately after sampling...
|
|
||||||
*/
|
|
||||||
gl_format
|
|
||||||
intelChooseTextureFormat(struct gl_context * ctx, GLint internalFormat,
|
|
||||||
GLenum format, GLenum type)
|
|
||||||
{
|
|
||||||
struct intel_context *intel = intel_context(ctx);
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
printf("%s intFmt=0x%x format=0x%x type=0x%x\n",
|
|
||||||
__FUNCTION__, internalFormat, format, type);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
switch (internalFormat) {
|
|
||||||
case 4:
|
|
||||||
case GL_RGBA:
|
|
||||||
case GL_COMPRESSED_RGBA:
|
|
||||||
if (type == GL_UNSIGNED_SHORT_4_4_4_4_REV)
|
|
||||||
return MESA_FORMAT_ARGB4444;
|
|
||||||
else if (type == GL_UNSIGNED_SHORT_1_5_5_5_REV)
|
|
||||||
return MESA_FORMAT_ARGB1555;
|
|
||||||
else
|
|
||||||
return MESA_FORMAT_ARGB8888;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
case GL_RGB:
|
|
||||||
case GL_COMPRESSED_RGB:
|
|
||||||
if (type == GL_UNSIGNED_SHORT_5_6_5)
|
|
||||||
return MESA_FORMAT_RGB565;
|
|
||||||
else if (intel->has_xrgb_textures)
|
|
||||||
return MESA_FORMAT_XRGB8888;
|
|
||||||
else
|
|
||||||
return MESA_FORMAT_ARGB8888;
|
|
||||||
|
|
||||||
case GL_RGBA8:
|
|
||||||
case GL_RGB10_A2:
|
|
||||||
case GL_RGBA12:
|
|
||||||
case GL_RGBA16:
|
|
||||||
return MESA_FORMAT_ARGB8888;
|
|
||||||
|
|
||||||
case GL_RGBA4:
|
|
||||||
case GL_RGBA2:
|
|
||||||
return MESA_FORMAT_ARGB4444;
|
|
||||||
|
|
||||||
case GL_RGB5_A1:
|
|
||||||
return MESA_FORMAT_ARGB1555;
|
|
||||||
|
|
||||||
case GL_RGB8:
|
|
||||||
case GL_RGB10:
|
|
||||||
case GL_RGB12:
|
|
||||||
case GL_RGB16:
|
|
||||||
if (intel->has_xrgb_textures)
|
|
||||||
return MESA_FORMAT_XRGB8888;
|
|
||||||
else
|
|
||||||
return MESA_FORMAT_ARGB8888;
|
|
||||||
|
|
||||||
case GL_RGB5:
|
|
||||||
case GL_RGB4:
|
|
||||||
case GL_R3_G3_B2:
|
|
||||||
return MESA_FORMAT_RGB565;
|
|
||||||
|
|
||||||
case GL_ALPHA:
|
|
||||||
case GL_ALPHA4:
|
|
||||||
case GL_ALPHA8:
|
|
||||||
case GL_ALPHA12:
|
|
||||||
case GL_ALPHA16:
|
|
||||||
case GL_COMPRESSED_ALPHA:
|
|
||||||
return MESA_FORMAT_A8;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
case GL_LUMINANCE:
|
|
||||||
case GL_LUMINANCE4:
|
|
||||||
case GL_LUMINANCE8:
|
|
||||||
case GL_LUMINANCE12:
|
|
||||||
case GL_LUMINANCE16:
|
|
||||||
case GL_COMPRESSED_LUMINANCE:
|
|
||||||
return MESA_FORMAT_L8;
|
|
||||||
|
|
||||||
case GL_LUMINANCE12_ALPHA4:
|
|
||||||
case GL_LUMINANCE12_ALPHA12:
|
|
||||||
case GL_LUMINANCE16_ALPHA16:
|
|
||||||
/* i915 could implement this mode using MT_32BIT_RG1616. However, this
|
|
||||||
* would require an extra swizzle instruction in the fragment shader to
|
|
||||||
* convert the { R, G, 1.0, 1.0 } to { R, R, R, G }.
|
|
||||||
*/
|
|
||||||
#ifndef I915
|
|
||||||
return MESA_FORMAT_AL1616;
|
|
||||||
#else
|
|
||||||
/* FALLTHROUGH */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
case 2:
|
|
||||||
case GL_LUMINANCE_ALPHA:
|
|
||||||
case GL_LUMINANCE4_ALPHA4:
|
|
||||||
case GL_LUMINANCE6_ALPHA2:
|
|
||||||
case GL_LUMINANCE8_ALPHA8:
|
|
||||||
case GL_COMPRESSED_LUMINANCE_ALPHA:
|
|
||||||
return MESA_FORMAT_AL88;
|
|
||||||
|
|
||||||
case GL_INTENSITY:
|
|
||||||
case GL_INTENSITY4:
|
|
||||||
case GL_INTENSITY8:
|
|
||||||
case GL_INTENSITY12:
|
|
||||||
case GL_INTENSITY16:
|
|
||||||
case GL_COMPRESSED_INTENSITY:
|
|
||||||
return MESA_FORMAT_I8;
|
|
||||||
|
|
||||||
case GL_YCBCR_MESA:
|
|
||||||
if (type == GL_UNSIGNED_SHORT_8_8_MESA || type == GL_UNSIGNED_BYTE)
|
|
||||||
return MESA_FORMAT_YCBCR;
|
|
||||||
else
|
|
||||||
return MESA_FORMAT_YCBCR_REV;
|
|
||||||
|
|
||||||
case GL_COMPRESSED_RGB_FXT1_3DFX:
|
|
||||||
return MESA_FORMAT_RGB_FXT1;
|
|
||||||
case GL_COMPRESSED_RGBA_FXT1_3DFX:
|
|
||||||
return MESA_FORMAT_RGBA_FXT1;
|
|
||||||
|
|
||||||
case GL_RGB_S3TC:
|
|
||||||
case GL_RGB4_S3TC:
|
|
||||||
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
|
|
||||||
return MESA_FORMAT_RGB_DXT1;
|
|
||||||
|
|
||||||
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
|
|
||||||
return MESA_FORMAT_RGBA_DXT1;
|
|
||||||
|
|
||||||
case GL_RGBA_S3TC:
|
|
||||||
case GL_RGBA4_S3TC:
|
|
||||||
case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
|
|
||||||
return MESA_FORMAT_RGBA_DXT3;
|
|
||||||
|
|
||||||
case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
|
|
||||||
return MESA_FORMAT_RGBA_DXT5;
|
|
||||||
|
|
||||||
case GL_DEPTH_COMPONENT:
|
|
||||||
case GL_DEPTH_COMPONENT16:
|
|
||||||
case GL_DEPTH_COMPONENT24:
|
|
||||||
case GL_DEPTH_COMPONENT32:
|
|
||||||
#if 0
|
|
||||||
return MESA_FORMAT_Z16;
|
|
||||||
#else
|
|
||||||
/* fall-through.
|
|
||||||
* 16bpp depth texture can't be paired with a stencil buffer so
|
|
||||||
* always used combined depth/stencil format.
|
|
||||||
*/
|
|
||||||
#endif
|
|
||||||
case GL_DEPTH_STENCIL_EXT:
|
|
||||||
case GL_DEPTH24_STENCIL8_EXT:
|
|
||||||
return MESA_FORMAT_S8_Z24;
|
|
||||||
|
|
||||||
#ifndef I915
|
|
||||||
case GL_SRGB_EXT:
|
|
||||||
case GL_SRGB8_EXT:
|
|
||||||
case GL_SRGB_ALPHA_EXT:
|
|
||||||
case GL_SRGB8_ALPHA8_EXT:
|
|
||||||
case GL_COMPRESSED_SRGB_EXT:
|
|
||||||
case GL_COMPRESSED_SRGB_ALPHA_EXT:
|
|
||||||
case GL_COMPRESSED_SLUMINANCE_EXT:
|
|
||||||
case GL_COMPRESSED_SLUMINANCE_ALPHA_EXT:
|
|
||||||
return MESA_FORMAT_SARGB8;
|
|
||||||
case GL_SLUMINANCE_EXT:
|
|
||||||
case GL_SLUMINANCE8_EXT:
|
|
||||||
if (intel->has_luminance_srgb)
|
|
||||||
return MESA_FORMAT_SL8;
|
|
||||||
else
|
|
||||||
return MESA_FORMAT_SARGB8;
|
|
||||||
case GL_SLUMINANCE_ALPHA_EXT:
|
|
||||||
case GL_SLUMINANCE8_ALPHA8_EXT:
|
|
||||||
if (intel->has_luminance_srgb)
|
|
||||||
return MESA_FORMAT_SLA8;
|
|
||||||
else
|
|
||||||
return MESA_FORMAT_SARGB8;
|
|
||||||
case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
|
|
||||||
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
|
|
||||||
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:
|
|
||||||
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
|
|
||||||
return MESA_FORMAT_SRGB_DXT1;
|
|
||||||
|
|
||||||
/* i915 could also do this */
|
|
||||||
case GL_DUDV_ATI:
|
|
||||||
case GL_DU8DV8_ATI:
|
|
||||||
return MESA_FORMAT_DUDV8;
|
|
||||||
case GL_RGBA_SNORM:
|
|
||||||
case GL_RGBA8_SNORM:
|
|
||||||
return MESA_FORMAT_SIGNED_RGBA8888_REV;
|
|
||||||
|
|
||||||
/* i915 can do a RG16, but it can't do any of the other RED or RG formats.
|
|
||||||
* In addition, it only implements the broken D3D mode where undefined
|
|
||||||
* components are read as 1.0. I'm not sure who thought reading
|
|
||||||
* { R, G, 1.0, 1.0 } from a red-green texture would be useful.
|
|
||||||
*/
|
|
||||||
case GL_RED:
|
|
||||||
case GL_COMPRESSED_RED:
|
|
||||||
case GL_R8:
|
|
||||||
return MESA_FORMAT_R8;
|
|
||||||
case GL_R16:
|
|
||||||
return MESA_FORMAT_R16;
|
|
||||||
case GL_RG:
|
|
||||||
case GL_COMPRESSED_RG:
|
|
||||||
case GL_RG8:
|
|
||||||
return MESA_FORMAT_RG88;
|
|
||||||
case GL_RG16:
|
|
||||||
return MESA_FORMAT_RG1616;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
default:
|
|
||||||
fprintf(stderr, "unexpected texture format %s in %s\n",
|
|
||||||
_mesa_lookup_enum_by_nr(internalFormat), __FUNCTION__);
|
|
||||||
return MESA_FORMAT_NONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return MESA_FORMAT_NONE; /* never get here */
|
|
||||||
}
|
|
||||||
|
|
||||||
int intel_compressed_num_bytes(GLuint mesaFormat)
|
int intel_compressed_num_bytes(GLuint mesaFormat)
|
||||||
{
|
{
|
||||||
GLuint bw, bh;
|
GLuint bw, bh;
|
||||||
|
@@ -68,14 +68,25 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
|
|||||||
/* shallow RGBA formats */
|
/* shallow RGBA formats */
|
||||||
case 4:
|
case 4:
|
||||||
case GL_RGBA:
|
case GL_RGBA:
|
||||||
|
if (type == GL_UNSIGNED_SHORT_4_4_4_4_REV) {
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB4444);
|
||||||
|
} else if (type == GL_UNSIGNED_SHORT_1_5_5_5_REV) {
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB1555);
|
||||||
|
}
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA8888);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB8888);
|
||||||
|
break;
|
||||||
|
|
||||||
case GL_RGBA8:
|
case GL_RGBA8:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA8888);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA8888);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB8888);
|
||||||
break;
|
break;
|
||||||
case GL_RGB5_A1:
|
case GL_RGB5_A1:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB1555);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB1555);
|
||||||
break;
|
break;
|
||||||
case GL_RGBA2:
|
case GL_RGBA2:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB4444_REV); /* just to test another format*/
|
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB4444_REV); /* just to test another format*/
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB4444);
|
||||||
break;
|
break;
|
||||||
case GL_RGBA4:
|
case GL_RGBA4:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB4444);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB4444);
|
||||||
@@ -84,10 +95,14 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
|
|||||||
/* deep RGBA formats */
|
/* deep RGBA formats */
|
||||||
case GL_RGB10_A2:
|
case GL_RGB10_A2:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB2101010);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB2101010);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB8888);
|
||||||
break;
|
break;
|
||||||
case GL_RGBA12:
|
case GL_RGBA12:
|
||||||
case GL_RGBA16:
|
case GL_RGBA16:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_16);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_16);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_16);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA8888);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB8888);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* shallow RGB formats */
|
/* shallow RGB formats */
|
||||||
@@ -95,12 +110,18 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
|
|||||||
case GL_RGB:
|
case GL_RGB:
|
||||||
case GL_RGB8:
|
case GL_RGB8:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGB888);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_RGB888);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_XRGB8888);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB8888);
|
||||||
break;
|
break;
|
||||||
case GL_R3_G3_B2:
|
case GL_R3_G3_B2:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGB332);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_RGB332);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_RGB888);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_XRGB8888);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB8888);
|
||||||
break;
|
break;
|
||||||
case GL_RGB4:
|
case GL_RGB4:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGB565_REV); /* just to test another format */
|
RETURN_IF_SUPPORTED(MESA_FORMAT_RGB565_REV); /* just to test another format */
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_RGB565);
|
||||||
break;
|
break;
|
||||||
case GL_RGB5:
|
case GL_RGB5:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGB565);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_RGB565);
|
||||||
@@ -111,6 +132,8 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
|
|||||||
case GL_RGB12:
|
case GL_RGB12:
|
||||||
case GL_RGB16:
|
case GL_RGB16:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_16);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_16);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_XRGB8888);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB8888);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Alpha formats */
|
/* Alpha formats */
|
||||||
@@ -123,6 +146,7 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
|
|||||||
case GL_ALPHA12:
|
case GL_ALPHA12:
|
||||||
case GL_ALPHA16:
|
case GL_ALPHA16:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_A16);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_A16);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_A8);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Luminance formats */
|
/* Luminance formats */
|
||||||
@@ -136,11 +160,13 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
|
|||||||
case GL_LUMINANCE12:
|
case GL_LUMINANCE12:
|
||||||
case GL_LUMINANCE16:
|
case GL_LUMINANCE16:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_L16);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_L16);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_L8);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Luminance/Alpha formats */
|
/* Luminance/Alpha formats */
|
||||||
case GL_LUMINANCE4_ALPHA4:
|
case GL_LUMINANCE4_ALPHA4:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_AL44);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_AL44);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_AL88);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
@@ -154,6 +180,7 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
|
|||||||
case GL_LUMINANCE12_ALPHA12:
|
case GL_LUMINANCE12_ALPHA12:
|
||||||
case GL_LUMINANCE16_ALPHA16:
|
case GL_LUMINANCE16_ALPHA16:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_AL1616);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_AL1616);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_AL88);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GL_INTENSITY:
|
case GL_INTENSITY:
|
||||||
@@ -165,6 +192,7 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
|
|||||||
case GL_INTENSITY12:
|
case GL_INTENSITY12:
|
||||||
case GL_INTENSITY16:
|
case GL_INTENSITY16:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_I16);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_I16);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_I8);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GL_COLOR_INDEX:
|
case GL_COLOR_INDEX:
|
||||||
@@ -187,10 +215,11 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
|
|||||||
case GL_DEPTH_COMPONENT24:
|
case GL_DEPTH_COMPONENT24:
|
||||||
case GL_DEPTH_COMPONENT32:
|
case GL_DEPTH_COMPONENT32:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_Z32);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_Z32);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_S8_Z24);
|
||||||
break;
|
break;
|
||||||
case GL_DEPTH_COMPONENT16:
|
case GL_DEPTH_COMPONENT16:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_Z16);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_Z16);
|
||||||
break;
|
RETURN_IF_SUPPORTED(MESA_FORMAT_S8_Z24);
|
||||||
default:
|
default:
|
||||||
; /* fallthrough */
|
; /* fallthrough */
|
||||||
}
|
}
|
||||||
@@ -216,6 +245,8 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
|
|||||||
if (ctx->Extensions.TDFX_texture_compression_FXT1)
|
if (ctx->Extensions.TDFX_texture_compression_FXT1)
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FXT1);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FXT1);
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGB888);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_RGB888);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_XRGB8888);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB8888);
|
||||||
break;
|
break;
|
||||||
case GL_COMPRESSED_RGBA_ARB:
|
case GL_COMPRESSED_RGBA_ARB:
|
||||||
if (ctx->Extensions.EXT_texture_compression_s3tc ||
|
if (ctx->Extensions.EXT_texture_compression_s3tc ||
|
||||||
@@ -224,6 +255,7 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
|
|||||||
if (ctx->Extensions.TDFX_texture_compression_FXT1)
|
if (ctx->Extensions.TDFX_texture_compression_FXT1)
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FXT1);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FXT1);
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA8888);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA8888);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB8888);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
; /* fallthrough */
|
; /* fallthrough */
|
||||||
@@ -337,6 +369,7 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
|
|||||||
case GL_DEPTH_STENCIL_EXT:
|
case GL_DEPTH_STENCIL_EXT:
|
||||||
case GL_DEPTH24_STENCIL8_EXT:
|
case GL_DEPTH24_STENCIL8_EXT:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_S8);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_S8);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_S8_Z24);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
; /* fallthrough */
|
; /* fallthrough */
|
||||||
@@ -359,6 +392,7 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
|
|||||||
case GL_RGBA_SNORM:
|
case GL_RGBA_SNORM:
|
||||||
case GL_RGBA8_SNORM:
|
case GL_RGBA8_SNORM:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
; /* fallthrough */
|
; /* fallthrough */
|
||||||
@@ -406,24 +440,30 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
|
|||||||
case GL_SRGB_EXT:
|
case GL_SRGB_EXT:
|
||||||
case GL_SRGB8_EXT:
|
case GL_SRGB8_EXT:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGB8);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGB8);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8);
|
||||||
break;
|
break;
|
||||||
case GL_SRGB_ALPHA_EXT:
|
case GL_SRGB_ALPHA_EXT:
|
||||||
case GL_SRGB8_ALPHA8_EXT:
|
case GL_SRGB8_ALPHA8_EXT:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGBA8);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGBA8);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8);
|
||||||
break;
|
break;
|
||||||
case GL_SLUMINANCE_EXT:
|
case GL_SLUMINANCE_EXT:
|
||||||
case GL_SLUMINANCE8_EXT:
|
case GL_SLUMINANCE8_EXT:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_SL8);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SL8);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8);
|
||||||
break;
|
break;
|
||||||
case GL_SLUMINANCE_ALPHA_EXT:
|
case GL_SLUMINANCE_ALPHA_EXT:
|
||||||
case GL_SLUMINANCE8_ALPHA8_EXT:
|
case GL_SLUMINANCE8_ALPHA8_EXT:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_SLA8);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SLA8);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8);
|
||||||
break;
|
break;
|
||||||
case GL_COMPRESSED_SLUMINANCE_EXT:
|
case GL_COMPRESSED_SLUMINANCE_EXT:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_SL8);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SL8);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8);
|
||||||
break;
|
break;
|
||||||
case GL_COMPRESSED_SLUMINANCE_ALPHA_EXT:
|
case GL_COMPRESSED_SLUMINANCE_ALPHA_EXT:
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_SLA8);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SLA8);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8);
|
||||||
break;
|
break;
|
||||||
case GL_COMPRESSED_SRGB_EXT:
|
case GL_COMPRESSED_SRGB_EXT:
|
||||||
#if FEATURE_texture_s3tc
|
#if FEATURE_texture_s3tc
|
||||||
@@ -431,6 +471,7 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
|
|||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGB_DXT1);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGB_DXT1);
|
||||||
#endif
|
#endif
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGB8);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGB8);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8);
|
||||||
break;
|
break;
|
||||||
case GL_COMPRESSED_SRGB_ALPHA_EXT:
|
case GL_COMPRESSED_SRGB_ALPHA_EXT:
|
||||||
#if FEATURE_texture_s3tc
|
#if FEATURE_texture_s3tc
|
||||||
@@ -438,23 +479,28 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
|
|||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGBA_DXT3); /* Not srgba_dxt1, see spec */
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGBA_DXT3); /* Not srgba_dxt1, see spec */
|
||||||
#endif
|
#endif
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGBA8);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGBA8);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8);
|
||||||
break;
|
break;
|
||||||
#if FEATURE_texture_s3tc
|
#if FEATURE_texture_s3tc
|
||||||
case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
|
case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
|
||||||
if (ctx->Extensions.EXT_texture_compression_s3tc)
|
if (ctx->Extensions.EXT_texture_compression_s3tc)
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGB_DXT1);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGB_DXT1);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8);
|
||||||
break;
|
break;
|
||||||
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
|
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
|
||||||
if (ctx->Extensions.EXT_texture_compression_s3tc)
|
if (ctx->Extensions.EXT_texture_compression_s3tc)
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGBA_DXT1);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGBA_DXT1);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8);
|
||||||
break;
|
break;
|
||||||
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:
|
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:
|
||||||
if (ctx->Extensions.EXT_texture_compression_s3tc)
|
if (ctx->Extensions.EXT_texture_compression_s3tc)
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGBA_DXT3);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGBA_DXT3);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8);
|
||||||
break;
|
break;
|
||||||
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
|
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
|
||||||
if (ctx->Extensions.EXT_texture_compression_s3tc)
|
if (ctx->Extensions.EXT_texture_compression_s3tc)
|
||||||
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGBA_DXT5);
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SRGBA_DXT5);
|
||||||
|
RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
|
Reference in New Issue
Block a user