Renderer can't add UiRenderPass

14 views
Skip to first unread message

goesm...@hotmail.com

unread,
Feb 8, 2017, 6:09:06 AM2/8/17
to omegalib
Hi Alessandro:
    I use omega to test example testVideo on a machine with 4 graphics with 4 row and 6 column screens. The problem is testVideo sometimes display only one row of video, sometimes display only two rows of video, sometimes display only three rows of video, and  sometimes display all rows of video.

But the same program I have tested on windows, and it always display all rows of video.



And then I download equalier1.0.2 from eyescale and run eqPly, all is ok.



The system is ubuntu12.04.5 LTS with four amd radeon cards. Omegalib version is 6.0



The cfg file testVideo_b.cfg:


config:

{

// The default display configuration:

// Projection wall center at (0, 2, -2)

// User head at (0, 2, 0) (centered on wall, 2 meters behind)

// Wall width: 2 meters

// Wall height: 1.12 meters

// Aspect ratio: 1.78

display:

{

type = "Equalizer";

geometry = "ConfigPlanar";

numTiles = [1, 4];

referenceTile = [0, 0];

referenceOffset = [-0.5, 2.0, -2.0];

tileSize = [1.0, 1.12];

autoOffsetWindows = false;

windowOffset = [0, 0];

tileResolution = [11520, 1080];

interleaved = false;

borderless = true;

drawFps = true;

//nodeLauncher = "%c";

tiles:

{

local:

{

t0x0: 

device = 0; 

};

t0x1: 

device = 1; 

};

t0x2: 

device = 2; 

};

t0x3: 

device = 3; 

};

};

};

};

services:

{

MouseService: {};

KeyboardService: {};

};

defaultFont:

{

filename = "fonts/msyh.ttf";

size = 14;

};

camera:

{

controller ="KeyboardMouse";

headOffset = [ 0.0,  2.0,  0.0 ];

//controller ="Mouse";

};

interactor:

{

style = "Mouse";

};

ui:

{

//gamepadInteractionEnabled = false;

gamepadInteractionEnabled = true;

pointerInteractionEnabled = true;

menu3dEnabled =false;

menuRayPlaceEnabled = true;

menuDefaultPosition = [-0.98, 0.2, 1.0];

menuDefaultScale = 2.5;

menuToggleButton = "Button3"; // mouse middle button

clickButton="Button1"; // mouse left button

confirmButton="Button4"; // keyboard enter

cancelButton="Button5"; // keyboard backspace

};

//pythonShellEnabled = true;

appDrawer:

{

appDrawerToggleButton="Button7"; // Keyboard HOME button

};

};



