From: Zebediah Figura zfigura@codeweavers.com
Tables with aligned entries are intended to be nicely readable, and at its inception (351874716) this table was. Unfortunately, this breaks down when an entry spans multiple rows, and I find this table to be decidedly unreadable now.
This new format is not the prettiest, and it certainly takes up much more space, but I find it is much easier to tell which field is which. It also avoids the need to write zeros for fields which are not relevant to a given format, which in turn makes it easier to add more fields to the table. --- dlls/wined3d/format_gl.c | 1612 +++++++++++++++++++++++++------------- 1 file changed, 1073 insertions(+), 539 deletions(-)
diff --git a/dlls/wined3d/format_gl.c b/dlls/wined3d/format_gl.c index d9818513e2f..76bc702479e 100644 --- a/dlls/wined3d/format_gl.c +++ b/dlls/wined3d/format_gl.c @@ -484,6 +484,7 @@ static const struct wined3d_format_texture_info format_texture_info[] = format type conv_byte_count caps extension upload download */ + /* FourCC formats */ /* GL_APPLE_ycbcr_422 claims that its '2YUV' format, which is supported via the UNSIGNED_SHORT_8_8_REV_APPLE type * is equivalent to 'UYVY' format on Windows, and the 'YUVS' via UNSIGNED_SHORT_8_8_APPLE equates to 'YUY2'. The @@ -491,553 +492,1085 @@ 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, - WINED3D_FORMAT_CAP_FILTERING, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_UYVY, GL_LUMINANCE8_ALPHA8, GL_LUMINANCE8_ALPHA8, 0, - GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_FILTERING, - WINED3D_GL_LEGACY_CONTEXT, NULL}, - {WINED3DFMT_UYVY, GL_RGB_RAW_422_APPLE, GL_RGB_RAW_422_APPLE, 0, - GL_RGB_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, 0, - WINED3D_FORMAT_CAP_FILTERING, - APPLE_RGB_422, NULL}, - {WINED3DFMT_UYVY, GL_RGB, GL_RGB, 0, - GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_FILTERING, - APPLE_YCBCR_422, NULL}, - {WINED3DFMT_YUY2, GL_RG8, GL_RG8, 0, - GL_RG, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_FILTERING, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_YUY2, GL_LUMINANCE8_ALPHA8, GL_LUMINANCE8_ALPHA8, 0, - GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_FILTERING, - WINED3D_GL_LEGACY_CONTEXT, NULL}, - {WINED3DFMT_YUY2, GL_RGB_RAW_422_APPLE, GL_RGB_RAW_422_APPLE, 0, - GL_RGB_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, 0, - WINED3D_FORMAT_CAP_FILTERING, - APPLE_RGB_422, NULL}, - {WINED3DFMT_YUY2, GL_RGB, GL_RGB, 0, - GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_FILTERING, - APPLE_YCBCR_422, NULL}, - {WINED3DFMT_YV12, GL_R8, GL_R8, 0, - GL_RED, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_FILTERING, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_YV12, GL_ALPHA8, GL_ALPHA8, 0, - GL_ALPHA, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_FILTERING, - WINED3D_GL_LEGACY_CONTEXT, NULL}, - {WINED3DFMT_NV12, GL_R8, GL_R8, 0, - GL_RED, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_FILTERING, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_NV12, GL_ALPHA8, GL_ALPHA8, 0, - GL_ALPHA, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_FILTERING, - 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, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_SRGB_READ, - EXT_TEXTURE_COMPRESSION_S3TC, NULL}, - {WINED3DFMT_DXT2, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, 0, - GL_RGBA, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_SRGB_READ, - EXT_TEXTURE_COMPRESSION_S3TC, NULL}, - {WINED3DFMT_DXT3, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, 0, - GL_RGBA, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_SRGB_READ, - EXT_TEXTURE_COMPRESSION_S3TC, NULL}, - {WINED3DFMT_DXT4, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, 0, - GL_RGBA, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_SRGB_READ, - EXT_TEXTURE_COMPRESSION_S3TC, NULL}, - {WINED3DFMT_DXT5, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, 0, - GL_RGBA, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_SRGB_READ, - EXT_TEXTURE_COMPRESSION_S3TC, NULL}, - {WINED3DFMT_BC1_UNORM, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT, 0, - GL_RGBA, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - EXT_TEXTURE_COMPRESSION_S3TC, NULL}, - {WINED3DFMT_BC2_UNORM, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, 0, - GL_RGBA, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - EXT_TEXTURE_COMPRESSION_S3TC, NULL}, - {WINED3DFMT_BC3_UNORM, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, 0, - GL_RGBA, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - EXT_TEXTURE_COMPRESSION_S3TC, NULL}, - {WINED3DFMT_BC4_UNORM, GL_COMPRESSED_RED_RGTC1, GL_COMPRESSED_RED_RGTC1, 0, - GL_RED, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - ARB_TEXTURE_COMPRESSION_RGTC, NULL}, - {WINED3DFMT_BC4_SNORM, GL_COMPRESSED_SIGNED_RED_RGTC1, GL_COMPRESSED_SIGNED_RED_RGTC1, 0, - GL_RED, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - ARB_TEXTURE_COMPRESSION_RGTC, NULL}, - {WINED3DFMT_BC5_UNORM, GL_COMPRESSED_RG_RGTC2, GL_COMPRESSED_RG_RGTC2, 0, - GL_RG, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - ARB_TEXTURE_COMPRESSION_RGTC, NULL}, - {WINED3DFMT_BC5_SNORM, GL_COMPRESSED_SIGNED_RG_RGTC2, GL_COMPRESSED_SIGNED_RG_RGTC2, 0, - GL_RG, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - ARB_TEXTURE_COMPRESSION_RGTC, NULL}, - {WINED3DFMT_BC6H_UF16, GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB, GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB, 0, - GL_RGB, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - ARB_TEXTURE_COMPRESSION_BPTC, NULL}, - {WINED3DFMT_BC6H_SF16, GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB, GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB, 0, - GL_RGB, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - ARB_TEXTURE_COMPRESSION_BPTC, NULL}, - {WINED3DFMT_BC7_UNORM, GL_COMPRESSED_RGBA_BPTC_UNORM_ARB, GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB, 0, - GL_RGBA, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - ARB_TEXTURE_COMPRESSION_BPTC, NULL}, + { + .id = WINED3DFMT_UYVY, + .internal = GL_RG8, + .format = GL_RG, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_FILTERING, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_UYVY, + .internal = GL_LUMINANCE8_ALPHA8, + .format = GL_LUMINANCE_ALPHA, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_FILTERING, + .extension = WINED3D_GL_LEGACY_CONTEXT, + }, + { + .id = WINED3DFMT_UYVY, + .internal = GL_RGB_RAW_422_APPLE, + .format = GL_RGB_422_APPLE, + .type = GL_UNSIGNED_SHORT_8_8_APPLE, + .caps = WINED3D_FORMAT_CAP_FILTERING, + .extension = APPLE_RGB_422, + }, + { + .id = WINED3DFMT_UYVY, + .internal = GL_RGB, + .format = GL_YCBCR_422_APPLE, + .type = GL_UNSIGNED_SHORT_8_8_APPLE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_FILTERING, + .extension = APPLE_YCBCR_422, + }, + { + .id = WINED3DFMT_YUY2, + .internal = GL_RG8, + .format = GL_RG, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_FILTERING, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_YUY2, + .internal = GL_LUMINANCE8_ALPHA8, + .format = GL_LUMINANCE_ALPHA, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_FILTERING, + .extension = WINED3D_GL_LEGACY_CONTEXT, + }, + { + .id = WINED3DFMT_YUY2, + .internal = GL_RGB_RAW_422_APPLE, + .format = GL_RGB_422_APPLE, + .type = GL_UNSIGNED_SHORT_8_8_REV_APPLE, + .caps = WINED3D_FORMAT_CAP_FILTERING, + .extension = APPLE_RGB_422, + }, + { + .id = WINED3DFMT_YUY2, + .internal = GL_RGB, + .format = GL_YCBCR_422_APPLE, + .type = GL_UNSIGNED_SHORT_8_8_REV_APPLE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_FILTERING, + .extension = APPLE_YCBCR_422, + }, + { + .id = WINED3DFMT_YV12, + .internal = GL_R8, + .format = GL_RED, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_FILTERING, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_YV12, + .internal = GL_ALPHA8, + .format = GL_ALPHA, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_FILTERING, + .extension = WINED3D_GL_LEGACY_CONTEXT, + }, + { + .id = WINED3DFMT_NV12, + .internal = GL_R8, + .format = GL_RED, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_FILTERING, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_NV12, + .internal = GL_ALPHA8, + .format = GL_ALPHA, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_FILTERING, + .extension = WINED3D_GL_LEGACY_CONTEXT, + }, + { + .id = WINED3DFMT_DXT1, + .internal = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, + .srgb_internal = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT, + .format = GL_RGBA, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_SRGB_READ, + .extension = EXT_TEXTURE_COMPRESSION_S3TC, + }, + { + .id = WINED3DFMT_DXT2, + .internal = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, + .srgb_internal = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, + .format = GL_RGBA, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_SRGB_READ, + .extension = EXT_TEXTURE_COMPRESSION_S3TC, + }, + { + .id = WINED3DFMT_DXT3, + .internal = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, + .srgb_internal = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, + .format = GL_RGBA, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_SRGB_READ, + .extension = EXT_TEXTURE_COMPRESSION_S3TC, + }, + { + .id = WINED3DFMT_DXT4, + .internal = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, + .srgb_internal = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, + .format = GL_RGBA, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_SRGB_READ, + .extension = EXT_TEXTURE_COMPRESSION_S3TC, + }, + { + .id = WINED3DFMT_DXT5, + .internal = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, + .srgb_internal = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, + .format = GL_RGBA, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_SRGB_READ, + .extension = EXT_TEXTURE_COMPRESSION_S3TC, + }, + { + .id = WINED3DFMT_BC1_UNORM, + .internal = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, + .srgb_internal = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT, + .format = GL_RGBA, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = EXT_TEXTURE_COMPRESSION_S3TC, + }, + { + .id = WINED3DFMT_BC2_UNORM, + .internal = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, + .srgb_internal = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, + .format = GL_RGBA, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = EXT_TEXTURE_COMPRESSION_S3TC, + }, + { + .id = WINED3DFMT_BC3_UNORM, + .internal = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, + .srgb_internal = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, + .format = GL_RGBA, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = EXT_TEXTURE_COMPRESSION_S3TC, + }, + { + .id = WINED3DFMT_BC4_UNORM, + .internal = GL_COMPRESSED_RED_RGTC1, + .format = GL_RED, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = ARB_TEXTURE_COMPRESSION_RGTC, + }, + { + .id = WINED3DFMT_BC4_SNORM, + .internal = GL_COMPRESSED_SIGNED_RED_RGTC1, + .format = GL_RED, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = ARB_TEXTURE_COMPRESSION_RGTC, + }, + { + .id = WINED3DFMT_BC5_UNORM, + .internal = GL_COMPRESSED_RG_RGTC2, + .format = GL_RG, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = ARB_TEXTURE_COMPRESSION_RGTC, + }, + { + .id = WINED3DFMT_BC5_SNORM, + .internal = GL_COMPRESSED_SIGNED_RG_RGTC2, + .format = GL_RG, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = ARB_TEXTURE_COMPRESSION_RGTC, + }, + { + .id = WINED3DFMT_BC6H_UF16, + .internal = GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB, + .format = GL_RGB, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = ARB_TEXTURE_COMPRESSION_BPTC, + }, + { + .id = WINED3DFMT_BC6H_SF16, + .internal = GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB, + .format = GL_RGB, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = ARB_TEXTURE_COMPRESSION_BPTC, + }, + { + .id = WINED3DFMT_BC7_UNORM, + .internal = GL_COMPRESSED_RGBA_BPTC_UNORM_ARB, + .srgb_internal = GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB, + .format = GL_RGBA, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = ARB_TEXTURE_COMPRESSION_BPTC, + }, /* IEEE formats */ - {WINED3DFMT_R32_FLOAT, GL_RGB32F_ARB, GL_RGB32F_ARB, 0, - GL_RED, GL_FLOAT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, - ARB_TEXTURE_FLOAT, NULL}, - {WINED3DFMT_R32_FLOAT, GL_R32F, GL_R32F, 0, - GL_RED, GL_FLOAT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_R32G32_FLOAT, GL_RGB32F_ARB, GL_RGB32F_ARB, 0, - GL_RGB, GL_FLOAT, 12, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, - ARB_TEXTURE_FLOAT, convert_r32g32_float}, - {WINED3DFMT_R32G32_FLOAT, GL_RG32F, GL_RG32F, 0, - GL_RG, GL_FLOAT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_R32G32B32_FLOAT, GL_RGB32F, GL_RGB32F, 0, - GL_RGB, GL_FLOAT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_FLOAT, NULL}, - {WINED3DFMT_R32G32B32A32_FLOAT, GL_RGBA32F_ARB, GL_RGBA32F_ARB, 0, - GL_RGBA, GL_FLOAT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, - ARB_TEXTURE_FLOAT, NULL}, + { + .id = WINED3DFMT_R32_FLOAT, + .internal = GL_RGB32F_ARB, + .format = GL_RED, + .type = GL_FLOAT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, + .extension = ARB_TEXTURE_FLOAT, + }, + { + .id = WINED3DFMT_R32_FLOAT, + .internal = GL_R32F, + .format = GL_RED, + .type = GL_FLOAT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_R32G32_FLOAT, + .internal = GL_RGB32F_ARB, + .format = GL_RGB, + .type = GL_FLOAT, + .conv_byte_count = 12, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, + .extension = ARB_TEXTURE_FLOAT, + .upload = convert_r32g32_float, + }, + { + .id = WINED3DFMT_R32G32_FLOAT, + .internal = GL_RG32F, + .format = GL_RG, + .type = GL_FLOAT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_R32G32B32_FLOAT, + .internal = GL_RGB32F, + .format = GL_RGB, + .type = GL_FLOAT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_FLOAT, + }, + { + .id = WINED3DFMT_R32G32B32A32_FLOAT, + .internal = GL_RGBA32F_ARB, + .format = GL_RGBA, + .type = GL_FLOAT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, + .extension = ARB_TEXTURE_FLOAT, + }, /* Float */ - {WINED3DFMT_R16_FLOAT, GL_RGB16F_ARB, GL_RGB16F_ARB, 0, - GL_RED, GL_HALF_FLOAT_ARB, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, - ARB_TEXTURE_FLOAT, NULL}, - {WINED3DFMT_R16_FLOAT, GL_R16F, GL_R16F, 0, - GL_RED, GL_HALF_FLOAT_ARB, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_R16G16_FLOAT, GL_RGB16F_ARB, GL_RGB16F_ARB, 0, - GL_RGB, GL_HALF_FLOAT_ARB, 6, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, - ARB_TEXTURE_FLOAT, convert_r16g16}, - {WINED3DFMT_R16G16_FLOAT, GL_RG16F, GL_RG16F, 0, - GL_RG, GL_HALF_FLOAT_ARB, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_R16G16B16A16_FLOAT, GL_RGBA16F_ARB, GL_RGBA16F_ARB, 0, - GL_RGBA, GL_HALF_FLOAT_ARB, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_RENDERTARGET - | WINED3D_FORMAT_CAP_VTF, - ARB_TEXTURE_FLOAT, NULL}, - {WINED3DFMT_R11G11B10_FLOAT, GL_R11F_G11F_B10F, GL_R11F_G11F_B10F, 0, - GL_RGB, GL_UNSIGNED_INT_10F_11F_11F_REV, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_RENDERTARGET, - EXT_PACKED_FLOAT}, + { + .id = WINED3DFMT_R16_FLOAT, + .internal = GL_RGB16F_ARB, + .format = GL_RED, + .type = GL_HALF_FLOAT_ARB, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, + .extension = ARB_TEXTURE_FLOAT, + }, + { + .id = WINED3DFMT_R16_FLOAT, + .internal = GL_R16F, + .format = GL_RED, + .type = GL_HALF_FLOAT_ARB, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_R16G16_FLOAT, + .internal = GL_RGB16F_ARB, + .format = GL_RGB, + .type = GL_HALF_FLOAT_ARB, + .conv_byte_count = 6, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, + .extension = ARB_TEXTURE_FLOAT, + .upload = convert_r16g16, + }, + { + .id = WINED3DFMT_R16G16_FLOAT, + .internal = GL_RG16F, + .format = GL_RG, + .type = GL_HALF_FLOAT_ARB, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_R16G16B16A16_FLOAT, + .internal = GL_RGBA16F_ARB, + .format = GL_RGBA, + .type = GL_HALF_FLOAT_ARB, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING + | WINED3D_FORMAT_CAP_RENDERTARGET + | WINED3D_FORMAT_CAP_VTF, + .extension = ARB_TEXTURE_FLOAT, + }, + { + .id = WINED3DFMT_R11G11B10_FLOAT, + .internal = GL_R11F_G11F_B10F, + .format = GL_RGB, + .type = GL_UNSIGNED_INT_10F_11F_11F_REV, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING + | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = 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, - WINED3D_GL_LEGACY_CONTEXT, NULL}, + { + .id = WINED3DFMT_P8_UINT, + .internal = GL_R8, + .format = GL_RED, + .type = GL_UNSIGNED_BYTE, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_P8_UINT, + .internal = GL_ALPHA8, + .format = GL_ALPHA, + .type = GL_UNSIGNED_BYTE, + .extension = WINED3D_GL_LEGACY_CONTEXT, + }, /* Standard ARGB formats */ - {WINED3DFMT_B8G8R8_UNORM, GL_RGB8, GL_RGB8, 0, - GL_BGR, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING | WINED3D_FORMAT_CAP_RENDERTARGET, - WINED3D_GL_EXT_NONE, NULL}, - {WINED3DFMT_B8G8R8A8_UNORM, GL_RGBA8, GL_SRGB8_ALPHA8_EXT, 0, - GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_SRGB_READ | WINED3D_FORMAT_CAP_SRGB_WRITE - | WINED3D_FORMAT_CAP_VTF, - WINED3D_GL_EXT_NONE, NULL}, - {WINED3DFMT_B8G8R8X8_UNORM, GL_RGB8, GL_SRGB8_EXT, 0, - GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_SRGB_READ | WINED3D_FORMAT_CAP_SRGB_WRITE, - WINED3D_GL_EXT_NONE, NULL}, - {WINED3DFMT_B5G6R5_UNORM, GL_RGB5, GL_SRGB8_EXT, GL_RGB8, - GL_RGB, GL_UNSIGNED_SHORT_5_6_5, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_SRGB_READ, - WINED3D_GL_EXT_NONE, NULL}, - {WINED3DFMT_B5G6R5_UNORM, GL_RGB565, GL_SRGB8_EXT, GL_RGB8, - GL_RGB, GL_UNSIGNED_SHORT_5_6_5, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_SRGB_READ, - ARB_ES2_COMPATIBILITY, NULL}, - {WINED3DFMT_B5G5R5X1_UNORM, GL_RGB5, GL_RGB5, 0, - GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET, - WINED3D_GL_EXT_NONE, NULL}, - {WINED3DFMT_B5G5R5A1_UNORM, GL_RGB5_A1, GL_RGB5_A1, 0, - GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - WINED3D_GL_EXT_NONE, NULL}, - {WINED3DFMT_B4G4R4A4_UNORM, GL_RGBA4, GL_SRGB8_ALPHA8_EXT, 0, - GL_BGRA, GL_UNSIGNED_SHORT_4_4_4_4_REV, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_SRGB_READ, - WINED3D_GL_EXT_NONE, NULL}, - {WINED3DFMT_B2G3R3_UNORM, GL_R3_G3_B2, GL_R3_G3_B2, 0, - GL_RGB, GL_UNSIGNED_BYTE_3_3_2, 0, - WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - WINED3D_GL_EXT_NONE, NULL}, - {WINED3DFMT_R8_UNORM, GL_R8, GL_R8, 0, - GL_RED, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_A8_UNORM, GL_R8, GL_R8, 0, - GL_RED, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_A8_UNORM, GL_ALPHA8, GL_ALPHA8, 0, - GL_ALPHA, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET, - WINED3D_GL_LEGACY_CONTEXT, NULL}, - {WINED3DFMT_B4G4R4X4_UNORM, GL_RGB4, GL_RGB4, 0, - GL_BGRA, GL_UNSIGNED_SHORT_4_4_4_4_REV, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - WINED3D_GL_EXT_NONE, NULL}, - {WINED3DFMT_R10G10B10A2_UINT, GL_RGB10_A2UI, GL_RGB10_A2UI, 0, - GL_RGBA_INTEGER, GL_UNSIGNED_INT_2_10_10_10_REV, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RGB10_A2UI, NULL}, - {WINED3DFMT_R10G10B10A2_UNORM, GL_RGB10_A2, GL_RGB10_A2, 0, - GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET, - WINED3D_GL_EXT_NONE, NULL}, - {WINED3DFMT_R8G8B8A8_UNORM, GL_RGBA8, GL_SRGB8_ALPHA8_EXT, 0, - GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_SRGB_READ | WINED3D_FORMAT_CAP_SRGB_WRITE - | WINED3D_FORMAT_CAP_VTF, - WINED3D_GL_EXT_NONE, NULL}, - {WINED3DFMT_R8G8B8A8_UINT, GL_RGBA8UI, GL_RGBA8UI, 0, - GL_RGBA_INTEGER, GL_UNSIGNED_INT_8_8_8_8_REV, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RGB10_A2UI, NULL}, - {WINED3DFMT_R8G8B8A8_SINT, GL_RGBA8I, GL_RGBA8I, 0, - GL_RGBA_INTEGER, GL_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - EXT_TEXTURE_INTEGER, NULL}, - {WINED3DFMT_R8G8B8X8_UNORM, GL_RGB8, GL_RGB8, 0, - GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - WINED3D_GL_EXT_NONE, NULL}, - {WINED3DFMT_R16G16_UNORM, GL_RGB16, GL_RGB16, GL_RGBA16, - GL_RGB, GL_UNSIGNED_SHORT, 6, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - WINED3D_GL_EXT_NONE, convert_r16g16}, - {WINED3DFMT_R16G16_UNORM, GL_RG16, GL_RG16, 0, - GL_RG, GL_UNSIGNED_SHORT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_B10G10R10A2_UNORM, GL_RGB10_A2, GL_RGB10_A2, 0, - GL_BGRA, GL_UNSIGNED_INT_2_10_10_10_REV, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET, - WINED3D_GL_EXT_NONE, NULL}, - {WINED3DFMT_R16G16B16A16_UNORM, GL_RGBA16, GL_RGBA16, 0, - GL_RGBA, GL_UNSIGNED_SHORT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET, - WINED3D_GL_EXT_NONE, NULL}, - {WINED3DFMT_R8G8_UNORM, GL_RG8, GL_RG8, 0, - GL_RG, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_R8G8_UINT, GL_RG8UI, GL_RG8UI, 0, - GL_RG_INTEGER, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_R8G8_SINT, GL_RG8I, GL_RG8I, 0, - GL_RG_INTEGER, GL_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_R16G16B16A16_UINT, GL_RGBA16UI, GL_RGBA16UI, 0, - GL_RGBA_INTEGER, GL_UNSIGNED_SHORT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - EXT_TEXTURE_INTEGER, NULL}, - {WINED3DFMT_R16G16B16A16_SINT, GL_RGBA16I, GL_RGBA16I, 0, - GL_RGBA_INTEGER, GL_SHORT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - EXT_TEXTURE_INTEGER, NULL}, - {WINED3DFMT_R32G32_UINT, GL_RG32UI, GL_RG32UI, 0, - GL_RG_INTEGER, GL_UNSIGNED_INT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_R32G32_SINT, GL_RG32I, GL_RG32I, 0, - GL_RG_INTEGER, GL_INT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_R16G16_UINT, GL_RG16UI, GL_RG16UI, 0, - GL_RG_INTEGER, GL_UNSIGNED_SHORT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_R16G16_SINT, GL_RG16I, GL_RG16I, 0, - GL_RG_INTEGER, GL_SHORT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_R32_UINT, GL_R32UI, GL_R32UI, 0, - GL_RED_INTEGER, GL_UNSIGNED_INT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_R32_SINT, GL_R32I, GL_R32I, 0, - GL_RED_INTEGER, GL_INT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_R16_UNORM, GL_R16, GL_R16, 0, - GL_RED, GL_UNSIGNED_SHORT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_R16_UINT, GL_R16UI, GL_R16UI, 0, - GL_RED_INTEGER, GL_UNSIGNED_SHORT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_R16_SINT, GL_R16I, GL_R16I, 0, - GL_RED_INTEGER, GL_SHORT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_R8_UINT, GL_R8UI, GL_R8UI, 0, - GL_RED_INTEGER, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_R8_SINT, GL_R8I, GL_R8I, 0, - GL_RED_INTEGER, GL_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RG, NULL}, + { + .id = WINED3DFMT_B8G8R8_UNORM, + .internal = GL_RGB8, + .format = GL_BGR, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET, + }, + { + .id = WINED3DFMT_B8G8R8A8_UNORM, + .internal = GL_RGBA8, + .srgb_internal = GL_SRGB8_ALPHA8_EXT, + .format = GL_BGRA, + .type = GL_UNSIGNED_INT_8_8_8_8_REV, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_SRGB_READ | WINED3D_FORMAT_CAP_SRGB_WRITE + | WINED3D_FORMAT_CAP_VTF, + }, + { + .id = WINED3DFMT_B8G8R8X8_UNORM, + .internal = GL_RGB8, + .srgb_internal = GL_SRGB8_EXT, + .format = GL_BGRA, + .type = GL_UNSIGNED_INT_8_8_8_8_REV, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_SRGB_READ | WINED3D_FORMAT_CAP_SRGB_WRITE, + }, + { + .id = WINED3DFMT_B5G6R5_UNORM, + .internal = GL_RGB5, + .srgb_internal = GL_SRGB8_EXT, + .rt_internal = GL_RGB8, + .format = GL_RGB, + .type = GL_UNSIGNED_SHORT_5_6_5, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_SRGB_READ, + }, + { + .id = WINED3DFMT_B5G6R5_UNORM, + .internal = GL_RGB565, + .srgb_internal = GL_SRGB8_EXT, + .rt_internal = GL_RGB8, + .format = GL_RGB, + .type = GL_UNSIGNED_SHORT_5_6_5, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_SRGB_READ, + .extension = ARB_ES2_COMPATIBILITY, + }, + { + .id = WINED3DFMT_B5G5R5X1_UNORM, + .internal = GL_RGB5, + .format = GL_BGRA, + .type = GL_UNSIGNED_SHORT_1_5_5_5_REV, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET, + }, + { + .id = WINED3DFMT_B5G5R5A1_UNORM, + .internal = GL_RGB5_A1, + .format = GL_BGRA, + .type = GL_UNSIGNED_SHORT_1_5_5_5_REV, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + }, + { + .id = WINED3DFMT_B4G4R4A4_UNORM, + .internal = GL_RGBA4, + .srgb_internal = GL_SRGB8_ALPHA8_EXT, + .format = GL_BGRA, + .type = GL_UNSIGNED_SHORT_4_4_4_4_REV, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_SRGB_READ, + }, + { + .id = WINED3DFMT_B2G3R3_UNORM, + .internal = GL_R3_G3_B2, + .format = GL_RGB, + .type = GL_UNSIGNED_BYTE_3_3_2, + .caps = WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + }, + { + .id = WINED3DFMT_R8_UNORM, + .internal = GL_R8, + .format = GL_RED, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_VTF, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_A8_UNORM, + .internal = GL_R8, + .format = GL_RED, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_A8_UNORM, + .internal = GL_ALPHA8, + .format = GL_ALPHA, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = WINED3D_GL_LEGACY_CONTEXT, + }, + { + .id = WINED3DFMT_B4G4R4X4_UNORM, + .internal = GL_RGB4, + .format = GL_BGRA, + .type = GL_UNSIGNED_SHORT_4_4_4_4_REV, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + }, + { + .id = WINED3DFMT_R10G10B10A2_UINT, + .internal = GL_RGB10_A2UI, + .format = GL_RGBA_INTEGER, + .type = GL_UNSIGNED_INT_2_10_10_10_REV, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RGB10_A2UI, + }, + { + .id = WINED3DFMT_R10G10B10A2_UNORM, + .internal = GL_RGB10_A2, + .format = GL_RGBA, + .type = GL_UNSIGNED_INT_2_10_10_10_REV, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET, + }, + { + .id = WINED3DFMT_R8G8B8A8_UNORM, + .internal = GL_RGBA8, + .srgb_internal = GL_SRGB8_ALPHA8_EXT, + .format = GL_RGBA, + .type = GL_UNSIGNED_INT_8_8_8_8_REV, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_SRGB_READ | WINED3D_FORMAT_CAP_SRGB_WRITE + | WINED3D_FORMAT_CAP_VTF, + }, + { + .id = WINED3DFMT_R8G8B8A8_UINT, + .internal = GL_RGBA8UI, + .format = GL_RGBA_INTEGER, + .type = GL_UNSIGNED_INT_8_8_8_8_REV, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RGB10_A2UI, + }, + { + .id = WINED3DFMT_R8G8B8A8_SINT, + .internal = GL_RGBA8I, + .format = GL_RGBA_INTEGER, + .type = GL_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = EXT_TEXTURE_INTEGER, + }, + { + .id = WINED3DFMT_R8G8B8X8_UNORM, + .internal = GL_RGB8, + .format = GL_RGBA, + .type = GL_UNSIGNED_INT_8_8_8_8_REV, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + }, + { + .id = WINED3DFMT_R16G16_UNORM, + .internal = GL_RGB16, + .rt_internal = GL_RGBA16, + .format = GL_RGB, + .type = GL_UNSIGNED_SHORT, + .conv_byte_count = 6, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .upload = convert_r16g16, + }, + { + .id = WINED3DFMT_R16G16_UNORM, + .internal = GL_RG16, + .format = GL_RG, + .type = GL_UNSIGNED_SHORT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_B10G10R10A2_UNORM, + .internal = GL_RGB10_A2, + .format = GL_BGRA, + .type = GL_UNSIGNED_INT_2_10_10_10_REV, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET, + }, + { + .id = WINED3DFMT_R16G16B16A16_UNORM, + .internal = GL_RGBA16, + .format = GL_RGBA, + .type = GL_UNSIGNED_SHORT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET, + }, + { + .id = WINED3DFMT_R8G8_UNORM, + .internal = GL_RG8, + .format = GL_RG, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_R8G8_UINT, + .internal = GL_RG8UI, + .format = GL_RG_INTEGER, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_R8G8_SINT, + .internal = GL_RG8I, + .format = GL_RG_INTEGER, + .type = GL_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_R16G16B16A16_UINT, + .internal = GL_RGBA16UI, + .format = GL_RGBA_INTEGER, + .type = GL_UNSIGNED_SHORT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = EXT_TEXTURE_INTEGER, + }, + { + .id = WINED3DFMT_R16G16B16A16_SINT, + .internal = GL_RGBA16I, + .format = GL_RGBA_INTEGER, + .type = GL_SHORT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = EXT_TEXTURE_INTEGER, + }, + { + .id = WINED3DFMT_R32G32_UINT, + .internal = GL_RG32UI, + .format = GL_RG_INTEGER, + .type = GL_UNSIGNED_INT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_R32G32_SINT, + .internal = GL_RG32I, + .format = GL_RG_INTEGER, + .type = GL_INT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_R16G16_UINT, + .internal = GL_RG16UI, + .format = GL_RG_INTEGER, + .type = GL_UNSIGNED_SHORT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_R16G16_SINT, + .internal = GL_RG16I, + .format = GL_RG_INTEGER, + .type = GL_SHORT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_R32_UINT, + .internal = GL_R32UI, + .format = GL_RED_INTEGER, + .type = GL_UNSIGNED_INT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_R32_SINT, + .internal = GL_R32I, + .format = GL_RED_INTEGER, + .type = GL_INT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_R16_UNORM, + .internal = GL_R16, + .format = GL_RED, + .type = GL_UNSIGNED_SHORT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_R16_UINT, + .internal = GL_R16UI, + .format = GL_RED_INTEGER, + .type = GL_UNSIGNED_SHORT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_R16_SINT, + .internal = GL_R16I, + .format = GL_RED_INTEGER, + .type = GL_SHORT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_R8_UINT, + .internal = GL_R8UI, + .format = GL_RED_INTEGER, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_R8_SINT, + .internal = GL_R8I, + .format = GL_RED_INTEGER, + .type = GL_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RG, + }, /* Luminance */ - {WINED3DFMT_L8_UNORM, GL_LUMINANCE8, GL_SLUMINANCE8_EXT, 0, - GL_LUMINANCE, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_SRGB_READ, - WINED3D_GL_LEGACY_CONTEXT, NULL}, - {WINED3DFMT_L8_UNORM, GL_R8, GL_R8, 0, - GL_RED, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_L8A8_UNORM, GL_RG8, GL_RG8, 0, - GL_RG, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_L8A8_UNORM, GL_LUMINANCE8_ALPHA8, GL_SLUMINANCE8_ALPHA8_EXT, 0, - GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_SRGB_READ, - WINED3D_GL_LEGACY_CONTEXT, NULL}, - {WINED3DFMT_L4A4_UNORM, GL_RG8, GL_RG8, 0, - GL_RG, GL_UNSIGNED_BYTE, 2, - WINED3D_FORMAT_CAP_FILTERING, - ARB_TEXTURE_RG, convert_l4a4_unorm}, - {WINED3DFMT_L4A4_UNORM, GL_LUMINANCE4_ALPHA4, GL_LUMINANCE4_ALPHA4, 0, - GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 2, - WINED3D_FORMAT_CAP_FILTERING, - WINED3D_GL_LEGACY_CONTEXT, convert_l4a4_unorm}, - {WINED3DFMT_L16_UNORM, GL_R16, GL_R16, 0, - GL_RED, GL_UNSIGNED_SHORT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - ARB_TEXTURE_RG, NULL}, - {WINED3DFMT_L16_UNORM, GL_LUMINANCE16, GL_LUMINANCE16, 0, - GL_LUMINANCE, GL_UNSIGNED_SHORT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - WINED3D_GL_LEGACY_CONTEXT, NULL}, + { + .id = WINED3DFMT_L8_UNORM, + .internal = GL_LUMINANCE8, + .srgb_internal = GL_SLUMINANCE8_EXT, + .format = GL_LUMINANCE, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_SRGB_READ, + .extension = WINED3D_GL_LEGACY_CONTEXT, + }, + { + .id = WINED3DFMT_L8_UNORM, + .internal = GL_R8, + .format = GL_RED, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_L8A8_UNORM, + .internal = GL_RG8, + .format = GL_RG, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_L8A8_UNORM, + .internal = GL_LUMINANCE8_ALPHA8, + .srgb_internal = GL_SLUMINANCE8_ALPHA8_EXT, + .format = GL_LUMINANCE_ALPHA, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_SRGB_READ, + .extension = WINED3D_GL_LEGACY_CONTEXT, + }, + { + .id = WINED3DFMT_L4A4_UNORM, + .internal = GL_RG8, + .format = GL_RG, + .type = GL_UNSIGNED_BYTE, + .conv_byte_count = 2, + .caps = WINED3D_FORMAT_CAP_FILTERING, + .extension = ARB_TEXTURE_RG, + .upload = convert_l4a4_unorm, + }, + { + .id = WINED3DFMT_L4A4_UNORM, + .internal = GL_LUMINANCE4_ALPHA4, + .format = GL_LUMINANCE_ALPHA, + .type = GL_UNSIGNED_BYTE, + .conv_byte_count = 2, + .caps = WINED3D_FORMAT_CAP_FILTERING, + .extension = WINED3D_GL_LEGACY_CONTEXT, + .upload = convert_l4a4_unorm, + }, + { + .id = WINED3DFMT_L16_UNORM, + .internal = GL_R16, + .format = GL_RED, + .type = GL_UNSIGNED_SHORT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = ARB_TEXTURE_RG, + }, + { + .id = WINED3DFMT_L16_UNORM, + .internal = GL_LUMINANCE16, + .format = GL_LUMINANCE, + .type = GL_UNSIGNED_SHORT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = WINED3D_GL_LEGACY_CONTEXT, + }, /* Bump mapping stuff */ - {WINED3DFMT_R8G8_SNORM, GL_RGB8, GL_RGB8, 0, - GL_BGR, GL_UNSIGNED_BYTE, 3, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - WINED3D_GL_EXT_NONE, convert_r8g8_snorm}, - {WINED3DFMT_R8G8_SNORM, GL_DSDT8_NV, GL_DSDT8_NV, 0, - GL_DSDT_NV, GL_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - NV_TEXTURE_SHADER, NULL}, - {WINED3DFMT_R8G8_SNORM, GL_RG8_SNORM, GL_RG8_SNORM, 0, - GL_RG, GL_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET, - EXT_TEXTURE_SNORM, NULL}, - {WINED3DFMT_R5G5_SNORM_L6_UNORM, GL_RGB5, GL_RGB5, 0, - GL_RGB, GL_UNSIGNED_SHORT_5_6_5, 2, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - WINED3D_GL_EXT_NONE, convert_r5g5_snorm_l6_unorm}, - {WINED3DFMT_R5G5_SNORM_L6_UNORM, GL_DSDT8_MAG8_NV, GL_DSDT8_MAG8_NV, 0, - GL_DSDT_MAG_NV, GL_BYTE, 3, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - NV_TEXTURE_SHADER, convert_r5g5_snorm_l6_unorm_nv}, - {WINED3DFMT_R5G5_SNORM_L6_UNORM, GL_RGB8_SNORM, GL_RGB8_SNORM, 0, - GL_RGBA, GL_BYTE, 4, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - EXT_TEXTURE_SNORM, convert_r5g5_snorm_l6_unorm_ext}, - {WINED3DFMT_R8G8_SNORM_L8X8_UNORM, GL_RGB8, GL_RGB8, 0, - GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, 4, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - WINED3D_GL_EXT_NONE, convert_r8g8_snorm_l8x8_unorm}, - {WINED3DFMT_R8G8_SNORM_L8X8_UNORM, GL_DSDT8_MAG8_INTENSITY8_NV, GL_DSDT8_MAG8_INTENSITY8_NV, 0, - GL_DSDT_MAG_VIB_NV, GL_UNSIGNED_INT_8_8_S8_S8_REV_NV, 4, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - NV_TEXTURE_SHADER, convert_r8g8_snorm_l8x8_unorm_nv}, - {WINED3DFMT_R8G8B8A8_SNORM, GL_RGBA8, GL_RGBA8, 0, - GL_BGRA, GL_UNSIGNED_BYTE, 4, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - WINED3D_GL_EXT_NONE, convert_r8g8b8a8_snorm}, - {WINED3DFMT_R8G8B8A8_SNORM, GL_SIGNED_RGBA8_NV, GL_SIGNED_RGBA8_NV, 0, - GL_RGBA, GL_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - NV_TEXTURE_SHADER, NULL}, - {WINED3DFMT_R8G8B8A8_SNORM, GL_RGBA8_SNORM, GL_RGBA8_SNORM, 0, - GL_RGBA, GL_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET, - EXT_TEXTURE_SNORM, NULL}, - {WINED3DFMT_R16G16_SNORM, GL_RGB16, GL_RGB16, 0, - GL_BGR, GL_UNSIGNED_SHORT, 6, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - WINED3D_GL_EXT_NONE, convert_r16g16_snorm}, - {WINED3DFMT_R16G16_SNORM, GL_SIGNED_HILO16_NV, GL_SIGNED_HILO16_NV, 0, - GL_HILO_NV, GL_SHORT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - NV_TEXTURE_SHADER, NULL}, - {WINED3DFMT_R16G16_SNORM, GL_RG16_SNORM, GL_RG16_SNORM, 0, - GL_RG, GL_SHORT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET, - EXT_TEXTURE_SNORM, NULL}, - {WINED3DFMT_R16G16B16A16_SNORM, GL_RGBA16_SNORM, GL_RGBA16_SNORM, 0, - GL_RGBA, GL_SHORT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET, - EXT_TEXTURE_SNORM, NULL}, - {WINED3DFMT_R16_SNORM, GL_R16_SNORM, GL_R16_SNORM, 0, - GL_RED, GL_SHORT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET, - EXT_TEXTURE_SNORM, NULL}, - {WINED3DFMT_R8_SNORM, GL_R8_SNORM, GL_R8_SNORM, 0, - GL_RED, GL_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_RENDERTARGET, - EXT_TEXTURE_SNORM, NULL}, + { + .id = WINED3DFMT_R8G8_SNORM, + .internal = GL_RGB8, + .format = GL_BGR, + .type = GL_UNSIGNED_BYTE, + .conv_byte_count = 3, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .upload = convert_r8g8_snorm, + }, + { + .id = WINED3DFMT_R8G8_SNORM, + .internal = GL_DSDT8_NV, + .format = GL_DSDT_NV, + .type = GL_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = NV_TEXTURE_SHADER, + }, + { + .id = WINED3DFMT_R8G8_SNORM, + .internal = GL_RG8_SNORM, + .format = GL_RG, + .type = GL_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = EXT_TEXTURE_SNORM, + }, + { + .id = WINED3DFMT_R5G5_SNORM_L6_UNORM, + .internal = GL_RGB5, + .format = GL_RGB, + .type = GL_UNSIGNED_SHORT_5_6_5, + .conv_byte_count = 2, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .upload = convert_r5g5_snorm_l6_unorm, + }, + { + .id = WINED3DFMT_R5G5_SNORM_L6_UNORM, + .internal = GL_DSDT8_MAG8_NV, + .format = GL_DSDT_MAG_NV, + .type = GL_BYTE, + .conv_byte_count = 3, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = NV_TEXTURE_SHADER, + .upload = convert_r5g5_snorm_l6_unorm_nv, + }, + { + .id = WINED3DFMT_R5G5_SNORM_L6_UNORM, + .internal = GL_RGB8_SNORM, + .format = GL_RGBA, + .type = GL_BYTE, + .conv_byte_count = 4, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = EXT_TEXTURE_SNORM, + .upload = convert_r5g5_snorm_l6_unorm_ext, + }, + { + .id = WINED3DFMT_R8G8_SNORM_L8X8_UNORM, + .internal = GL_RGB8, + .format = GL_BGRA, + .type = GL_UNSIGNED_INT_8_8_8_8_REV, + .conv_byte_count = 4, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .upload = convert_r8g8_snorm_l8x8_unorm, + }, + { + .id = WINED3DFMT_R8G8_SNORM_L8X8_UNORM, + .internal = GL_DSDT8_MAG8_INTENSITY8_NV, + .format = GL_DSDT_MAG_VIB_NV, + .type = GL_UNSIGNED_INT_8_8_S8_S8_REV_NV, + .conv_byte_count = 4, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = NV_TEXTURE_SHADER, + .upload = convert_r8g8_snorm_l8x8_unorm_nv, + }, + { + .id = WINED3DFMT_R8G8B8A8_SNORM, + .internal = GL_RGBA8, + .format = GL_BGRA, + .type = GL_UNSIGNED_BYTE, + .conv_byte_count = 4, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .upload = convert_r8g8b8a8_snorm, + }, + { + .id = WINED3DFMT_R8G8B8A8_SNORM, + .internal = GL_SIGNED_RGBA8_NV, + .format = GL_RGBA, + .type = GL_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = NV_TEXTURE_SHADER, + }, + { + .id = WINED3DFMT_R8G8B8A8_SNORM, + .internal = GL_RGBA8_SNORM, + .format = GL_RGBA, + .type = GL_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = EXT_TEXTURE_SNORM, + }, + { + .id = WINED3DFMT_R16G16_SNORM, + .internal = GL_RGB16, + .format = GL_BGR, + .type = GL_UNSIGNED_SHORT, + .conv_byte_count = 6, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .upload = convert_r16g16_snorm, + }, + { + .id = WINED3DFMT_R16G16_SNORM, + .internal = GL_SIGNED_HILO16_NV, + .format = GL_HILO_NV, + .type = GL_SHORT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = NV_TEXTURE_SHADER, + }, + { + .id = WINED3DFMT_R16G16_SNORM, + .internal = GL_RG16_SNORM, + .format = GL_RG, + .type = GL_SHORT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = EXT_TEXTURE_SNORM, + }, + { + .id = WINED3DFMT_R16G16B16A16_SNORM, + .internal = GL_RGBA16_SNORM, + .format = GL_RGBA, + .type = GL_SHORT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = EXT_TEXTURE_SNORM, + }, + { + .id = WINED3DFMT_R16_SNORM, + .internal = GL_R16_SNORM, + .format = GL_RED, + .type = GL_SHORT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = EXT_TEXTURE_SNORM, + }, + { + .id = WINED3DFMT_R8_SNORM, + .internal = GL_R8_SNORM, + .format = GL_RED, + .type = GL_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = EXT_TEXTURE_SNORM, + }, /* Depth stencil formats */ - {WINED3DFMT_D16_LOCKABLE, GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT, 0, - GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, 0, - WINED3D_FORMAT_CAP_DEPTH_STENCIL, - WINED3D_GL_EXT_NONE, NULL}, - {WINED3DFMT_D16_LOCKABLE, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT16, 0, - GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_DEPTH_STENCIL | WINED3D_FORMAT_CAP_SHADOW, - ARB_DEPTH_TEXTURE, NULL}, - {WINED3DFMT_D24_UNORM_S8_UINT, GL_DEPTH_COMPONENT24_ARB, GL_DEPTH_COMPONENT24_ARB, 0, - GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_DEPTH_STENCIL | WINED3D_FORMAT_CAP_SHADOW, - ARB_DEPTH_TEXTURE, NULL}, - {WINED3DFMT_D24_UNORM_S8_UINT, GL_DEPTH24_STENCIL8, GL_DEPTH24_STENCIL8, 0, - GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_DEPTH_STENCIL | WINED3D_FORMAT_CAP_SHADOW, - EXT_PACKED_DEPTH_STENCIL, NULL}, - {WINED3DFMT_X8D24_UNORM, GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT, 0, - GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, 4, - WINED3D_FORMAT_CAP_DEPTH_STENCIL, - WINED3D_GL_EXT_NONE, x8_d24_unorm_upload, x8_d24_unorm_download}, - {WINED3DFMT_X8D24_UNORM, GL_DEPTH_COMPONENT24_ARB, GL_DEPTH_COMPONENT24_ARB, 0, - GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, 4, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_DEPTH_STENCIL | WINED3D_FORMAT_CAP_SHADOW, - ARB_DEPTH_TEXTURE, x8_d24_unorm_upload, x8_d24_unorm_download}, - {WINED3DFMT_D16_UNORM, GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT, 0, - GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, 0, - WINED3D_FORMAT_CAP_DEPTH_STENCIL, - WINED3D_GL_EXT_NONE, NULL}, - {WINED3DFMT_D16_UNORM, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT16, 0, - GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_DEPTH_STENCIL | WINED3D_FORMAT_CAP_SHADOW, - ARB_DEPTH_TEXTURE, NULL}, - {WINED3DFMT_D32_FLOAT, GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT32F, 0, - GL_DEPTH_COMPONENT, GL_FLOAT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_DEPTH_STENCIL | WINED3D_FORMAT_CAP_SHADOW, - ARB_DEPTH_BUFFER_FLOAT, NULL}, - {WINED3DFMT_D32_FLOAT_S8X24_UINT, GL_DEPTH32F_STENCIL8, GL_DEPTH32F_STENCIL8, 0, - GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_DEPTH_STENCIL | WINED3D_FORMAT_CAP_SHADOW, - ARB_DEPTH_BUFFER_FLOAT, NULL}, - {WINED3DFMT_S8_UINT_D24_FLOAT, GL_DEPTH32F_STENCIL8, GL_DEPTH32F_STENCIL8, 0, - GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, 8, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_DEPTH_STENCIL | WINED3D_FORMAT_CAP_SHADOW, - ARB_DEPTH_BUFFER_FLOAT, convert_s8_uint_d24_float}, - {WINED3DFMT_R32G32B32A32_UINT, GL_RGBA32UI, GL_RGBA32UI, 0, - GL_RGBA_INTEGER, GL_UNSIGNED_INT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - EXT_TEXTURE_INTEGER, NULL}, - {WINED3DFMT_R32G32B32A32_SINT, GL_RGBA32I, GL_RGBA32I, 0, - GL_RGBA_INTEGER, GL_INT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, - EXT_TEXTURE_INTEGER, NULL}, + { + .id = WINED3DFMT_D16_LOCKABLE, + .internal = GL_DEPTH_COMPONENT, + .format = GL_DEPTH_COMPONENT, + .type = GL_UNSIGNED_SHORT, + .caps = WINED3D_FORMAT_CAP_DEPTH_STENCIL, + }, + { + .id = WINED3DFMT_D16_LOCKABLE, + .internal = GL_DEPTH_COMPONENT16, + .format = GL_DEPTH_COMPONENT, + .type = GL_UNSIGNED_SHORT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_DEPTH_STENCIL | WINED3D_FORMAT_CAP_SHADOW, + .extension = ARB_DEPTH_TEXTURE, + }, + { + .id = WINED3DFMT_D24_UNORM_S8_UINT, + .internal = GL_DEPTH_COMPONENT24_ARB, + .format = GL_DEPTH_COMPONENT, + .type = GL_UNSIGNED_INT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_DEPTH_STENCIL | WINED3D_FORMAT_CAP_SHADOW, + .extension = ARB_DEPTH_TEXTURE, + }, + { + .id = WINED3DFMT_D24_UNORM_S8_UINT, + .internal = GL_DEPTH24_STENCIL8, + .format = GL_DEPTH_STENCIL, + .type = GL_UNSIGNED_INT_24_8, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_DEPTH_STENCIL | WINED3D_FORMAT_CAP_SHADOW, + .extension = EXT_PACKED_DEPTH_STENCIL, + }, + { + .id = WINED3DFMT_X8D24_UNORM, + .internal = GL_DEPTH_COMPONENT, + .format = GL_DEPTH_COMPONENT, + .type = GL_UNSIGNED_INT, + .conv_byte_count = 4, + .caps = WINED3D_FORMAT_CAP_DEPTH_STENCIL, + .upload = x8_d24_unorm_upload, + .download = x8_d24_unorm_download, + }, + { + .id = WINED3DFMT_X8D24_UNORM, + .internal = GL_DEPTH_COMPONENT24_ARB, + .format = GL_DEPTH_COMPONENT, + .type = GL_UNSIGNED_INT, + .conv_byte_count = 4, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_DEPTH_STENCIL | WINED3D_FORMAT_CAP_SHADOW, + .extension = ARB_DEPTH_TEXTURE, + .upload = x8_d24_unorm_upload, + .download = x8_d24_unorm_download, + }, + { + .id = WINED3DFMT_D16_UNORM, + .internal = GL_DEPTH_COMPONENT, + .format = GL_DEPTH_COMPONENT, + .type = GL_UNSIGNED_SHORT, + .caps = WINED3D_FORMAT_CAP_DEPTH_STENCIL, + }, + { + .id = WINED3DFMT_D16_UNORM, + .internal = GL_DEPTH_COMPONENT16, + .format = GL_DEPTH_COMPONENT, + .type = GL_UNSIGNED_SHORT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_DEPTH_STENCIL | WINED3D_FORMAT_CAP_SHADOW, + .extension = ARB_DEPTH_TEXTURE, + }, + { + .id = WINED3DFMT_D32_FLOAT, + .internal = GL_DEPTH_COMPONENT32F, + .format = GL_DEPTH_COMPONENT, + .type = GL_FLOAT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_DEPTH_STENCIL | WINED3D_FORMAT_CAP_SHADOW, + .extension = ARB_DEPTH_BUFFER_FLOAT, + }, + { + .id = WINED3DFMT_D32_FLOAT_S8X24_UINT, + .internal = GL_DEPTH32F_STENCIL8, + .format = GL_DEPTH_STENCIL, + .type = GL_FLOAT_32_UNSIGNED_INT_24_8_REV, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_DEPTH_STENCIL | WINED3D_FORMAT_CAP_SHADOW, + .extension = ARB_DEPTH_BUFFER_FLOAT, + }, + { + .id = WINED3DFMT_S8_UINT_D24_FLOAT, + .internal = GL_DEPTH32F_STENCIL8, + .format = GL_DEPTH_STENCIL, + .type = GL_FLOAT_32_UNSIGNED_INT_24_8_REV, + .conv_byte_count = 8, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_DEPTH_STENCIL | WINED3D_FORMAT_CAP_SHADOW, + .extension = ARB_DEPTH_BUFFER_FLOAT, + .upload = convert_s8_uint_d24_float, + }, + { + .id = WINED3DFMT_R32G32B32A32_UINT, + .internal = GL_RGBA32UI, + .format = GL_RGBA_INTEGER, + .type = GL_UNSIGNED_INT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = EXT_TEXTURE_INTEGER, + }, + { + .id = WINED3DFMT_R32G32B32A32_SINT, + .internal = GL_RGBA32I, + .format = GL_RGBA_INTEGER, + .type = GL_INT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET, + .extension = EXT_TEXTURE_INTEGER, + }, /* Vendor-specific formats */ - {WINED3DFMT_ATI1N, GL_COMPRESSED_RED_RGTC1, GL_COMPRESSED_RED_RGTC1, 0, - GL_RED, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - ARB_TEXTURE_COMPRESSION_RGTC, NULL}, - {WINED3DFMT_ATI2N, GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI, GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI, 0, - GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - ATI_TEXTURE_COMPRESSION_3DC, NULL}, - {WINED3DFMT_ATI2N, GL_COMPRESSED_RG_RGTC2, GL_COMPRESSED_RG_RGTC2, 0, - GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - EXT_TEXTURE_COMPRESSION_RGTC, NULL}, - {WINED3DFMT_ATI2N, GL_COMPRESSED_RG_RGTC2, GL_COMPRESSED_RG_RGTC2, 0, - GL_RG, GL_UNSIGNED_BYTE, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - ARB_TEXTURE_COMPRESSION_RGTC, NULL}, - {WINED3DFMT_INTZ, GL_DEPTH24_STENCIL8, GL_DEPTH24_STENCIL8, 0, - GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING - | WINED3D_FORMAT_CAP_DEPTH_STENCIL, - EXT_PACKED_DEPTH_STENCIL, NULL}, - {WINED3DFMT_NULL, 0, 0, 0, - GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_FBO_ATTACHABLE, - ARB_FRAMEBUFFER_OBJECT, NULL}, + { + .id = WINED3DFMT_ATI1N, + .internal = GL_COMPRESSED_RED_RGTC1, + .format = GL_RED, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = ARB_TEXTURE_COMPRESSION_RGTC, + }, + { + .id = WINED3DFMT_ATI2N, + .internal = GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI, + .format = GL_LUMINANCE_ALPHA, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = ATI_TEXTURE_COMPRESSION_3DC, + }, + { + .id = WINED3DFMT_ATI2N, + .internal = GL_COMPRESSED_RG_RGTC2, + .format = GL_LUMINANCE_ALPHA, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = EXT_TEXTURE_COMPRESSION_RGTC, + }, + { + .id = WINED3DFMT_ATI2N, + .internal = GL_COMPRESSED_RG_RGTC2, + .format = GL_RG, + .type = GL_UNSIGNED_BYTE, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = ARB_TEXTURE_COMPRESSION_RGTC, + }, + { + .id = WINED3DFMT_INTZ, + .internal = GL_DEPTH24_STENCIL8, + .format = GL_DEPTH_STENCIL, + .type = GL_UNSIGNED_INT_24_8, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING + | WINED3D_FORMAT_CAP_DEPTH_STENCIL, + .extension = EXT_PACKED_DEPTH_STENCIL, + }, + { + .id = WINED3DFMT_NULL, + .internal = 0, + .format = GL_RGBA, + .type = GL_UNSIGNED_INT_8_8_8_8_REV, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_RENDERTARGET | WINED3D_FORMAT_CAP_FBO_ATTACHABLE, + .extension = ARB_FRAMEBUFFER_OBJECT, + }, /* DirectX 10 HDR formats */ - {WINED3DFMT_R9G9B9E5_SHAREDEXP, GL_RGB9_E5_EXT, GL_RGB9_E5_EXT, 0, - GL_RGB, GL_UNSIGNED_INT_5_9_9_9_REV_EXT, 0, - WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, - EXT_TEXTURE_SHARED_EXPONENT, NULL}, + { + .id = WINED3DFMT_R9G9B9E5_SHAREDEXP, + .internal = GL_RGB9_E5_EXT, + .format = GL_RGB, + .type = GL_UNSIGNED_INT_5_9_9_9_REV_EXT, + .caps = WINED3D_FORMAT_CAP_TEXTURE | WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING | WINED3D_FORMAT_CAP_FILTERING, + .extension = EXT_TEXTURE_SHARED_EXPONENT, + }, };
static void query_format_cap(struct wined3d_gl_info *gl_info, struct wined3d_format_gl *format, @@ -1334,7 +1867,8 @@ bool adapter_gl_init_format_texture_info(struct wined3d_adapter *adapter, struct continue;
format->internal = info->internal; - format->srgb_internal = info->srgb_internal; + if (!(format->srgb_internal = info->srgb_internal)) + format->srgb_internal = format->internal; format->rt_internal = info->rt_internal; format->format = info->format; format->type = info->type;