glamor: Use function pointer to get extenstion calls
This is the formal usage for extension functions.
This commit is contained in:
		
							parent
							
								
									7aecfa245f
								
							
						
					
					
						commit
						41b13fbd26
					
				| 
						 | 
					@ -45,6 +45,7 @@
 | 
				
			||||||
#include <GL/gl.h>
 | 
					#include <GL/gl.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MESA_EGL_NO_X11_HEADERS
 | 
				
			||||||
#include <EGL/egl.h>
 | 
					#include <EGL/egl.h>
 | 
				
			||||||
#include <EGL/eglext.h>
 | 
					#include <EGL/eglext.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -79,6 +80,10 @@ struct glamor_screen_private {
 | 
				
			||||||
	CloseScreenProcPtr CloseScreen;
 | 
						CloseScreenProcPtr CloseScreen;
 | 
				
			||||||
	int fd;
 | 
						int fd;
 | 
				
			||||||
	int cpp;
 | 
						int cpp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						PFNEGLCREATEDRMIMAGEMESA egl_create_drm_image_mesa;
 | 
				
			||||||
 | 
						PFNEGLEXPORTDRMIMAGEMESA egl_export_drm_image_mesa;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline struct glamor_screen_private *
 | 
					static inline struct glamor_screen_private *
 | 
				
			||||||
| 
						 | 
					@ -109,7 +114,7 @@ glamor_resize(ScrnInfoPtr scrn, int width, int height)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	attribs[1] = width;
 | 
						attribs[1] = width;
 | 
				
			||||||
	attribs[3] = height;
 | 
						attribs[3] = height;
 | 
				
			||||||
	image =	 eglCreateDRMImageMESA(glamor->display, attribs);  
 | 
						image =	 (glamor->egl_create_drm_image_mesa)(glamor->display, attribs);  
 | 
				
			||||||
	if (image == EGL_NO_IMAGE_KHR)
 | 
						if (image == EGL_NO_IMAGE_KHR)
 | 
				
			||||||
		return FALSE;
 | 
							return FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -131,7 +136,7 @@ glamor_frontbuffer_handle(ScrnInfoPtr scrn, uint32_t *handle, uint32_t *pitch)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct glamor_screen_private *glamor = glamor_get_screen_private(scrn);
 | 
						struct glamor_screen_private *glamor = glamor_get_screen_private(scrn);
 | 
				
			||||||
	EGLint name;
 | 
						EGLint name;
 | 
				
			||||||
	eglExportDRMImageMESA (glamor->display, glamor->root, &name, (EGLint*) handle, (EGLint*) pitch);
 | 
						(glamor->egl_export_drm_image_mesa)(glamor->display, glamor->root, &name, (EGLint*) handle, (EGLint*) pitch);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EGLImageKHR glamor_create_cursor_argb(ScrnInfoPtr scrn, int width, int height)
 | 
					EGLImageKHR glamor_create_cursor_argb(ScrnInfoPtr scrn, int width, int height)
 | 
				
			||||||
| 
						 | 
					@ -148,7 +153,7 @@ EGLImageKHR glamor_create_cursor_argb(ScrnInfoPtr scrn, int width, int height)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	attribs[1] = width;
 | 
						attribs[1] = width;
 | 
				
			||||||
	attribs[3] = height;
 | 
						attribs[3] = height;
 | 
				
			||||||
	return	eglCreateDRMImageMESA(glamor->display, attribs); 
 | 
						return	(glamor->egl_create_drm_image_mesa)(glamor->display, attribs); 
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void glamor_destroy_cursor(ScrnInfoPtr scrn, EGLImageKHR cursor)
 | 
					void glamor_destroy_cursor(ScrnInfoPtr scrn, EGLImageKHR cursor)
 | 
				
			||||||
| 
						 | 
					@ -162,7 +167,7 @@ glamor_cursor_handle(ScrnInfoPtr scrn, EGLImageKHR cursor, uint32_t *handle, uin
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct glamor_screen_private *glamor = glamor_get_screen_private(scrn);
 | 
						struct glamor_screen_private *glamor = glamor_get_screen_private(scrn);
 | 
				
			||||||
	EGLint name;
 | 
						EGLint name;
 | 
				
			||||||
	eglExportDRMImageMESA (glamor->display, cursor, &name, (EGLint*) handle, (EGLint*) pitch);
 | 
						(glamor->egl_export_drm_image_mesa)(glamor->display, cursor, &name, (EGLint*) handle, (EGLint*) pitch);
 | 
				
			||||||
	ErrorF("cursor stride: %d\n", *pitch);
 | 
						ErrorF("cursor stride: %d\n", *pitch);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -346,7 +351,16 @@ glamor_screen_init_ddx(int scrnIndex, ScreenPtr screen, int argc, char **argv)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	version = eglQueryString(glamor->display, EGL_VERSION);
 | 
						version = eglQueryString(glamor->display, EGL_VERSION);
 | 
				
			||||||
	xf86Msg(X_INFO, "%s: EGL version %s:", glamor_name, version);
 | 
						xf86Msg(X_INFO, "%s: EGL version %s:\n", glamor_name, version);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						glamor->egl_create_drm_image_mesa = eglGetProcAddress("eglCreateDRMImageMESA");
 | 
				
			||||||
 | 
						glamor->egl_export_drm_image_mesa = eglGetProcAddress("eglExportDRMImageMESA");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!glamor->egl_create_drm_image_mesa || !glamor->egl_export_drm_image_mesa) {
 | 
				
			||||||
 | 
							xf86DrvMsg(scrn->scrnIndex, X_ERROR,
 | 
				
			||||||
 | 
								   "eglGetProcAddress() failed\n");
 | 
				
			||||||
 | 
							return FALSE;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	glamor->context = eglCreateContext(glamor->display,
 | 
						glamor->context = eglCreateContext(glamor->display,
 | 
				
			||||||
					   NULL, EGL_NO_CONTEXT, config_attribs);
 | 
										   NULL, EGL_NO_CONTEXT, config_attribs);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue