void Window::joinNVSwapBarrier( const uint32_t group, const uint32_t barrier) { if( group == 0 ) return; #if 1 EQWARN << "Entering untested function GLXWindow::joinNVSwapBarrier" << std::endl; if ( !GLXEW_NV_swap_group ) { EQWARN << "NV Swap group extension not supported" << std::endl; return; } const int screen = DefaultScreen( _xDisplay ); uint32_t maxBarrier = 0; uint32_t maxGroup = 0; glXQueryMaxSwapGroupsNV( _xDisplay, screen, &maxGroup, &maxBarrier ); if( group > maxGroup ) { EQWARN << "Failed to initialize GLX_NV_swap_group: requested group " << group << " greater than maxGroups (" << maxGroup << ")" << std::endl; return; } if( barrier > maxBarrier ) { EQWARN << "Failed to initialize GLX_NV_swap_group: requested barrier " << barrier << "greater than maxBarriers (" << maxBarrier << ")" << std::endl; return; } if( !glXJoinSwapGroupNV( _xDisplay, _xDrawable, group )) { EQWARN << "Failed to join swap group " << group << std::endl; return; } _glXNVSwapGroup = group; if( !glXBindSwapBarrierNV( _xDisplay, group, barrier )) { EQWARN << "Failed to bind swap barrier " << barrier << std::endl; return; } EQINFO << "Joined swap group " << group << " and barrier " << barrier << std::endl; #else EQUNIMPLEMENTED; #endif }
void Window::leaveNVSwapBarrier() { if( _impl->glXNVSwapGroup == 0 ) return; glXBindSwapBarrierNV( _impl->xDisplay, _impl->glXNVSwapGroup, 0 ); glXJoinSwapGroupNV( _impl->xDisplay, _impl->xDrawable, 0 ); _impl->glXNVSwapGroup = 0; }
void Window::leaveNVSwapBarrier() { if( _glXNVSwapGroup == 0 ) return; #if 1 glXBindSwapBarrierNV( _xDisplay, _glXNVSwapGroup, 0 ); glXJoinSwapGroupNV( _xDisplay, _xDrawable, 0 ); _glXNVSwapGroup = 0; #else EQUNIMPLEMENTED; #endif }