Merge remote-tracking branch 'jturney/master'
This commit is contained in:
commit
8b4f0a4fdd
|
@ -1879,8 +1879,9 @@ if test "x$XWIN" = xyes; then
|
||||||
XWIN_SYS_LIBS=-lws2_32
|
XWIN_SYS_LIBS=-lws2_32
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
XWIN_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $RANDR_LIB $RENDER_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $OS_LIB"
|
XWIN_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $RANDR_LIB $RENDER_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $OS_LIB"
|
||||||
XWIN_SYS_LIBS="$XWIN_SYS_LIBS $XWINMODULES_LIBS"
|
XWIN_SYS_LIBS="$XWIN_SYS_LIBS $XWINMODULES_LIBS $GLX_SYS_LIBS"
|
||||||
AC_SUBST(XWIN_LIBS)
|
AC_SUBST(XWIN_LIBS)
|
||||||
AC_SUBST(XWIN_SERVER_NAME)
|
AC_SUBST(XWIN_SERVER_NAME)
|
||||||
AC_SUBST(XWIN_SYS_LIBS)
|
AC_SUBST(XWIN_SYS_LIBS)
|
||||||
|
|
|
@ -67,7 +67,7 @@ if dispatchheader :
|
||||||
fh = open(dispatchheader)
|
fh = open(dispatchheader)
|
||||||
dispatchh = fh.readlines()
|
dispatchh = fh.readlines()
|
||||||
|
|
||||||
dispatch_regex = re.compile(r'#define\sSET_(\S*)\(')
|
dispatch_regex = re.compile(r'^SET_(\S*)\(')
|
||||||
|
|
||||||
for line in dispatchh :
|
for line in dispatchh :
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
|
@ -308,12 +308,20 @@ for w in sorted(wrappers.keys()) :
|
||||||
if dispatchheader :
|
if dispatchheader :
|
||||||
print 'void glWinSetupDispatchTable(void)'
|
print 'void glWinSetupDispatchTable(void)'
|
||||||
print '{'
|
print '{'
|
||||||
print ' struct _glapi_table *disp = _glapi_get_dispatch();'
|
print ' static struct _glapi_table *disp = NULL;'
|
||||||
|
print ''
|
||||||
|
print ' if (!disp)'
|
||||||
|
print ' {'
|
||||||
|
print ' disp = calloc(sizeof(void *), _glapi_get_dispatch_table_size());'
|
||||||
|
print ' assert(disp);'
|
||||||
|
|
||||||
for d in sorted(dispatch.keys()) :
|
for d in sorted(dispatch.keys()) :
|
||||||
if wrappers.has_key(d) :
|
if wrappers.has_key(d) :
|
||||||
print ' SET_'+ d + '(disp, (void *)' + prefix + d + 'Wrapper);'
|
print ' SET_'+ d + '(disp, (void *)' + prefix + d + 'Wrapper);'
|
||||||
else :
|
else :
|
||||||
print '#warning No wrapper for ' + prefix + d + ' !'
|
print '#warning No wrapper for ' + prefix + d + ' !'
|
||||||
|
|
||||||
|
print ' }'
|
||||||
|
print ''
|
||||||
|
print ' _glapi_set_dispatch(disp);'
|
||||||
print '}'
|
print '}'
|
||||||
|
|
|
@ -398,7 +398,9 @@ fbConfigsDump(unsigned int n, __GLXconfig * c)
|
||||||
static __GLXscreen *glxWinScreenProbe(ScreenPtr pScreen);
|
static __GLXscreen *glxWinScreenProbe(ScreenPtr pScreen);
|
||||||
static __GLXcontext *glxWinCreateContext(__GLXscreen * screen,
|
static __GLXcontext *glxWinCreateContext(__GLXscreen * screen,
|
||||||
__GLXconfig * modes,
|
__GLXconfig * modes,
|
||||||
__GLXcontext * baseShareContext);
|
__GLXcontext * baseShareContext,
|
||||||
|
unsigned num_attribs,
|
||||||
|
const uint32_t * attribs, int *error);
|
||||||
static __GLXdrawable *glxWinCreateDrawable(ClientPtr client,
|
static __GLXdrawable *glxWinCreateDrawable(ClientPtr client,
|
||||||
__GLXscreen * screen,
|
__GLXscreen * screen,
|
||||||
DrawablePtr pDraw,
|
DrawablePtr pDraw,
|
||||||
|
@ -473,7 +475,7 @@ static void
|
||||||
glxLogExtensions(const char *prefix, const char *extensions)
|
glxLogExtensions(const char *prefix, const char *extensions)
|
||||||
{
|
{
|
||||||
int length = 0;
|
int length = 0;
|
||||||
char *strl;
|
const char *strl;
|
||||||
char *str = strdup(extensions);
|
char *str = strdup(extensions);
|
||||||
|
|
||||||
if (str == NULL) {
|
if (str == NULL) {
|
||||||
|
@ -482,6 +484,8 @@ glxLogExtensions(const char *prefix, const char *extensions)
|
||||||
}
|
}
|
||||||
|
|
||||||
strl = strtok(str, " ");
|
strl = strtok(str, " ");
|
||||||
|
if (strl == NULL)
|
||||||
|
strl = "";
|
||||||
ErrorF("%s%s", prefix, strl);
|
ErrorF("%s%s", prefix, strl);
|
||||||
length = strlen(prefix) + strlen(strl);
|
length = strlen(prefix) + strlen(strl);
|
||||||
|
|
||||||
|
@ -515,6 +519,7 @@ glxWinScreenProbe(ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
glxWinScreen *screen;
|
glxWinScreen *screen;
|
||||||
const char *gl_extensions;
|
const char *gl_extensions;
|
||||||
|
const char *gl_renderer;
|
||||||
const char *wgl_extensions;
|
const char *wgl_extensions;
|
||||||
HWND hwnd;
|
HWND hwnd;
|
||||||
HDC hdc;
|
HDC hdc;
|
||||||
|
@ -538,14 +543,6 @@ glxWinScreenProbe(ScreenPtr pScreen)
|
||||||
if (NULL == screen)
|
if (NULL == screen)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* Wrap RealizeWindow, UnrealizeWindow and CopyWindow on this screen */
|
|
||||||
screen->RealizeWindow = pScreen->RealizeWindow;
|
|
||||||
pScreen->RealizeWindow = glxWinRealizeWindow;
|
|
||||||
screen->UnrealizeWindow = pScreen->UnrealizeWindow;
|
|
||||||
pScreen->UnrealizeWindow = glxWinUnrealizeWindow;
|
|
||||||
screen->CopyWindow = pScreen->CopyWindow;
|
|
||||||
pScreen->CopyWindow = glxWinCopyWindow;
|
|
||||||
|
|
||||||
/* Dump out some useful information about the native renderer */
|
/* Dump out some useful information about the native renderer */
|
||||||
|
|
||||||
// create window class
|
// create window class
|
||||||
|
@ -595,7 +592,8 @@ glxWinScreenProbe(ScreenPtr pScreen)
|
||||||
|
|
||||||
ErrorF("GL_VERSION: %s\n", glGetStringWrapperNonstatic(GL_VERSION));
|
ErrorF("GL_VERSION: %s\n", glGetStringWrapperNonstatic(GL_VERSION));
|
||||||
ErrorF("GL_VENDOR: %s\n", glGetStringWrapperNonstatic(GL_VENDOR));
|
ErrorF("GL_VENDOR: %s\n", glGetStringWrapperNonstatic(GL_VENDOR));
|
||||||
ErrorF("GL_RENDERER: %s\n", glGetStringWrapperNonstatic(GL_RENDERER));
|
gl_renderer = (const char *) glGetStringWrapperNonstatic(GL_RENDERER);
|
||||||
|
ErrorF("GL_RENDERER: %s\n", gl_renderer);
|
||||||
gl_extensions = (const char *) glGetStringWrapperNonstatic(GL_EXTENSIONS);
|
gl_extensions = (const char *) glGetStringWrapperNonstatic(GL_EXTENSIONS);
|
||||||
glxLogExtensions("GL_EXTENSIONS: ", gl_extensions);
|
glxLogExtensions("GL_EXTENSIONS: ", gl_extensions);
|
||||||
wgl_extensions = wglGetExtensionsStringARBWrapper(hdc);
|
wgl_extensions = wglGetExtensionsStringARBWrapper(hdc);
|
||||||
|
@ -603,6 +601,13 @@ glxWinScreenProbe(ScreenPtr pScreen)
|
||||||
wgl_extensions = "";
|
wgl_extensions = "";
|
||||||
glxLogExtensions("WGL_EXTENSIONS: ", wgl_extensions);
|
glxLogExtensions("WGL_EXTENSIONS: ", wgl_extensions);
|
||||||
|
|
||||||
|
if (strcasecmp(gl_renderer, "GDI Generic") == 0) {
|
||||||
|
free(screen);
|
||||||
|
LogMessage(X_ERROR,
|
||||||
|
"AIGLX: Won't use generic native renderer as it is not accelerated\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
// Can you see the problem here? The extensions string is DC specific
|
// Can you see the problem here? The extensions string is DC specific
|
||||||
// Different DCs for windows on a multimonitor system driven by multiple cards
|
// Different DCs for windows on a multimonitor system driven by multiple cards
|
||||||
// might have completely different capabilities. Of course, good luck getting
|
// might have completely different capabilities. Of course, good luck getting
|
||||||
|
@ -720,9 +725,6 @@ glxWinScreenProbe(ScreenPtr pScreen)
|
||||||
|
|
||||||
__glXScreenInit(&screen->base, pScreen);
|
__glXScreenInit(&screen->base, pScreen);
|
||||||
|
|
||||||
// dump out fbConfigs now fbConfigIds and visualIDs have been assigned
|
|
||||||
fbConfigsDump(screen->base.numFBConfigs, screen->base.fbconfigs);
|
|
||||||
|
|
||||||
// Override the GL extensions string set by __glXScreenInit()
|
// Override the GL extensions string set by __glXScreenInit()
|
||||||
screen->base.GLextensions = strdup(gl_extensions);
|
screen->base.GLextensions = strdup(gl_extensions);
|
||||||
|
|
||||||
|
@ -765,6 +767,17 @@ glxWinScreenProbe(ScreenPtr pScreen)
|
||||||
ReleaseDC(hwnd, hdc);
|
ReleaseDC(hwnd, hdc);
|
||||||
DestroyWindow(hwnd);
|
DestroyWindow(hwnd);
|
||||||
|
|
||||||
|
// dump out fbConfigs now fbConfigIds and visualIDs have been assigned
|
||||||
|
fbConfigsDump(screen->base.numFBConfigs, screen->base.fbconfigs);
|
||||||
|
|
||||||
|
/* Wrap RealizeWindow, UnrealizeWindow and CopyWindow on this screen */
|
||||||
|
screen->RealizeWindow = pScreen->RealizeWindow;
|
||||||
|
pScreen->RealizeWindow = glxWinRealizeWindow;
|
||||||
|
screen->UnrealizeWindow = pScreen->UnrealizeWindow;
|
||||||
|
pScreen->UnrealizeWindow = glxWinUnrealizeWindow;
|
||||||
|
screen->CopyWindow = pScreen->CopyWindow;
|
||||||
|
pScreen->CopyWindow = glxWinCopyWindow;
|
||||||
|
|
||||||
return &screen->base;
|
return &screen->base;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1571,7 +1584,8 @@ glxWinContextDestroy(__GLXcontext * base)
|
||||||
|
|
||||||
static __GLXcontext *
|
static __GLXcontext *
|
||||||
glxWinCreateContext(__GLXscreen * screen,
|
glxWinCreateContext(__GLXscreen * screen,
|
||||||
__GLXconfig * modes, __GLXcontext * baseShareContext)
|
__GLXconfig * modes, __GLXcontext * baseShareContext,
|
||||||
|
unsigned num_attribs, const uint32_t * attribs, int *error)
|
||||||
{
|
{
|
||||||
__GLXWinContext *context;
|
__GLXWinContext *context;
|
||||||
__GLXWinContext *shareContext = (__GLXWinContext *) baseShareContext;
|
__GLXWinContext *shareContext = (__GLXWinContext *) baseShareContext;
|
||||||
|
|
Loading…
Reference in New Issue