FBConfig support for EXT_tfp
authorDavid Reveman <c99drn@cs.umu.se>
Tue, 11 Apr 2006 12:21:48 +0000 (12:21 +0000)
committerDavid Reveman <c99drn@cs.umu.se>
Tue, 11 Apr 2006 12:21:48 +0000 (12:21 +0000)
include/GL/internal/glcore.h
src/glx/x11/glxext.c
src/mesa/drivers/dri/common/glcontextmodes.c

index 48748d9..b2224b7 100644 (file)
@@ -137,6 +137,13 @@ typedef struct __GLcontextModesRec {
     GLint swapMethod;
 
     GLint screen;
+
+    /* EXT_texture_from_pixmap */
+    GLint bindToTextureRgb;
+    GLint bindToTextureRgba;
+    GLint bindToMipmapTexture;
+    GLint bindToTextureTargets;
+    GLint yInverted;
 } __GLcontextModes;
 
 /* Several fields of __GLcontextModes can take these as values.  Since
@@ -166,6 +173,17 @@ typedef struct __GLcontextModesRec {
 #define GLX_PIXMAP_BIT                     0x00000002
 #define GLX_PBUFFER_BIT                    0x00000004
 
+#define GLX_Y_INVERTED_EXT                  0x6009
+#define GLX_BIND_TO_TEXTURE_RGB_EXT         0x600A
+#define GLX_BIND_TO_TEXTURE_RGBA_EXT        0x600B
+#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT      0x600C
+#define GLX_BIND_TO_TEXTURE_TARGETS_EXT     0x600D
+
+#define GLX_TEXTURE_1D_BIT_EXT             0x00000001
+#define GLX_TEXTURE_2D_BIT_EXT             0x00000002
+#define GLX_TEXTURE_RECTANGLE_BIT_EXT      0x00000004
+
+
 /************************************************************************/
 
 /*
index 14d5ffa..d687a6f 100644 (file)
@@ -595,6 +595,21 @@ __glXInitializeVisualConfigFromTags( __GLcontextModes *config, int count,
          case GLX_SAMPLES_SGIS:
            config->samples = *bp++;
            break;
+       case GLX_BIND_TO_TEXTURE_RGB_EXT:
+           config->bindToTextureRgb = *bp++;
+           break;
+       case GLX_BIND_TO_TEXTURE_RGBA_EXT:
+           config->bindToTextureRgba = *bp++;
+           break;
+       case GLX_BIND_TO_MIPMAP_TEXTURE_EXT:
+           config->bindToMipmapTexture = *bp++;
+           break;
+       case GLX_BIND_TO_TEXTURE_TARGETS_EXT:
+           config->bindToTextureTargets = *bp++;
+           break;
+       case GLX_Y_INVERTED_EXT:
+           config->yInverted = *bp++;
+           break;
          case None:
            i = count;
            break;
index f9e6715..edb0446 100644 (file)
@@ -182,6 +182,15 @@ _gl_copy_visual_to_context_mode( __GLcontextModes * mode,
     mode->transparentIndex = config->transparentIndex;
 
     mode->swapMethod = GLX_SWAP_UNDEFINED_OML;
+
+    mode->bindToTextureRgb = (mode->rgbMode) ? GL_TRUE : GL_FALSE;
+    mode->bindToTextureRgba = (mode->rgbMode && mode->alphaBits) ?
+       GL_TRUE : GL_FALSE;
+    mode->bindToMipmapTexture = mode->rgbMode ? GL_TRUE : GL_FALSE;
+    mode->bindToTextureTargets = mode->rgbMode ?
+       GLX_TEXTURE_1D_BIT_EXT | GLX_TEXTURE_2D_BIT_EXT |
+       GLX_TEXTURE_RECTANGLE_BIT_EXT : 0;
+    mode->yInverted = GL_FALSE;
 }
 
 
@@ -313,6 +322,21 @@ _gl_get_context_mode_data(const __GLcontextModes *mode, int attribute,
       case GLX_SAMPLES_SGIS:
        *value_return = mode->samples;
        return 0;
+      case GLX_BIND_TO_TEXTURE_RGB_EXT:
+       *value_return = mode->bindToTextureRgb;
+       return 0;
+      case GLX_BIND_TO_TEXTURE_RGBA_EXT:
+       *value_return = mode->bindToTextureRgba;
+       return 0;
+      case GLX_BIND_TO_MIPMAP_TEXTURE_EXT:
+       *value_return = mode->bindToMipmapTexture;
+       return 0;
+      case GLX_BIND_TO_TEXTURE_TARGETS_EXT:
+       *value_return = mode->bindToTextureTargets;
+       return 0;
+      case GLX_Y_INVERTED_EXT:
+       *value_return = mode->yInverted;
+       return 0;
 
       /* Applications are NOT allowed to query GLX_VISUAL_SELECT_GROUP_SGIX.
        * It is ONLY for communication between the GLX client and the GLX
@@ -383,6 +407,11 @@ _gl_context_modes_create( unsigned count, size_t minimum_size )
       (*next)->xRenderable = GLX_DONT_CARE;
       (*next)->fbconfigID = GLX_DONT_CARE;
       (*next)->swapMethod = GLX_SWAP_UNDEFINED_OML;
+      (*next)->bindToTextureRgb = GLX_DONT_CARE;
+      (*next)->bindToTextureRgba = GLX_DONT_CARE;
+      (*next)->bindToMipmapTexture = GLX_DONT_CARE;
+      (*next)->bindToTextureTargets = 0;
+      (*next)->yInverted = GLX_DONT_CARE;
 
       next = & ((*next)->next);
    }
@@ -495,5 +524,10 @@ _gl_context_modes_are_same( const __GLcontextModes * a,
            (a->maxPbufferPixels == b->maxPbufferPixels) &&
            (a->optimalPbufferWidth == b->optimalPbufferWidth) &&
            (a->optimalPbufferHeight == b->optimalPbufferHeight) &&
-           (a->swapMethod == b->swapMethod) );
+           (a->swapMethod == b->swapMethod) &&
+           (a->bindToTextureRgb == b->bindToTextureRgb) &&
+           (a->bindToTextureRgba == b->bindToTextureRgba) &&
+           (a->bindToMipmapTexture == b->bindToMipmapTexture) &&
+           (a->bindToTextureTargets == b->bindToTextureTargets) &&
+           (a->yInverted == b->yInverted) );
 }