[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/workspace/kwin
From: Lucas Murray <lmurray () undefinedfire ! com>
Date: 2010-02-10 2:53:34
Message-ID: 1265770414.375656.2262.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1088054 by lmurray:
Revert r1082246 as it needs to be done in CompositingPrefs::detect()
to work correctly but as doing it there defeats the purpose of moving
the code to begin with there's no point in moving it.
BUG: 226049
M +0 -3 compositingprefs.cpp
M +8 -0 main.cpp
M +0 -38 scene_opengl.cpp
--- trunk/KDE/kdebase/workspace/kwin/compositingprefs.cpp #1088053:1088054
@@ -276,8 +276,6 @@
mRecommendCompositing = true;
// Known driver specific options
- // NOTE: GLX has already been loaded so we cannot change direct rendering mode \
here if the
- // driver uses the LIBGL_ALWAYS_INDIRECT environment variable.
if( mXgl )
{
mStrictBinding = false;
@@ -288,7 +286,6 @@
}
else if( mDriver == "nvidia" )
{
- mEnableDirectRendering = true; // Driver doesn't use LIBGL_ALWAYS_INDIRECT
mStrictBinding = false;
}
//else if( mDriver == "fglrx" )
--- trunk/KDE/kdebase/workspace/kwin/main.cpp #1088053:1088054
@@ -496,6 +496,10 @@
if( KDE_signal( SIGHUP, KWin::sighandler ) == SIG_IGN )
KDE_signal( SIGHUP, SIG_IGN );
+ // HACK: This is needed for AIGLX
+ if( qstrcmp( qgetenv( "KWIN_DIRECT_GL" ), "1" ) != 0 )
+ setenv( "LIBGL_ALWAYS_INDIRECT","1", true );
+
// HACK: this is needed to work around a Qt4.4.0RC1 bug (#157659)
setenv( "QT_SLOW_TOPLEVEL_RESIZE", "1", true );
@@ -504,6 +508,10 @@
KWin::SessionSaveDoneHelper helper;
KGlobal::locale()->insertCatalog( "kwin_effects" );
+ // Announce when KWIN_DIRECT_GL is set for above HACK
+ if( qstrcmp( qgetenv( "KWIN_DIRECT_GL" ), "1" ) == 0 )
+ kDebug( 1212 ) << "KWIN_DIRECT_GL set, not forcing LIBGL_ALWAYS_INDIRECT=1";
+
fcntl( XConnectionNumber( KWin::display() ), F_SETFD, 1 );
QString appname;
--- trunk/KDE/kdebase/workspace/kwin/scene_opengl.cpp #1088053:1088054
@@ -113,7 +113,6 @@
XShmSegmentInfo SceneOpenGL::shm;
#endif
-//static int firstWasDirect = -1;
SceneOpenGL::SceneOpenGL( Workspace* ws )
: Scene( ws )
@@ -125,43 +124,6 @@
kDebug( 1212 ) << "No glx extensions available";
return; // error
}
-
- // LIBGL_ALWAYS_INDIRECT:
- // This environment variable causes the Mesa libGL to not load any DRI driver \
on the client's
- // side at all. This has the side-effect of making the library behave \
differently when creating
- // indirect rendering contexts for compositing.
- // When a Mesa driver is using DRI1 compositing will only work in indirect \
rendering mode
- // while when using DRI2 it's possible to use compositing with direct rendering. \
When running
- // with direct rendering we have more OpenGL features available to us therefore \
it's the
- // prefered mode to be running in.
- // If AIGLX is enabled when we create an indirect rendering context without \
this variable set
- // the context doesn't seem to be usable for compositing for some reason. Needs \
more research.
- // In Mesa this variable is only read during the first call to \
glXQueryVersion() so it cannot
- // be changed after GLX has already been used by KWin.
- // Fglrx also uses this variable but I have yet to research how it acts under \
various
- // conditions and what the optimal usage of it by KWin would be.
- // -- lmurray (30th Jan, 2010)
- // TODO: Set this variable only when explicitly running in indirect rendering \
mode.
- //const int isDirect = options->glDirect ? 1 : 0;
- //if( firstWasDirect == -1 )
- // firstWasDirect = isDirect;
- //else
- // if( isDirect != firstWasDirect )
- // // Switching indirect => direct won't take effect and direct => \
indirect will cause
- // // compositing to not work at all on AIGLX systems.
- // kWarning( 1212 ) << "Switched direct rendering mode while KWin was \
running. THIS IS UNSAFE!";
- //if( !options->glDirect )
- // {
- // HACK: This is required for compositing to work on AIGLX
- if( qstrcmp( qgetenv( "KWIN_DIRECT_GL" ), "1" ) != 0 )
- {
- kDebug( 1212 ) << "Forcing LIBGL_ALWAYS_INDIRECT=1";
- setenv( "LIBGL_ALWAYS_INDIRECT", "1", true );
- }
- else
- kDebug( 1212 ) << "KWIN_DIRECT_GL set, not forcing \
LIBGL_ALWAYS_INDIRECT=1";
- // }
-
initGLX();
// check for FBConfig support
if( !hasGLExtension( "GLX_SGIX_fbconfig" ) || !glXGetFBConfigAttrib || \
!glXGetFBConfigs ||
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic