From: Brian P. <bri...@tu...> - 2006-08-07 14:36:33
|
James Supancic wrote: > Tilesort generates needed network traffic? > > I have four Render SPUs and one Tilesort SPU. I have noticed that some > applications run slowly when they are rendering only to the local Render > SPU (ig. application, tilesort and render SPU are all on one host) while > at the same time using little CPU time. I replaced the 3 Render SPUs on > remote hosts with NOP SPUs on the localhost and found that CPU > consumption went up to 100% and applications ran faster. Suspecting that > something about the remote Render SPUs might be slowing down local > rendering I inserted a Print SPU on one of the remote nodes (note that > the applications window is only on the local X server, none of the > remote X server/Render SPUs should be used). > > I ran the atlantis text program and got this output: > LoadIdentity( ) > MatrixMode( GL_PROJECTION ) > LoadMatrixf( [ 1.37 0.00 0.00 0.00 > 0.00 2.75 0.00 0.00 > 0.00 0.00 -1.05 -1.00 > 0.00 0.00 -20512.82 0.00 ] ) > MatrixMode( GL_MODELVIEW ) > MatrixMode( GL_MODELVIEW ) > PushMatrix( ) > LoadIdentity( ) > PopMatrix( ) > MatrixMode( GL_MODELVIEW ) > Clear( 0x4100 ) > LoadIdentity( ) > SwapBuffers( 1, 0 ) > MakeCurrent( 1, 0, 1 ) > LoadIdentity( ) > MatrixMode( GL_PROJECTION ) > LoadMatrixf( [ 1.37 0.00 0.00 0.00 > 0.00 2.75 0.00 0.00 > 0.00 0.00 -1.05 -1.00 > 0.00 0.00 -20512.82 0.00 ] ) > MatrixMode( GL_MODELVIEW ) > MatrixMode( GL_MODELVIEW ) > PushMatrix( ) > LoadIdentity( ) > PopMatrix( ) > MatrixMode( GL_MODELVIEW ) > Clear( 0x4100 ) > LoadIdentity( ) > SwapBuffers( 1, 0 ) > MakeCurrent( 1, 0, 1 ) > LoadIdentity( ) > MatrixMode( GL_PROJECTION ) > LoadMatrixf( [ 1.37 0.00 0.00 0.00 > 0.00 2.75 0.00 0.00 > 0.00 0.00 -1.05 -1.00 > 0.00 0.00 -20512.82 0.00 ] ) > MatrixMode( GL_MODELVIEW ) > MatrixMode( GL_MODELVIEW ) > PushMatrix( ) > LoadIdentity( ) > PopMatrix( ) > MatrixMode( GL_MODELVIEW ) > Clear( 0x4100 ) > LoadIdentity( ) > SwapBuffers( 1, 0 ) > MakeCurrent( 1, 0, 1 ) > LoadIdentity( ) > MatrixMode( GL_PROJECTION ) > LoadMatrixf( [ 1.37 0.00 0.00 0.00 > 0.00 2.75 0.00 0.00 > 0.00 0.00 -1.05 -1.00 > 0.00 0.00 -20512.82 0.00 ] ) > MatrixMode( GL_MODELVIEW ) > MatrixMode( GL_MODELVIEW ) > PushMatrix( ) > LoadIdentity( ) > PopMatrix( ) > > The Tilesort SPU is clearly sending data to the remote Render SPUs. Why? > I am using the Test All Tiles bucket mode, I am using auto_dlist_bbox, > lazy_send_dlists, and dlist_state_tracking. Why is this data being sent? > How can I eliminate it? I think the state tracker's matrix-related code needs to be reviewed. I've noticed this too, but it doesn't seem to effect all applications. The atlantis demo does call glMatrixMode() and sets the modelview and projection matrices on every frame but the state tracker should filter out those redundant calls. I won't have time to look into this anytime soon, unfortunately. -Brian |