Browse Source

glx: Retrieve the value of RENDER_TYPE from GLX attribs array

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
Tomasz Lis 12 years ago
parent
commit
a92cd5b245
4 changed files with 13 additions and 13 deletions
  1. 2
    2
      src/glx/dri2_glx.c
  2. 6
    6
      src/glx/dri_common.c
  3. 3
    3
      src/glx/dri_common.h
  4. 2
    2
      src/glx/drisw_glx.c

+ 2
- 2
src/glx/dri2_glx.c View 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) {

+ 6
- 6
src/glx/dri_common.c View 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;
}

+ 3
- 3
src/glx/dri_common.h View 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 */

+ 2
- 2
src/glx/drisw_glx.c View 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)

Loading…
Cancel
Save