You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(10) |
Jul
(5) |
Aug
(20) |
Sep
(12) |
Oct
(1) |
Nov
(5) |
Dec
(5) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(4) |
Feb
(13) |
Mar
(14) |
Apr
(33) |
May
(15) |
Jun
(49) |
Jul
(24) |
Aug
(90) |
Sep
(13) |
Oct
(85) |
Nov
(25) |
Dec
(6) |
2003 |
Jan
(9) |
Feb
(89) |
Mar
(85) |
Apr
(98) |
May
(30) |
Jun
(55) |
Jul
(79) |
Aug
(78) |
Sep
(77) |
Oct
(47) |
Nov
(48) |
Dec
(18) |
2004 |
Jan
(75) |
Feb
(176) |
Mar
(137) |
Apr
(67) |
May
(119) |
Jun
(128) |
Jul
(53) |
Aug
(50) |
Sep
(46) |
Oct
(55) |
Nov
(53) |
Dec
(25) |
2005 |
Jan
(34) |
Feb
(21) |
Mar
(29) |
Apr
(48) |
May
(23) |
Jun
(35) |
Jul
(18) |
Aug
(69) |
Sep
(49) |
Oct
(35) |
Nov
(16) |
Dec
(7) |
2006 |
Jan
(21) |
Feb
(17) |
Mar
(16) |
Apr
(20) |
May
(48) |
Jun
(19) |
Jul
(23) |
Aug
(55) |
Sep
(42) |
Oct
(7) |
Nov
(7) |
Dec
(4) |
2007 |
Jan
(6) |
Feb
(17) |
Mar
(3) |
Apr
(6) |
May
(4) |
Jun
(12) |
Jul
(1) |
Aug
(7) |
Sep
(11) |
Oct
(1) |
Nov
(10) |
Dec
(4) |
2008 |
Jan
(5) |
Feb
(7) |
Mar
(12) |
Apr
(21) |
May
(1) |
Jun
(3) |
Jul
|
Aug
(1) |
Sep
(2) |
Oct
(4) |
Nov
(7) |
Dec
(9) |
2009 |
Jan
(4) |
Feb
|
Mar
|
Apr
(5) |
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
(10) |
Oct
(1) |
Nov
|
Dec
(2) |
2010 |
Jan
(4) |
Feb
|
Mar
(3) |
Apr
|
May
(1) |
Jun
(4) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2013 |
Jan
(1) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
From: Daniel E. S. <dan...@gm...> - 2006-08-24 20:24:07
|
Attached is a patch I needed to *run* chromium cvs on an AMD64 box running FC5. Thanks. -dan -- Daniel E. Shipton Software Engineer, Infiscape Corp. |
From: Brian P. <bri...@tu...> - 2006-08-24 20:15:23
|
Daniel E. Shipton wrote: > [snip] > > > > > I have seen the render_to_app_window, but this is for the desktop > > application, not the server(render nodes). > > I want the render nodes that are rendering the crapfaker graphics > to be > > essentially injecting the OpenGL stream into this passive window. I > > ulitimately am going to be changing the OpenGL stream to cut out the > > view matrices and such but this is the first step before I get to > that. > > Have you looked at the reassemble.conf file? It does tilesort then > puts the results back into the original application window. > > > Brian, > > I am trying to take the graphics stream from a desktop app and put the > stream back into a passive window (chromium would not control this > window at all) with the projection matrices changed to my own custom > view or views(think 6 sided CAVE) so I can move around within the > graphics stream. Hopefully this gives you a better idea of what I am > trying to accomplish. OK, I didn't know what you meant by a passive window. The only thing I can think of would be for the app that controls your passive window to somehow pass it's ID to the Cr mothership as the 'crut' window. Then, enable the render SPU's 'render_to_crut_window' option. -Brian |
From: Daniel E. S. <dan...@gm...> - 2006-08-24 20:08:18
|
[snip] > > > > I have seen the render_to_app_window, but this is for the desktop > > application, not the server(render nodes). > > I want the render nodes that are rendering the crapfaker graphics to be > > essentially injecting the OpenGL stream into this passive window. I > > ulitimately am going to be changing the OpenGL stream to cut out the > > view matrices and such but this is the first step before I get to that. > > Have you looked at the reassemble.conf file? It does tilesort then > puts the results back into the original application window. Brian, I am trying to take the graphics stream from a desktop app and put the stream back into a passive window (chromium would not control this window at all) with the projection matrices changed to my own custom view or views(think 6 sided CAVE) so I can move around within the graphics stream. Hopefully this gives you a better idea of what I am trying to accomplish. -dan |
From: Brian P. <bri...@tu...> - 2006-08-24 19:31:16
|
Daniel E. Shipton wrote: > On 8/24/06, *Brian Paul* <bri...@tu... > <mailto:bri...@tu...>> wrote: > > Daniel E. Shipton wrote: > > I would like to have chromium render to a context that I have already > > created. > > You mean render to a window, right? A rendering context != a window. > > > A passive window that already has a context that was created by another > program for me. > > > Is the best way to do this is re-writing a render spu with that > > purpose? > > Have you seen the render SPU's 'render_to_app_window' option? > > > I have seen the render_to_app_window, but this is for the desktop > application, not the server(render nodes). > I want the render nodes that are rendering the crapfaker graphics to be > essentially injecting the OpenGL stream into this passive window. I > ulitimately am going to be changing the OpenGL stream to cut out the > view matrices and such but this is the first step before I get to that. Have you looked at the reassemble.conf file? It does tilesort then puts the results back into the original application window. -Brian |
From: Brian P. <bri...@tu...> - 2006-08-24 19:22:45
|
Daniel E. Shipton wrote: > Here is a patch I needed to get Chromium to compile on OS X. Fixed. Thanks. -Brian |
From: Daniel E. S. <dan...@gm...> - 2006-08-24 19:17:39
|
Here is a patch I needed to get Chromium to compile on OS X. -Dan -- Daniel E. Shipton Software Engineer, Infiscape Corp. |
From: Daniel E. S. <dan...@gm...> - 2006-08-24 17:14:13
|
On 8/24/06, Brian Paul <bri...@tu...> wrote: > > Daniel E. Shipton wrote: > > I would like to have chromium render to a context that I have already > > created. > > You mean render to a window, right? A rendering context != a window. A passive window that already has a context that was created by another program for me. > Is the best way to do this is re-writing a render spu with that > > purpose? > > Have you seen the render SPU's 'render_to_app_window' option? I have seen the render_to_app_window, but this is for the desktop application, not the server(render nodes). I want the render nodes that are rendering the crapfaker graphics to be essentially injecting the OpenGL stream into this passive window. I ulitimately am going to be changing the OpenGL stream to cut out the view matrices and such but this is the first step before I get to that. > I hacked the render spu a bit for the prototype and got rid of > > any window/context creation calls and makeCurrent calls. What I really > > would like to do is just use Chromium to transport the graphics stream. > > I would like to be in charge of opening windows and contexts, and then > > telling chromium to render (insert the stream) into each > > window/context. Ideas? > > Well, if you don't want to mess with X windows or GLX at all, you can > use the native Chromium interface for creating windows, rendering > contexts, binding them, etc. See the cr/include/chromium.h file. I would like to avoid getting deep into X and GLX if possible ;) -Daniel |
From: Brian P. <bri...@tu...> - 2006-08-24 16:57:33
|
Daniel E. Shipton wrote: > I would like to have chromium render to a context that I have already > created. You mean render to a window, right? A rendering context != a window. > Is the best way to do this is re-writing a render spu with that > purpose? Have you seen the render SPU's 'render_to_app_window' option? > I hacked the render spu a bit for the prototype and got rid of > any window/context creation calls and makeCurrent calls. What I really > would like to do is just use Chromium to transport the graphics stream. > I would like to be in charge of opening windows and contexts, and then > telling chromium to render (insert the stream) into each > window/context. Ideas? Well, if you don't want to mess with X windows or GLX at all, you can use the native Chromium interface for creating windows, rendering contexts, binding them, etc. See the cr/include/chromium.h file. -Brian |
From: Daniel E. S. <dan...@gm...> - 2006-08-24 14:20:15
|
I would like to have chromium render to a context that I have already created. Is the best way to do this is re-writing a render spu with that purpose? I hacked the render spu a bit for the prototype and got rid of any window/context creation calls and makeCurrent calls. What I really would like to do is just use Chromium to transport the graphics stream. I would like to be in charge of opening windows and contexts, and then telling chromium to render (insert the stream) into each window/context. Ideas? -Daniel |
From: Alan H. <al...@tu...> - 2006-08-24 11:20:21
|
On Thu, 2006-08-24 at 10:25 +0200, Paul Melis wrote: > Hi, > > Sorry, the previous mail was accidently sent before I finished it... > > I'm trying to build CR1.9-rc4 in the cygwin shell. The build goes quite a long way, but fails with a linker error. > > At first, there was a minor glitch in spu/tilesort/tilesortspu_diffapi.c, > in which diffGetString() (line 137) wasn't defined as __stdcall. > Because of this the assignment on line 356 fails as the variable the > function is assigned to is of type GetStringFunc_t, which is: > > typedef const GLubyte * (SPU_APIENTRY *GetStringFunc_t)(GLenum); > (include/spu_dispatch_table.h, line 830) > > This was easy to fix by adding the __stdcall qualifier to diffGetString(). > > > But in building the tilesort SPU there's a linker error: > > Linking ../../built/tilesortspu/WIN_NT/tilesortspu.dll > Creating library ../../built/tilesortspu/WIN_NT/tilesortspu.lib and object .. > /../built/tilesortspu/WIN_NT/tilesortspu.exp > tilesortspu_client.obj : error LNK2019: unresolved external symbol _crStateUseSe > rverArrayElements referenced in function _tilesortspu_DrawElements@16 > ../../built/tilesortspu/WIN_NT/tilesortspu.dll : fatal error LNK1120: 1 unresolv > ed externals > make[3]: *** [../../built/tilesortspu/WIN_NT/tilesortspu.dll] Error 2 > make[2]: *** [dep] Error 2 > make[1]: *** [tilesort.subdir] Error 2 > make: *** [spu.subdir] Error 2 > > I checked to see where crStateUseServerArrayElements() is defined and it is in > crstate.lib. But this lib is explicitly not linked on windows, so I'm unsure how to > fix this... I've just fixed this in the CVS, but essentially the function crStateUseServerArrayElements should be defined in cr/state_tracker/state_defs.py Alan. |
From: Paul M. <p.e...@ru...> - 2006-08-24 08:25:09
|
Hi, Sorry, the previous mail was accidently sent before I finished it... I'm trying to build CR1.9-rc4 in the cygwin shell. The build goes quite a long way, but fails with a linker error. At first, there was a minor glitch in spu/tilesort/tilesortspu_diffapi.c, in which diffGetString() (line 137) wasn't defined as __stdcall. Because of this the assignment on line 356 fails as the variable the function is assigned to is of type GetStringFunc_t, which is: typedef const GLubyte * (SPU_APIENTRY *GetStringFunc_t)(GLenum); (include/spu_dispatch_table.h, line 830) This was easy to fix by adding the __stdcall qualifier to diffGetString(). But in building the tilesort SPU there's a linker error: Linking ../../built/tilesortspu/WIN_NT/tilesortspu.dll Creating library ../../built/tilesortspu/WIN_NT/tilesortspu.lib and object .. /../built/tilesortspu/WIN_NT/tilesortspu.exp tilesortspu_client.obj : error LNK2019: unresolved external symbol _crStateUseSe rverArrayElements referenced in function _tilesortspu_DrawElements@16 ../../built/tilesortspu/WIN_NT/tilesortspu.dll : fatal error LNK1120: 1 unresolv ed externals make[3]: *** [../../built/tilesortspu/WIN_NT/tilesortspu.dll] Error 2 make[2]: *** [dep] Error 2 make[1]: *** [tilesort.subdir] Error 2 make: *** [spu.subdir] Error 2 I checked to see where crStateUseServerArrayElements() is defined and it is in crstate.lib. But this lib is explicitly not linked on windows, so I'm unsure how to fix this... Any clues? Paul -- Paul Melis VR Specialist, Center for High-Performance Computing & Visualization, University of Groningen, The Netherlands T: +31 50 363 9298 E: p.e...@ru... W: http://www.rug.nl/rc/hpcv/index ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Chromium-users mailing list Chr...@li... https://lists.sourceforge.net/lists/listinfo/chromium-users -- Paul Melis VR Specialist, Center for High-Performance Computing & Visualization, University of Groningen, The Netherlands T: +31 50 363 9298 E: p.e...@ru... W: http://www.rug.nl/rc/hpcv/index |
From: Paul M. <p.e...@ru...> - 2006-08-24 08:18:12
|
Hi, I'm trying to build CR1.9-rc4 in the cygwin shell. At first, there was a glitch as in spu/tilesort/tilesortspu_diffapi.c in which diffGetString() (line 137) wasn't defined Because of this the assignment on line 356 failed, as GetStringFunc_t include/spu_dispatch_table.h, line 830 typedef const GLubyte * (SPU_APIENTRY *GetStringFunc_t)(GLenum); __stdcall -- Paul Melis VR Specialist, Center for High-Performance Computing & Visualization, University of Groningen, The Netherlands T: +31 50 363 9298 E: p.e...@ru... W: http://www.rug.nl/rc/hpcv/index |
From: James S. <arr...@gm...> - 2006-08-11 16:43:23
|
bizarre texture error with a even more bizarre fix? There is an odd bug when running Sauerbraten with Chromium. The textures on two opposite sides of a box will be rendered correctly, but these on the sides perpendicular to the correctly rendered sides will have their textures "skewed" (ig. the textures are severely warped, like the texture coordinates got corrupted). So, for example, on a map, the north and south sides of all objects might be rendered correctly, while the east and west sides would be skewed. I found a way to fix this... but I don't understand why it works at all: in any of the following functions: doFlush tilesortspuFlush tilesortspuFlush_callback crStateTexGendv crStateTexGenfv and maybe others. I add the lines crPackPushAttrib(0); crPackPopAttrib(); and the all sides of objects render properly? Does anyone have any idea why this might happen? As far as I can tell... crPackPushAttrib(0); crPackPopAttrib(); should do absolutely nothing? I have been working on this all night, and I am running out of ideas... Thank you for your time, James Steven Supancic III |
From: Brian P. <bri...@tu...> - 2006-08-11 13:59:12
|
James Supancic wrote: > I have been reading the Chromium source code, I have a couple of > questions about it. > > what is the difference between function and functionSWAP()? > I keep seeing things like > if(tilesort_spu.swap) > { > call1SWAP > call2SWAP > call3SWAP > } > else > { > call1 > call2 > call3 > } > > Debugging indicates that I always use the non-SWAP version, What is > going on here? What does tilesort_spu.swap indicate? Why are different > functions needed for each one? It's for byteswapping in the case the packer and unpacker use different byte orderings. > Secondly, I have been looking at the integration of various parts of > Chromium. I noticed that many calls (especially those in > tilesortspu_gen.c) call similarly named functions in the state > tracker. These state tracker functions appear to do call specific > things to update the state to what it should be after that call, at > which point they use FLUSH() (which ends up invoking doFlush() in the > tilesort SPU) to send necessary differences to the Render SPUs? Is > this correct? (ig, does FLUSH flush changes to Render SPUs as needed?) > > If yes, why does FLUSH() get called before the state tracker updates > the state? I noticed that FLUSH() is always at the beginning of the > state tracker functions, shouldn't it be at the end? The idea is to flush any pending/buffered drawing commands before you change the state. If there's no accumulated drawing commands, the flush is a no-op. -Brian |
From: James S. <arr...@gm...> - 2006-08-11 13:23:51
|
I have been reading the Chromium source code, I have a couple of questions about it. what is the difference between function and functionSWAP()? I keep seeing things like if(tilesort_spu.swap) { call1SWAP call2SWAP call3SWAP } else { call1 call2 call3 } Debugging indicates that I always use the non-SWAP version, What is going on here? What does tilesort_spu.swap indicate? Why are different functions needed for each one? Secondly, I have been looking at the integration of various parts of Chromium. I noticed that many calls (especially those in tilesortspu_gen.c) call similarly named functions in the state tracker. These state tracker functions appear to do call specific things to update the state to what it should be after that call, at which point they use FLUSH() (which ends up invoking doFlush() in the tilesort SPU) to send necessary differences to the Render SPUs? Is this correct? (ig, does FLUSH flush changes to Render SPUs as needed?) If yes, why does FLUSH() get called before the state tracker updates the state? I noticed that FLUSH() is always at the beginning of the state tracker functions, shouldn't it be at the end? Thank you for your time, James Steven Supancic III |
From: Brian P. <bri...@tu...> - 2006-08-10 16:19:23
|
I've made another set of Chromium 1.9 release candidate archives: http://chromium.sourceforge.net/beta/ This has a number of bug fixes from the past couple months. I'd like to wrap up 1.9 soon so please test and report any problems. -Brian |
From: Brian P. <bri...@tu...> - 2006-08-09 23:41:15
|
James Supancic wrote: >> That's intentional. Recall that you can make a whole chain of SPUs. >> Some SPUs depend on getting SwapBuffer calls. If we omitted some >> SwapBuffer calls, we'd cause trouble for those other SPUs. The VNC >> SPU is an example. > > > I don't understand, if nothing is to be rendered to a tile, what do > the SPUs for that tile need to get a SwapBuffer call? Why do they need > to receive SwapBuffer calls for frames that they have nothing to do > with? For example, If I am running the city demo on a two display > setup, and the city demo's window is on one tile, why do I need to be > sending anything to the other tile? In the case of the VNC SPU, we need to see all SwapBuffers in order to do frame synchronization. In another example, if you have a number of NVIDIA Quadro cards and are using the framesync feature, it may cause trouble to do SwapBuffers on some cards, but not others. > Are you saying that without the SwapBuffer call other data that is > sent to the tile not part of the current frame will "pollute" the > first frame that it should render after becoming part of the frame (if > a window move or something causes a re tiling)? Not sure I understand that. But if all one does is call glClearColor(); glClear(), you'll need to do the buffer swap. > I can see how that is possible, but ideally, I would filter out > everything being sent to the SPUs for a tile that is not part of the > scene.... > > Or are other SPUs using it as some kind of periodic "interrupt" mechanism? Kind of. The FPS SPU uses SwapBuffers to measure Frames/Second. In any case, sending the SwapBuffers to all crservers is pretty cheap. -Brian |
From: James S. <arr...@gm...> - 2006-08-09 17:02:55
|
> That's intentional. Recall that you can make a whole chain of SPUs. > Some SPUs depend on getting SwapBuffer calls. If we omitted some > SwapBuffer calls, we'd cause trouble for those other SPUs. The VNC > SPU is an example. I don't understand, if nothing is to be rendered to a tile, what do the SPUs for that tile need to get a SwapBuffer call? Why do they need to receive SwapBuffer calls for frames that they have nothing to do with? For example, If I am running the city demo on a two display setup, and the city demo's window is on one tile, why do I need to be sending anything to the other tile? Are you saying that without the SwapBuffer call other data that is sent to the tile not part of the current frame will "pollute" the first frame that it should render after becoming part of the frame (if a window move or something causes a re tiling)? I can see how that is possible, but ideally, I would filter out everything being sent to the SPUs for a tile that is not part of the scene.... Or are other SPUs using it as some kind of periodic "interrupt" mechanism? > Some good background material is the original WireGL white paper and > the Chromium paper from SIGGRAPH '02 (I think). You should definitely > read those. I think there's also some Stanford papers detailing the > state differencer and packer/unpacker. I read one Stanford paper on the state tracker. I will take a look at the SIGGRAPH papers on Chromium. Thank you for your time, James Steven Supancic III |
From: Brian P. <bri...@tu...> - 2006-08-09 15:24:44
|
James Supancic wrote: > I am trying to figure out how this all fits together. Right now I know > so little about the interactions between the various components that I > can't begin to figure out how to fix things. > > I have been looking at the packer source code, I can't figure out how > the buffer to write to is set? crPackSetBuffer. > I see macros that write data, and I see > a macro to grab the packer context. From the packer context the > functions are able to get a pointer a buffer. Normally write functions > take some kind of stream identifier, but Chromium appears to use a > global variable rather than a function argument. This makes tracking > down exactly how the buffer to write to gets set a bit tricky. Do you > have any idea how I can figure out were it is getting set? You're right that a global var for the current packer context is used. When built thread safe, it's a per-thread pointer. > I am not sure how much of the problem I am experiencing has to do with > the state tracker. I don't think we should have to send anything at > all to a Render SPU if the window being rendered to is not on that > SPUs server. You don't have to send anything if the primitive you're rendering doesn't interesect the Render SPU's window (in terms of projected window coordinates). > I can't be sure, as I am very confused about how the > buffer to be written gets selected, but it looks as if the SwapBuffers > command is being sent to all Render SPUs unconditionally in > tilesortspu_SwapBuffers rather than to just the Render SPUs that have > the Render window on them? Is there a technical reason for this, or > has no one got around to optimizing it yet? That's intentional. Recall that you can make a whole chain of SPUs. Some SPUs depend on getting SwapBuffer calls. If we omitted some SwapBuffer calls, we'd cause trouble for those other SPUs. The VNC SPU is an example. > How does the State Tracker interact with the rest of Chromium? To me > it appears as if it is used to track the difference between the OpenGL > state on the tilesort SPU and the OpenGL state on the Render SPU. Does > it do anything else? To me it appears that the State Tracker is simply > something else uses to keep track of the state defences, it looks as > if something else is actually making the choice to not send something > to some Render SPUs and then using the State Tracker to keep track the > the results of this choice? If this is correct, what code is actually > making this choice? That's basically correct. The tilesort bucketing code determines which crservers need to receive any given primitive. Before sending the primitive, the state differencer is invoked to update each crserver with whatever state it needs to become up-to-date. Some good background material is the original WireGL white paper and the Chromium paper from SIGGRAPH '02 (I think). You should definitely read those. I think there's also some Stanford papers detailing the state differencer and packer/unpacker. -Brian |
From: James S. <arr...@gm...> - 2006-08-09 11:14:13
|
I am trying to figure out how this all fits together. Right now I know so little about the interactions between the various components that I can't begin to figure out how to fix things. I have been looking at the packer source code, I can't figure out how the buffer to write to is set? I see macros that write data, and I see a macro to grab the packer context. From the packer context the functions are able to get a pointer a buffer. Normally write functions take some kind of stream identifier, but Chromium appears to use a global variable rather than a function argument. This makes tracking down exactly how the buffer to write to gets set a bit tricky. Do you have any idea how I can figure out were it is getting set? I am not sure how much of the problem I am experiencing has to do with the state tracker. I don't think we should have to send anything at all to a Render SPU if the window being rendered to is not on that SPUs server. I can't be sure, as I am very confused about how the buffer to be written gets selected, but it looks as if the SwapBuffers command is being sent to all Render SPUs unconditionally in tilesortspu_SwapBuffers rather than to just the Render SPUs that have the Render window on them? Is there a technical reason for this, or has no one got around to optimizing it yet? How does the State Tracker interact with the rest of Chromium? To me it appears as if it is used to track the difference between the OpenGL state on the tilesort SPU and the OpenGL state on the Render SPU. Does it do anything else? To me it appears that the State Tracker is simply something else uses to keep track of the state defences, it looks as if something else is actually making the choice to not send something to some Render SPUs and then using the State Tracker to keep track the the results of this choice? If this is correct, what code is actually making this choice? Thank you for your time, James Steven Supancic III |
From: Brian P. <bri...@tu...> - 2006-08-08 14:55:24
|
James Supancic wrote: > >Why do you say that? Line 87 of tilesortspu_swap.c is a call to > >crPackSwapBuffers(). > > Opps, I was mis-reading my debuger ouptut. > > I am also a bit confused about this. tilesortspu_SwapBuffer calls this > function: > void PACK_APIENTRY crPackSwapBuffers( GLint window, GLint flags ) > { > GET_PACKER_CONTEXT(pc); > unsigned char *data_ptr; > (void) pc; > GET_BUFFERED_POINTER( pc, 16 ); > WRITE_DATA( 0, GLint, 16 ); > WRITE_DATA( 4, GLenum, CR_SWAPBUFFERS_EXTEND_OPCODE ); > WRITE_DATA( 8, GLint, window ); > WRITE_DATA( 12, GLint, flags ); > WRITE_OPCODE( pc, CR_EXTEND_OPCODE ); > } > > to put the SwapBuffers command into the buffer, and it eventually > invokes tilesortspuSendServerBufferThread once per server to send the > buffers? Right. > In the tilesortspuSendServerBufferThread function it looks as if each > server has its own buffer, but crPackSwapBuffers looks like it is just > writting to one buffer? Am I missing something? Does crPackSwapBuffers > get called more than once? Is it somehow packing multiple buffers? Is > there a global buffer that is somehow combined with server specific > buffers at time of send? In the case of the loop over tilesortspuSendServerBuffer(), we're sending the contents of the same buffer to all servers. There's a number of different packing buffers in the Tilesort SPU. Some hold geometry commands and are sent to one or more servers. Some buffers contain state-change commands and are sent to individual servers. The code is pretty complicated since it's evolved a lot over the years. It would be nice to overhaul it someday. -Brian |
From: James S. <arr...@gm...> - 2006-08-08 14:45:16
|
>Why do you say that? Line 87 of tilesortspu_swap.c is a call to >crPackSwapBuffers(). Opps, I was mis-reading my debuger ouptut. I am also a bit confused about this. tilesortspu_SwapBuffer calls this function: void PACK_APIENTRY crPackSwapBuffers( GLint window, GLint flags ) { GET_PACKER_CONTEXT(pc); unsigned char *data_ptr; (void) pc; GET_BUFFERED_POINTER( pc, 16 ); WRITE_DATA( 0, GLint, 16 ); WRITE_DATA( 4, GLenum, CR_SWAPBUFFERS_EXTEND_OPCODE ); WRITE_DATA( 8, GLint, window ); WRITE_DATA( 12, GLint, flags ); WRITE_OPCODE( pc, CR_EXTEND_OPCODE ); } to put the SwapBuffers command into the buffer, and it eventually invokes tilesortspuSendServerBufferThread once per server to send the buffers? In the tilesortspuSendServerBufferThread function it looks as if each server has its own buffer, but crPackSwapBuffers looks like it is just writting to one buffer? Am I missing something? Does crPackSwapBuffers get called more than once? Is it somehow packing multiple buffers? Is there a global buffer that is somehow combined with server specific buffers at time of send? Thank you for your time, James Steven Supancic III |
From: Brian P. <bri...@tu...> - 2006-08-08 14:32:07
|
James Supancic wrote: > I have been working on this problem from the bottom up. I have noticed > that all the data being sent to the remote hosts is comeing from the > call to tilesortspuShipBuffers in tilesortspu_SwapBuffers. I put > tilesortspuShipBuffers(); > return; > at the begining of tilesortspu_SwapBuffer and I still get the same data > spamed to all Render SPUs. > SwapBuffers( 1, 0 ) > is one line repleatedly printed by the Print SPU I inserted between the > tilesort and Render SPUs. Sure, because SwapBuffers is called after each frame is rendered. > Now I know that tilesortspu_SwapBuffers.isn't inserting the SwapBuffers( > 1, 0 ) command. Why do you say that? Line 87 of tilesortspu_swap.c is a call to crPackSwapBuffers(). > What else could be inserting the tilesortspu_SwapBuffers command into > the CRPackBuffer? > > What is the best method to determine which function(s) is/are inserting > a command into a CRPackBuffer? Does gdb take wildcards for breakpoints? If so, you could use 'break crPack*'. -Brian |
From: James S. <arr...@gm...> - 2006-08-08 12:13:47
|
I have been working on this problem from the bottom up. I have noticed that all the data being sent to the remote hosts is comeing from the call to tilesortspuShipBuffers in tilesortspu_SwapBuffers. I put tilesortspuShipBuffers(); return; at the begining of tilesortspu_SwapBuffer and I still get the same data spamed to all Render SPUs. SwapBuffers( 1, 0 ) is one line repleatedly printed by the Print SPU I inserted between the tilesort and Render SPUs. Now I know that tilesortspu_SwapBuffers.isn't inserting the SwapBuffers( 1, 0 ) command. What else could be inserting the tilesortspu_SwapBuffers command into the CRPackBuffer? What is the best method to determine which function(s) is/are inserting a command into a CRPackBuffer? Thank you for your time, James Steven Supancic III |
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 |