wined3d: Emulate luminance texture formats on core profile.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
c1614094f4
commit
565ef4f961
|
@ -995,30 +995,46 @@ static const struct wined3d_format_texture_info format_texture_info[] =
|
|||
* Macs, so probably the endianness differs. This could be tested as soon as we have a Windows and MacOS on a big
|
||||
* endian machine
|
||||
*/
|
||||
{WINED3DFMT_UYVY, GL_RG8, GL_RG8, 0,
|
||||
GL_RG, GL_UNSIGNED_BYTE, 0,
|
||||
WINED3DFMT_FLAG_FILTERING,
|
||||
ARB_TEXTURE_RG, NULL},
|
||||
{WINED3DFMT_UYVY, GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, 0,
|
||||
GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 0,
|
||||
WINED3DFMT_FLAG_FILTERING,
|
||||
WINED3D_GL_EXT_NONE, NULL},
|
||||
WINED3D_GL_LEGACY_CONTEXT, NULL},
|
||||
{WINED3DFMT_UYVY, GL_RGB, GL_RGB, 0,
|
||||
GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, 0,
|
||||
WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_FILTERING,
|
||||
APPLE_YCBCR_422, NULL},
|
||||
{WINED3DFMT_YUY2, GL_RG8, GL_RG8, 0,
|
||||
GL_RG, GL_UNSIGNED_BYTE, 0,
|
||||
WINED3DFMT_FLAG_FILTERING,
|
||||
ARB_TEXTURE_RG, NULL},
|
||||
{WINED3DFMT_YUY2, GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, 0,
|
||||
GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 0,
|
||||
WINED3DFMT_FLAG_FILTERING,
|
||||
WINED3D_GL_EXT_NONE, NULL},
|
||||
WINED3D_GL_LEGACY_CONTEXT, NULL},
|
||||
{WINED3DFMT_YUY2, GL_RGB, GL_RGB, 0,
|
||||
GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, 0,
|
||||
WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_FILTERING,
|
||||
APPLE_YCBCR_422, NULL},
|
||||
{WINED3DFMT_YV12, GL_R8, GL_R8, 0,
|
||||
GL_RED, GL_UNSIGNED_BYTE, 0,
|
||||
WINED3DFMT_FLAG_FILTERING,
|
||||
ARB_TEXTURE_RG, NULL},
|
||||
{WINED3DFMT_YV12, GL_ALPHA, GL_ALPHA, 0,
|
||||
GL_ALPHA, GL_UNSIGNED_BYTE, 0,
|
||||
WINED3DFMT_FLAG_FILTERING,
|
||||
WINED3D_GL_EXT_NONE, NULL},
|
||||
WINED3D_GL_LEGACY_CONTEXT, NULL},
|
||||
{WINED3DFMT_NV12, GL_R8, GL_R8, 0,
|
||||
GL_RED, GL_UNSIGNED_BYTE, 0,
|
||||
WINED3DFMT_FLAG_FILTERING,
|
||||
ARB_TEXTURE_RG, NULL},
|
||||
{WINED3DFMT_NV12, GL_ALPHA, GL_ALPHA, 0,
|
||||
GL_ALPHA, GL_UNSIGNED_BYTE, 0,
|
||||
WINED3DFMT_FLAG_FILTERING,
|
||||
WINED3D_GL_EXT_NONE, NULL},
|
||||
WINED3D_GL_LEGACY_CONTEXT, NULL},
|
||||
{WINED3DFMT_DXT1, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT, 0,
|
||||
GL_RGBA, GL_UNSIGNED_BYTE, 0,
|
||||
WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING
|
||||
|
@ -1121,10 +1137,14 @@ static const struct wined3d_format_texture_info format_texture_info[] =
|
|||
WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_RENDERTARGET,
|
||||
EXT_PACKED_FLOAT},
|
||||
/* Palettized formats */
|
||||
{WINED3DFMT_P8_UINT, GL_R8, GL_R8, 0,
|
||||
GL_RED, GL_UNSIGNED_BYTE, 0,
|
||||
0,
|
||||
ARB_TEXTURE_RG, NULL},
|
||||
{WINED3DFMT_P8_UINT, GL_ALPHA8, GL_ALPHA8, 0,
|
||||
GL_ALPHA, GL_UNSIGNED_BYTE, 0,
|
||||
0,
|
||||
0, NULL},
|
||||
WINED3D_GL_LEGACY_CONTEXT, NULL},
|
||||
/* Standard ARGB formats */
|
||||
{WINED3DFMT_B8G8R8_UNORM, GL_RGB8, GL_RGB8, 0,
|
||||
GL_BGR, GL_UNSIGNED_BYTE, 0,
|
||||
|
@ -1174,10 +1194,14 @@ static const struct wined3d_format_texture_info format_texture_info[] =
|
|||
WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING
|
||||
| WINED3DFMT_FLAG_RENDERTARGET | WINED3DFMT_FLAG_VTF,
|
||||
ARB_TEXTURE_RG, NULL},
|
||||
{WINED3DFMT_A8_UNORM, GL_R8, GL_R8, 0,
|
||||
GL_RED, GL_UNSIGNED_BYTE, 0,
|
||||
WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING,
|
||||
ARB_TEXTURE_RG, NULL},
|
||||
{WINED3DFMT_A8_UNORM, GL_ALPHA8, GL_ALPHA8, 0,
|
||||
GL_ALPHA, GL_UNSIGNED_BYTE, 0,
|
||||
WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING,
|
||||
WINED3D_GL_EXT_NONE, NULL},
|
||||
WINED3D_GL_LEGACY_CONTEXT, NULL},
|
||||
{WINED3DFMT_B4G4R4X4_UNORM, GL_RGB4, GL_RGB4, 0,
|
||||
GL_BGRA, GL_UNSIGNED_SHORT_4_4_4_4_REV, 0,
|
||||
WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING,
|
||||
|
@ -1238,20 +1262,40 @@ static const struct wined3d_format_texture_info format_texture_info[] =
|
|||
WINED3DFMT_FLAG_TEXTURE,
|
||||
ARB_TEXTURE_RG, NULL},
|
||||
/* Luminance */
|
||||
{WINED3DFMT_L8_UNORM, GL_R8, GL_R8, 0,
|
||||
GL_RED, GL_UNSIGNED_BYTE, 0,
|
||||
WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING,
|
||||
ARB_TEXTURE_RG, NULL},
|
||||
{WINED3DFMT_L8_UNORM, GL_LUMINANCE8, GL_SLUMINANCE8_EXT, 0,
|
||||
GL_LUMINANCE, GL_UNSIGNED_BYTE, 0,
|
||||
WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING
|
||||
| WINED3DFMT_FLAG_SRGB_READ,
|
||||
WINED3D_GL_EXT_NONE, NULL},
|
||||
WINED3D_GL_LEGACY_CONTEXT, NULL},
|
||||
{WINED3DFMT_L8A8_UNORM, GL_RG8, GL_RG8, 0,
|
||||
GL_RG, GL_UNSIGNED_BYTE, 0,
|
||||
WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING,
|
||||
ARB_TEXTURE_RG, NULL},
|
||||
{WINED3DFMT_L8A8_UNORM, GL_LUMINANCE8_ALPHA8, GL_SLUMINANCE8_ALPHA8_EXT, 0,
|
||||
GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 0,
|
||||
WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING
|
||||
| WINED3DFMT_FLAG_SRGB_READ,
|
||||
WINED3D_GL_EXT_NONE, NULL},
|
||||
WINED3D_GL_LEGACY_CONTEXT, NULL},
|
||||
{WINED3DFMT_L4A4_UNORM, GL_RG8, GL_RG8, 0,
|
||||
GL_RG, GL_UNSIGNED_BYTE, 2,
|
||||
WINED3DFMT_FLAG_FILTERING,
|
||||
ARB_TEXTURE_RG, convert_l4a4_unorm},
|
||||
{WINED3DFMT_L4A4_UNORM, GL_LUMINANCE4_ALPHA4, GL_LUMINANCE4_ALPHA4, 0,
|
||||
GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 2,
|
||||
WINED3DFMT_FLAG_FILTERING,
|
||||
WINED3D_GL_EXT_NONE, convert_l4a4_unorm},
|
||||
WINED3D_GL_LEGACY_CONTEXT, convert_l4a4_unorm},
|
||||
{WINED3DFMT_L16_UNORM, GL_R16, GL_R16, 0,
|
||||
GL_RED, GL_UNSIGNED_SHORT, 0,
|
||||
WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING,
|
||||
ARB_TEXTURE_RG, NULL},
|
||||
{WINED3DFMT_L16_UNORM, GL_LUMINANCE16, GL_LUMINANCE16, 0,
|
||||
GL_LUMINANCE, GL_UNSIGNED_SHORT, 0,
|
||||
WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING,
|
||||
WINED3D_GL_LEGACY_CONTEXT, NULL},
|
||||
/* Bump mapping stuff */
|
||||
{WINED3DFMT_R8G8_SNORM, GL_RGB8, GL_RGB8, 0,
|
||||
GL_BGR, GL_UNSIGNED_BYTE, 3,
|
||||
|
@ -1397,10 +1441,6 @@ static const struct wined3d_format_texture_info format_texture_info[] =
|
|||
WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING
|
||||
| WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_SHADOW,
|
||||
ARB_DEPTH_TEXTURE, NULL},
|
||||
{WINED3DFMT_L16_UNORM, GL_LUMINANCE16, GL_LUMINANCE16, 0,
|
||||
GL_LUMINANCE, GL_UNSIGNED_SHORT, 0,
|
||||
WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING,
|
||||
WINED3D_GL_EXT_NONE, NULL},
|
||||
{WINED3DFMT_D32_FLOAT, GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT32F, 0,
|
||||
GL_DEPTH_COMPONENT, GL_FLOAT, 0,
|
||||
WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_SHADOW,
|
||||
|
@ -2878,6 +2918,21 @@ static void apply_format_fixups(struct wined3d_adapter *adapter, struct wined3d_
|
|||
|
||||
if (!gl_info->supported[WINED3D_GL_LEGACY_CONTEXT])
|
||||
{
|
||||
idx = get_format_idx(WINED3DFMT_A8_UNORM);
|
||||
gl_info->formats[idx].color_fixup = create_color_fixup_desc(
|
||||
0, CHANNEL_SOURCE_ZERO, 0, CHANNEL_SOURCE_ZERO, 0, CHANNEL_SOURCE_ZERO, 0, CHANNEL_SOURCE_X);
|
||||
idx = get_format_idx(WINED3DFMT_L8_UNORM);
|
||||
gl_info->formats[idx].color_fixup = create_color_fixup_desc(
|
||||
0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_ONE);
|
||||
idx = get_format_idx(WINED3DFMT_L8A8_UNORM);
|
||||
gl_info->formats[idx].color_fixup = create_color_fixup_desc(
|
||||
0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_Y);
|
||||
idx = get_format_idx(WINED3DFMT_L4A4_UNORM);
|
||||
gl_info->formats[idx].color_fixup = create_color_fixup_desc(
|
||||
0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_Y);
|
||||
idx = get_format_idx(WINED3DFMT_L16_UNORM);
|
||||
gl_info->formats[idx].color_fixup = create_color_fixup_desc(
|
||||
0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_ONE);
|
||||
idx = get_format_idx(WINED3DFMT_INTZ);
|
||||
gl_info->formats[idx].color_fixup = create_color_fixup_desc(
|
||||
0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_X);
|
||||
|
|
Loading…
Reference in New Issue