And a log of picture 2 with 2 rows video:
omegalib data search paths:
::: /home/wisdom/omegalib/bin
::: /home/wisdom/work/omegalib
omegalib application config lookup:
::: trying testVideo/testVideo_b.cfg
::: not found, trying testVideo_b.cfg
::: found config: testVideo_b.cfg
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> OMEGALIB BOOT
Opened config file: testVideo_b.cfg
SystemManager::setup: using app config as sysem config file
SystemManager::setupDisplaySystem: type = Equalizer
Bezel size: 0 0
SharedDataServices::registerObject: queuing interp for registration
!!! WARNING: could not find a local omegalib python installation. 
Omegalib will attempt to use the system python interpreter (if available)
PythonInterpreter::addPythonPath: ./
PythonInterpreter::addPythonPath: /home/wisdom/omegalib/bin/
PythonInterpreter::addPythonPath: /home/wisdom/work/omegalib/modules
Python Interpreter initialized.
ModuleServices::addModule: VideoApplication
Service added: MouseService
Service added: KeyboardService
!!! Service not found: CustomerMessageService
ServiceManager::initialize
Event buffer allocated. Max events: 512
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< OMEGALIB BOOT


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DISPLAY INITIALIZATION
[EQ] ConfigImpl::ConfigImpl
[EQ] ConfigImpl::init
ModuleServices::addModule: EventSharingModule
ModuleServices::addModule: console
Camera controller: keyboardmouse
ModuleServices::addModule: CameraController
Engine: Running with sound disabled.
Death switch timeout: 240 seconds
[EQ] NodeImpl::NodeImpl
[EQ] NodeImpl::configInit d7bfa92c1c016507:6c3d1021d4e6091b
@Renderer::Initialize: id = 2
@Renderer::Initialize: id = 1
@Renderer::Initialize: id = 3
@Renderer::Initialize: id = 0
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< DISPLAY INITIALIZATION


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> APPLICATION LOOP
Creating death switch thread
ModuleServices::addModule: UiModule
UiModule initializing...
UiModule initialization OK
Renderer(1): adding render pass UiRenderPass
!!! StatsManager::createStat: stat ui draw already exists
Renderer(3): adding render pass UiRenderPass
Renderer(1): adding render pass console
Renderer(3): adding render pass console
WARNING: 0:1: warning(#437) Extension GL_ARB_texture_rectangle or version 1.10 is requried'by sampler2DRect'.
WARNING: 0:2: warning(#437) Extension GL_ARB_texture_rectangle or version 1.10 is requried'by sampler2DRect'.

WARNING: 0:1: warning(#437) Extension GL_ARB_texture_rectangle or version 1.10 is requried'by sampler2DRect'.
WARNING: 0:2: warning(#437) Extension GL_ARB_texture_rectangle or version 1.10 is requried'by sampler2DRect'.

EqualizerDisplaySystem::killCluster
number of nodes: 1






I see that 
@Renderer::Initialize: id = 2
@Renderer::Initialize: id = 1
@Renderer::Initialize: id = 3
@Renderer::Initialize: id = 0 
four renderer have initialized, but only renderer 1 and 3 add UiRenderPass

Help!!!
Thank you!!!

Alessandro Febretti

unread,
Feb 8, 2017, 10:17:54 AM2/8/17
to omegalib
If you open the on-screen console (:c) do you see any errors on the nodes that don't display the video?
also, do other applications (like orun, ohello) work fine?

Note that you are also using an ancient version of Omegalib at this point. I'm not 100% sure upgrading would solve this particular problem but it's worth considering. Maybe try a side install of a newer version and see how it behaves?

goesm...@hotmail.com

unread,
Feb 9, 2017, 1:08:28 AM2/9/17
to omegalib
ohello is the same, four renderer have initialized, but only renderer 1 and 2 add UiRenderPass, and renderer add UiRenderPass is random.
I have change some omegalib6's code, so I can't update to newest omegalib now.


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DISPLAY INITIALIZATION
============[EQ] ConfigImpl::ConfigImpl
[EQ] ConfigImpl::init
ModuleServices::addModule: EventSharingModule
ModuleServices::addModule: console
Camera controller: keyboardmouse
ModuleServices::addModule: CameraController
Engine: Running with sound disabled.
Death switch timeout: 240 seconds
[EQ] NodeImpl::NodeImpl
[EQ] NodeImpl::configInit ae160fb65ca1dcfb:fa4d04f144b6326d
@Renderer::Initialize: id = 0
@Renderer::Initialize: id = 2
@Renderer::Initialize: id = 3
@Renderer::Initialize: id = 1
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< DISPLAY INITIALIZATION


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> APPLICATION LOOP
Creating death switch thread
Renderer(1): adding render pass HelloRenderPass
Renderer(2): adding render pass HelloRenderPass
Renderer(1): adding render pass console
Renderer(2): adding render pass console

goesm...@hotmail.com

unread,
Feb 9, 2017, 1:28:35 AM2/9/17
to omegalib
I find the reason, myClients has no lock to protect it, and four pipe thread call it the same. In omegalib6.0 four pipe thread call WindowImpl::configInit and then call Engine::addRenderer with no lock.

void Engine::addRenderer(Renderer* client)
{
    oassert(client != NULL);
    myClients.push_back(client);
}

Alessandro Febretti

unread,
Feb 9, 2017, 11:33:59 AM2/9/17
to omegalib
I see. did the commit you added to the pull request (https://github.com/uic-evl/omegalib/pull/134/commits/c299ecf503f151681fc83c9b1bc024b72c802636) solve your problem?

I plan to add your changes to the mainline version by the way, I promise :) Ijust need some time to go through them and fix merge issues. Will probably do it next month.

goesm...@hotmail.com

unread,
Feb 9, 2017, 9:00:28 PM2/9/17
to omegalib
Yes. everything is ok now. But I just use eqinternal/WindowImpl.cpp's sInitLock, not add a lock to class Engine.
Reply all
Reply to author
Forward
0 new messages