glx: Retrieve the value of RENDER_TYPE from GLX attribs array
authorTomasz Lis <tomasz.lis@intel.com>
Wed, 17 Jul 2013 11:49:15 +0000 (13:49 +0200)
committerIan Romanick <ian.d.romanick@intel.com>
Thu, 18 Jul 2013 23:03:42 +0000 (16:03 -0700)
Make sure that context creation routines are provided with the value of
RENDER_TYPE retrieved from GLX attribs.

v2 (idr): Minor formatting changes.  Change type of
dri2_convert_glx_attribs render_type parameter to uint32_t to silence
some GCC warnings.

Signed-off-by: Tomasz Lis <tomasz.lis@intel.com>
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/glx/dri2_glx.c
src/glx/dri_common.c
src/glx/dri_common.h
src/glx/drisw_glx.c

index cc75b91d12ac909ea3f1be7ed319e1cb5804442a..9581bff02dcc739c13455acd4d07bfb07d38ea4b 100644 (file)
@@ -273,8 +273,8 @@ dri2_create_context_attribs(struct glx_screen *base,
    /* Remap the GLX tokens to DRI2 tokens.
     */
    if (!dri2_convert_glx_attribs(num_attribs, attribs,
-                                &major_ver, &minor_ver, &flags, &api, &reset,
-                                 error))
+                                 &major_ver, &minor_ver, &renderType, &flags,
+                                 &api, &reset, error))
       goto error_exit;
 
    if (shareList) {
index 1bf20ec949d81e519e87540d28319e358177fa29..32625e83d2543ca8c0a898fe3cd7718edda8ea01 100644 (file)
@@ -456,14 +456,13 @@ driReleaseDrawables(struct glx_context *gc)
 
 _X_HIDDEN bool
 dri2_convert_glx_attribs(unsigned num_attribs, const uint32_t *attribs,
-                        unsigned *major_ver, unsigned *minor_ver,
-                        uint32_t *flags, unsigned *api, int *reset,
-                         unsigned *error)
+                         unsigned *major_ver, unsigned *minor_ver,
+                         uint32_t *render_type, uint32_t *flags, unsigned *api,
+                         int *reset, unsigned *error)
 {
    unsigned i;
    bool got_profile = false;
    uint32_t profile;
-   int render_type = GLX_RGBA_TYPE;
 
    if (num_attribs == 0) {
       *api = __DRI_API_OPENGL;
@@ -479,6 +478,7 @@ dri2_convert_glx_attribs(unsigned num_attribs, const uint32_t *attribs,
 
    *major_ver = 1;
    *minor_ver = 0;
+   *render_type = GLX_RGBA_TYPE;
    *reset = __DRI_CTX_RESET_NO_NOTIFICATION;
 
    for (i = 0; i < num_attribs; i++) {
@@ -497,7 +497,7 @@ dri2_convert_glx_attribs(unsigned num_attribs, const uint32_t *attribs,
         got_profile = true;
         break;
       case GLX_RENDER_TYPE:
-        render_type = attribs[i * 2 + 1];
+         *render_type = attribs[i * 2 + 1];
         break;
       case GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB:
          switch (attribs[i * 2 + 1]) {
@@ -568,7 +568,7 @@ dri2_convert_glx_attribs(unsigned num_attribs, const uint32_t *attribs,
       return false;
    }
 
-   if (*major_ver >= 3 && render_type == GLX_COLOR_INDEX_TYPE) {
+   if (*major_ver >= 3 && *render_type == GLX_COLOR_INDEX_TYPE) {
       *error = __DRI_CTX_ERROR_BAD_FLAG;
       return false;
    }
index 93cd744b1f2e26b03cf0c1b2c83e6e4210619954..2bbffa9ffbea4b97e5c986a62d1f06f33b28212a 100644 (file)
@@ -71,8 +71,8 @@ extern void *driOpenDriver(const char *driverName);
 
 extern bool
 dri2_convert_glx_attribs(unsigned num_attribs, const uint32_t *attribs,
-                        unsigned *major_ver, unsigned *minor_ver,
-                        uint32_t *flags, unsigned *api, int *reset,
-                        unsigned *error);
+                         unsigned *major_ver, unsigned *minor_ver,
+                         uint32_t *render_type, uint32_t *flags, unsigned *api,
+                         int *reset, unsigned *error);
 
 #endif /* _DRI_COMMON_H */
index 80ddf9cf753c6ae57ae051fab4fc268a7eb88e06..2c3e8b5f3ba59f7a7bc2c8154fee7a9bb70f2747 100644 (file)
@@ -447,8 +447,8 @@ drisw_create_context_attribs(struct glx_screen *base,
    /* Remap the GLX tokens to DRI2 tokens.
     */
    if (!dri2_convert_glx_attribs(num_attribs, attribs,
-                                &major_ver, &minor_ver, &flags, &api, &reset,
-                                error))
+                                 &major_ver, &minor_ver, &renderType, &flags,
+                                 &api, &reset, error))
       return NULL;
 
    if (reset != __DRI_CTX_RESET_NO_NOTIFICATION)