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>tags/mesa-9.2-rc1
@@ -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) { |
@@ -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; | |||
} |
@@ -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 */ |
@@ -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) |