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