Phil Costin : wined3d:
Add GL_EXT_texture_sRGB constants and corresponding CheckDeviceFormat
query .
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Jun 7 07:20:24 CDT 2007
Module: wine
Branch: master
Commit: 3650e31e85d547b43aa181d9e0be5a21e72c66ca
URL: http://source.winehq.org/git/wine.git/?a=commit;h=3650e31e85d547b43aa181d9e0be5a21e72c66ca
Author: Phil Costin <philcostin at hotmail.com>
Date: Wed Jun 6 23:03:47 2007 +0000
wined3d: Add GL_EXT_texture_sRGB constants and corresponding CheckDeviceFormat query.
---
dlls/wined3d/directx.c | 24 ++++++++++++++++++++++++
include/wine/wined3d_gl.h | 21 +++++++++++++++++++++
2 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 0832b90..0446179 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -718,6 +718,9 @@ BOOL IWineD3DImpl_FillGLCaps(IWineD3D *iface, Display* display) {
} else if (strcmp(ThisExtn, "GL_EXT_texture_env_dot3") == 0) {
TRACE_(d3d_caps)(" FOUND: EXT Dot3 support\n");
gl_info->supported[EXT_TEXTURE_ENV_DOT3] = TRUE;
+ } else if (strcmp(ThisExtn, "GL_EXT_texture_sRGB") == 0) {
+ TRACE_(d3d_caps)(" FOUND: EXT sRGB support\n");
+ gl_info->supported[EXT_TEXTURE_SRGB] = TRUE;
} else if (strcmp(ThisExtn, "GL_EXT_texture_filter_anisotropic") == 0) {
gl_info->supported[EXT_TEXTURE_FILTER_ANISOTROPIC] = TRUE;
glGetIntegerv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &gl_max);
@@ -1726,6 +1729,27 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
}
}
+ /* Check for supported sRGB formats (Texture loading and framebuffer) */
+ if (GL_SUPPORT(EXT_TEXTURE_SRGB) && (Usage & WINED3DUSAGE_QUERY_SRGBREAD)) {
+ switch (CheckFormat) {
+ case WINED3DFMT_A8R8G8B8:
+ case WINED3DFMT_X8R8G8B8:
+ case WINED3DFMT_L8:
+ case WINED3DFMT_A8L8:
+ case WINED3DFMT_DXT1:
+ case WINED3DFMT_DXT2:
+ case WINED3DFMT_DXT3:
+ case WINED3DFMT_DXT4:
+ case WINED3DFMT_DXT5:
+ TRACE_(d3d_caps)("[OK]\n");
+ return WINED3D_OK;
+
+ default:
+ TRACE_(d3d_caps)("[FAILED] Gamma texture format %s not supported.\n", debug_d3dformat(CheckFormat));
+ return WINED3DERR_NOTAVAILABLE;
+ }
+ }
+
if (GL_SUPPORT(ARB_TEXTURE_FLOAT)) {
BOOL half_pixel_support = GL_SUPPORT(ARB_HALF_FLOAT_PIXEL);
diff --git a/include/wine/wined3d_gl.h b/include/wine/wined3d_gl.h
index b8a0715..bcaf666 100644
--- a/include/wine/wined3d_gl.h
+++ b/include/wine/wined3d_gl.h
@@ -520,6 +520,26 @@ typedef void (APIENTRY * PGLFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint leve
#define GL_DOT3_RGB_EXT 0x8740
#define GL_DOT3_RGBA_EXT 0x8741
#endif
+/* GL_EXT_texture_sRGB */
+#ifndef GL_EXT_texture_sRGB
+#define GL_EXT_texture_sRGB 1
+#define GL_SRGB_EXT 0x8C40
+#define GL_SRGB8_EXT 0x8C41
+#define GL_SRGB_ALPHA_EXT 0x8C42
+#define GL_SRGB8_ALPHA8_EXT 0x8C43
+#define GL_SLUMINANCE_ALPHA_EXT 0x8C44
+#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45
+#define GL_SLUMINANCE_EXT 0x8C46
+#define GL_SLUMINANCE8_EXT 0x8C47
+#define GL_COMPRESSED_SRGB_EXT 0x8C48
+#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49
+#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A
+#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B
+#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
+#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
+#endif
/* GL_ARB_texture_float */
#ifndef GL_ARB_texture_float
#define GL_ARB_texture_float 1
@@ -1541,6 +1561,7 @@ typedef enum _GL_SupportedExt {
EXT_TEXTURE_ENV_ADD,
EXT_TEXTURE_ENV_COMBINE,
EXT_TEXTURE_ENV_DOT3,
+ EXT_TEXTURE_SRGB,
EXT_VERTEX_WEIGHTING,
/* NVIDIA */
NV_FOG_DISTANCE,
More information about the wine-cvs
mailing list