glx: Store the value of renderType while creating context

Make sure that renderType property value is stored in GLX context while
it's being created.  Further patches will be provided to make the value
correspond to fbconfig's renderType.

v2 (idr): Move a hunk from the next patch to this patch to prevent a
build break.

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:
Tomasz Lis
2013-07-17 13:49:14 +02:00
committed by Ian Romanick
parent 7791c9869b
commit 36259a16fe
4 changed files with 17 additions and 2 deletions

View File

@@ -226,6 +226,8 @@ dri2_create_context(struct glx_screen *base,
return NULL;
}
pcp->base.renderType = renderType;
pcp->driContext =
(*psc->dri2->createNewContext) (psc->driScreen,
config->driConfig, shared, pcp);
@@ -256,6 +258,7 @@ dri2_create_context_attribs(struct glx_screen *base,
uint32_t minor_ver = 1;
uint32_t major_ver = 2;
uint32_t renderType = GLX_RGBA_TYPE;
uint32_t flags = 0;
unsigned api;
int reset = __DRI_CTX_RESET_NO_NOTIFICATION;
@@ -311,6 +314,11 @@ dri2_create_context_attribs(struct glx_screen *base,
ctx_attribs[num_ctx_attribs++] = flags;
}
/* The renderType is retrieved from attribs, or set to default
* of GLX_RGBA_TYPE.
*/
pcp->base.renderType = renderType;
pcp->driContext =
(*psc->dri2->createContextAttribs) (psc->driScreen,
api,

View File

@@ -602,6 +602,8 @@ dri_create_context(struct glx_screen *base,
return NULL;
}
pcp->base.renderType = renderType;
if (!XF86DRICreateContextWithConfig(psc->base.dpy, psc->base.scr,
config->base.visualID,
&pcp->hwContextID, &hwContext)) {

View File

@@ -401,6 +401,8 @@ drisw_create_context(struct glx_screen *base,
return NULL;
}
pcp->base.renderType = renderType;
pcp->driContext =
(*psc->core->createNewContext) (psc->driScreen,
config->driConfig, shared, pcp);
@@ -429,6 +431,7 @@ drisw_create_context_attribs(struct glx_screen *base,
uint32_t minor_ver = 1;
uint32_t major_ver = 0;
uint32_t renderType = GLX_RGBA_TYPE;
uint32_t flags = 0;
unsigned api;
int reset = __DRI_CTX_RESET_NO_NOTIFICATION;
@@ -479,6 +482,8 @@ drisw_create_context_attribs(struct glx_screen *base,
ctx_attribs[num_ctx_attribs++] = flags;
}
pcp->base.renderType = renderType;
pcp->driContext =
(*psc->swrast->createContextAttribs) (psc->driScreen,
api,

View File

@@ -354,7 +354,7 @@ glXCreateContext(Display * dpy, XVisualInfo * vis,
GLXContext shareList, Bool allowDirect)
{
struct glx_config *config = NULL;
int renderType = 0;
int renderType = GLX_RGBA_TYPE;
#if defined(GLX_DIRECT_RENDERING) || defined(GLX_USE_APPLEGL)
struct glx_screen *const psc = GetGLXScreenConfigs(dpy, vis->screen);
@@ -1441,7 +1441,7 @@ glXImportContextEXT(Display *dpy, GLXContextID contextID)
numProps = nPropListBytes / (2 * sizeof(propList[0]));
share = None;
mode = NULL;
renderType = 0;
renderType = GLX_RGBA_TYPE; /* By default, assume RGBA context */
pProp = propList;
for (i = 0, pProp = propList; i < numProps; i++, pProp += 2)