glx: Extend __GLXscreen::createContext to take attributes
The attributes will be used for glXCreateContextAttribsARB additions in follow-on patches. v2: Add missing 'int *error' parameters noticed by Christopher James Halse Rogers. v3: Remove redundant 'int err;' declaration noticed by Christopher James Halse Rogers. This was supposed to be in v2, but I missed it. v4: Add comma missing from additions in v2. Ugh. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> Reviewed-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
This commit is contained in:
parent
62f06b0dcd
commit
96d74138b1
|
@ -276,8 +276,14 @@ DoCreateContext(__GLXclientState * cl, GLXContextID gcId,
|
||||||
/*
|
/*
|
||||||
** Allocate memory for the new context
|
** Allocate memory for the new context
|
||||||
*/
|
*/
|
||||||
if (!isDirect)
|
if (!isDirect) {
|
||||||
glxc = pGlxScreen->createContext(pGlxScreen, config, shareglxc);
|
/* Without any attributes, the only error that the driver should be
|
||||||
|
* able to generate is BadAlloc. As result, just drop the error
|
||||||
|
* returned from the driver on the floor.
|
||||||
|
*/
|
||||||
|
glxc = pGlxScreen->createContext(pGlxScreen, config, shareglxc,
|
||||||
|
0, NULL, &err);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
glxc = __glXdirectContextCreate(pGlxScreen, config, shareglxc);
|
glxc = __glXdirectContextCreate(pGlxScreen, config, shareglxc);
|
||||||
if (!glxc) {
|
if (!glxc) {
|
||||||
|
|
12
glx/glxdri.c
12
glx/glxdri.c
|
@ -599,7 +599,10 @@ __glXDRIscreenDestroy(__GLXscreen * baseScreen)
|
||||||
static __GLXcontext *
|
static __GLXcontext *
|
||||||
__glXDRIscreenCreateContext(__GLXscreen * baseScreen,
|
__glXDRIscreenCreateContext(__GLXscreen * baseScreen,
|
||||||
__GLXconfig * glxConfig,
|
__GLXconfig * glxConfig,
|
||||||
__GLXcontext * baseShareContext)
|
__GLXcontext * baseShareContext,
|
||||||
|
unsigned num_attribs,
|
||||||
|
const uint32_t *attribs,
|
||||||
|
int *error)
|
||||||
{
|
{
|
||||||
__GLXDRIscreen *screen = (__GLXDRIscreen *) baseScreen;
|
__GLXDRIscreen *screen = (__GLXDRIscreen *) baseScreen;
|
||||||
__GLXDRIcontext *context, *shareContext;
|
__GLXDRIcontext *context, *shareContext;
|
||||||
|
@ -611,6 +614,13 @@ __glXDRIscreenCreateContext(__GLXscreen * baseScreen,
|
||||||
drm_context_t hwContext;
|
drm_context_t hwContext;
|
||||||
ScreenPtr pScreen = baseScreen->pScreen;
|
ScreenPtr pScreen = baseScreen->pScreen;
|
||||||
|
|
||||||
|
/* DRI1 cannot support createContextAttribs, so these parameters will
|
||||||
|
* never be used.
|
||||||
|
*/
|
||||||
|
(void) num_attribs;
|
||||||
|
(void) attribs;
|
||||||
|
(void) error;
|
||||||
|
|
||||||
shareContext = (__GLXDRIcontext *) baseShareContext;
|
shareContext = (__GLXDRIcontext *) baseShareContext;
|
||||||
if (shareContext)
|
if (shareContext)
|
||||||
driShare = shareContext->driContext;
|
driShare = shareContext->driContext;
|
||||||
|
|
|
@ -380,7 +380,10 @@ __glXDRIscreenDestroy(__GLXscreen * baseScreen)
|
||||||
static __GLXcontext *
|
static __GLXcontext *
|
||||||
__glXDRIscreenCreateContext(__GLXscreen * baseScreen,
|
__glXDRIscreenCreateContext(__GLXscreen * baseScreen,
|
||||||
__GLXconfig * glxConfig,
|
__GLXconfig * glxConfig,
|
||||||
__GLXcontext * baseShareContext)
|
__GLXcontext * baseShareContext,
|
||||||
|
unsigned num_attribs,
|
||||||
|
const uint32_t *attribs,
|
||||||
|
int *error)
|
||||||
{
|
{
|
||||||
__GLXDRIscreen *screen = (__GLXDRIscreen *) baseScreen;
|
__GLXDRIscreen *screen = (__GLXDRIscreen *) baseScreen;
|
||||||
__GLXDRIcontext *context, *shareContext;
|
__GLXDRIcontext *context, *shareContext;
|
||||||
|
|
|
@ -257,7 +257,10 @@ __glXDRIscreenDestroy(__GLXscreen * baseScreen)
|
||||||
static __GLXcontext *
|
static __GLXcontext *
|
||||||
__glXDRIscreenCreateContext(__GLXscreen * baseScreen,
|
__glXDRIscreenCreateContext(__GLXscreen * baseScreen,
|
||||||
__GLXconfig * glxConfig,
|
__GLXconfig * glxConfig,
|
||||||
__GLXcontext * baseShareContext)
|
__GLXcontext * baseShareContext,
|
||||||
|
unsigned num_attribs,
|
||||||
|
const uint32_t *attribs,
|
||||||
|
int *error)
|
||||||
{
|
{
|
||||||
__GLXDRIscreen *screen = (__GLXDRIscreen *) baseScreen;
|
__GLXDRIscreen *screen = (__GLXDRIscreen *) baseScreen;
|
||||||
__GLXDRIcontext *context, *shareContext;
|
__GLXDRIcontext *context, *shareContext;
|
||||||
|
@ -265,6 +268,13 @@ __glXDRIscreenCreateContext(__GLXscreen * baseScreen,
|
||||||
const __DRIcoreExtension *core = screen->core;
|
const __DRIcoreExtension *core = screen->core;
|
||||||
__DRIcontext *driShare;
|
__DRIcontext *driShare;
|
||||||
|
|
||||||
|
/* DRISWRAST won't support createContextAttribs, so these parameters will
|
||||||
|
* never be used.
|
||||||
|
*/
|
||||||
|
(void) num_attribs;
|
||||||
|
(void) attribs;
|
||||||
|
(void) error;
|
||||||
|
|
||||||
shareContext = (__GLXDRIcontext *) baseShareContext;
|
shareContext = (__GLXDRIcontext *) baseShareContext;
|
||||||
if (shareContext)
|
if (shareContext)
|
||||||
driShare = shareContext->driContext;
|
driShare = shareContext->driContext;
|
||||||
|
|
|
@ -117,7 +117,10 @@ struct __GLXscreen {
|
||||||
|
|
||||||
__GLXcontext *(*createContext) (__GLXscreen * screen,
|
__GLXcontext *(*createContext) (__GLXscreen * screen,
|
||||||
__GLXconfig * modes,
|
__GLXconfig * modes,
|
||||||
__GLXcontext * shareContext);
|
__GLXcontext * shareContext,
|
||||||
|
unsigned num_attribs,
|
||||||
|
const uint32_t *attribs,
|
||||||
|
int *error);
|
||||||
|
|
||||||
__GLXdrawable *(*createDrawable) (ClientPtr client,
|
__GLXdrawable *(*createDrawable) (ClientPtr client,
|
||||||
__GLXscreen * context,
|
__GLXscreen * context,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user