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