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>
This commit is contained in:
@@ -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)
|
||||
|
Reference in New Issue
Block a user