The mystery of the disappearing texture


    Sep 14 2006 | 11:37 pm
    Hi
    I've attached a little patch down. I'm trying to understand why the texture disappears when I move the jit.window onto a second screen. I've had this problem in another, much bigger patch to, where I use a movie to jit.gl.texture and a jit.gl.sketch @capture to another jit.gl.texture. I then use two additional jit.gl.sketch objects with a plane, each having one of the two textures. In that case, 1 texture (the movie) stays, but the second one disappears. error : ob3d_draw_preamble initial : GL Error: Invalid operation
    machine : XP, 3.2 pentiumD, Nvidia 7950

    • Sep 15 2006 | 12:14 am
      > I've attached a little patch down. I'm trying to understand why the texture disappears > when I move the jit.window onto a second screen.
      Thanks for stripping down your patch. However, unfortunately, this test patch isn't complete. Please provide a complete test patch as well as more information about your particular GPU coniguration.
      After setting the jit.gl.sketch plane's @texture attribute to point to the texture named one, and making the window floating and dragging to a second monitor (driven from the same GPU), I was able to reproduce an "Invalid Enumeration" error message, but the texture remained visible and applied to the jit.gl.sketch instance rendering a plane.
      If you are using two different GPUs, I hope to look into this and your previously reported problem on Macintosh next week, once I get my hands on some HW. Otherwise, please provide us with more information to help you.
      -Joshua
      -------------------------------------------------------------------- mail2web - Check your email from the web at http://mail2web.com/ .
    • Sep 15 2006 | 9:33 am
      Allright, finally gotten to stripping the actual part out of the patch. It speaks for itself I suppose. On my PC, one texture stays (the video), the geometry disappears when dragging the window to the second screen. I did solve this in a workaround : put the screen to spanning mode so windows sees it as one long screen instead of 2 seperate. This solution is not preferable though, since one jit.window is then stretched across both screens.
      Details about the GPU, any info you had in mind that I can look for ? All I know is that it's a GeForce 7950 GX2 with 1 gb of vram...
      thx.
    • Sep 15 2006 | 10:03 am
      We're having the same trouble here, with an identical card ...
      On 15-sep-2006, at 11:33, Brecht wrote:
      > Allright, finally gotten to stripping the actual part out of the > patch. It speaks for itself I suppose. On my PC, one texture stays > (the video), the geometry disappears when dragging the window to > the second screen. > I did solve this in a workaround : put the screen to spanning mode > so windows sees it as one long screen instead of 2 seperate. > This solution is not preferable though, since one jit.window is > then stretched across both screens. > > Details about the GPU, any info you had in mind that I can look > for ? All I know is that it's a GeForce 7950 GX2 with 1 gb of vram...
    • Sep 15 2006 | 2:53 pm
      In the below patch, I can not seem to get the texture onto the cylinder the right way. It appears rotated 90 degrees. Any tips are welcome. Messing around with the tex_plane_t and s on the sketch object which generates the cylinder does not get met te needed result.
      grtz,
      Brecht.
      On Sep 15, 2006, at 11:33 AM, Brecht wrote:
      > > Allright, finally gotten to stripping the actual part out of the > patch. It speaks for itself I suppose. On my PC, one texture stays > (the video), the geometry disappears when dragging the window to > the second screen. > I did solve this in a workaround : put the screen to spanning mode > so windows sees it as one long screen instead of 2 seperate. > This solution is not preferable though, since one jit.window is > then stretched across both screens. > > Details about the GPU, any info you had in mind that I can look > for ? All I know is that it's a GeForce 7950 GX2 with 1 gb of vram... > > thx. > > #P window setfont "Sans Serif" 9.; > #P window linecount 4; > #P comment 347 554 100 196617 CREATE 2 CYLINDERS AND MAP THE > TEXTURES ON THEM; > #P window linecount 1; > #P message 35 652 94 196617 texture part_two; > #P newex 14 682 430 196617 jit.gl.sketch stuk1 @blend_enable 1 > @position 0. 0. 0.01 @blend_mode 1 1 @depth_enable 0; > #P message 218 273 41 196617 start; > #P newex 7 152 59 196617 r renders; > #P message 40 564 95 196617 texture part_one; > #P newex 90 251 55 196617 r pulse1; > #P newex 53 152 43 196617 s pulse1; > #P newex 14 619 415 196617 jit.gl.sketch stuk1 @blend_enable 1 > @blend_mode 1 1 @depth_enable 0 @position 0. 0 0.; > #P user jit.pwindow 8 320 82 62 0 1 0 0 1 0; > #P newex 90 273 72 196617 speedlim 40; > #P message 176 273 41 196617 loadram; > #P number 40 50 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; > #P message 8 782 76 196617 fullscreen $1; > #P toggle 8 764 15 0; > #P newex 8 741 60 196617 select 27; > #P newex 8 718 40 196617 key; > #P message 14 599 448 196617 reset , shapeorient -90 90 0 , > shapeslice 20 2 , cylinder 0.75 0.75 0.95 45 135 , color 1. 1. 1. > 1.; > #P newex 8 805 92 196617 jit.window stuk1; > #P newex 0 103 53 196617 t b b erase; > #P newex 0 182 213 196617 jit.gl.render stuk1 @erase_color 0. 0. 0. > 1.; > #P toggle 0 50 15 0; > #P newex 0 69 64 196617 qmetro 10; > #P message 149 273 26 196617 read; > #P newex 90 319 392 196617 jit.gl.texture stuk1 @type char @name > part_one @dim 1024 402 @colormode uyvy; > #P newex 90 297 263 196617 jit.qt.movie 1024 402 @colormode uyvy > @autostart 0; > #P message 12 429 331 196617 reset , shapeslice 100 100 , sphere > 1 , color 1. 1. 1. 1 , poly_mode 1 1; > #P newex 12 452 267 196617 jit.gl.sketch stuk1 @capture part_two > @depth_enable 1; > #P newex 12 474 391 196617 jit.gl.texture stuk1 @type char @name > part_two @dim 1024 768 @colormode argb; > #P window linecount 3; > #P comment 348 232 100 196617 READ A MOVIE AND PUT IT IN TEXTURE > "PART_ONE":; > #P window linecount 4; > #P comment 348 392 100 196617 CREATE GEOMETRY AND PUT IT IN TEXTURE > "PART_TWO"; > #P window linecount 1; > #P comment 16 50 13 196617 1; > #P comment 249 274 13 196617 2; > #P comment 305 430 13 196617 4; > #P comment 174 581 13 196617 3; > #P comment 118 565 13 196617 5; > #P comment 114 652 13 196617 6; > #P message 71 782 37 196617 sync 0; > #P fasten 12 0 28 0 95 317 14 317; > #P connect 12 0 13 0; > #P connect 27 0 12 0; > #P fasten 26 0 12 0 181 294 95 294; > #P fasten 14 0 12 0 154 294 95 294; > #P fasten 34 0 12 0 223 294 95 294; > #P connect 31 0 27 0; > #P fasten 18 1 30 0 26 137 58 137; > #P connect 25 0 15 1; > #P connect 36 0 35 0; > #P connect 20 0 35 0; > #P connect 32 0 29 0; > #P connect 20 0 29 0; > #P connect 11 0 10 0; > #P fasten 0 0 19 0 76 801 13 801; > #P connect 23 0 24 0; > #P connect 22 0 23 0; > #P connect 21 0 22 0; > #P fasten 33 0 17 0 12 176 5 176; > #P fasten 18 2 17 0 47 137 5 137; > #P connect 18 0 17 0; > #P connect 15 0 18 0; > #P connect 16 0 15 0; > #P window clipboard copycount 38; > > >
    • Sep 15 2006 | 6:48 pm
      On Sep 15, 2006, at 2:33 AM, Brecht wrote:
      > Allright, finally gotten to stripping the actual part out of the > patch. It speaks for itself I suppose. On my PC, one texture stays > (the video), the geometry disappears when dragging the window to > the second screen. > I did solve this in a workaround : put the screen to spanning mode > so windows sees it as one long screen instead of 2 seperate. > This solution is not preferable though, since one jit.window is > then stretched across both screens.
      Thanks for this clearer version of the patch, which we'll try to figure out a fix for. In the meantime, you could try performing some action which forces a texture rebuild such as sending the message dim 256 256, followed by dim 1024 768 (back to the desired size). Let us know if this does or does not work for you.
      If this doesn't work there is also the possibility that you could try the FBO glreadback backend, by typing "; jitter glreadback fbo" and clicking it. This will use Frame Buffer Objects instead of the default of pbuffers (in either ctt or rtt modes). This solves some pbuffer problems but in various circumstances introduces others. You can change back to pbuffer "Copy To Texture" mode (default on XP) or "Render To Texture" mode by sending the messages "; jitter glreadback ctt" or "; jitter glreadback rtt" respectively. On Windows XP there may be some harmless error messages with rtt mode.
      > Details about the GPU, any info you had in mind that I can look > for ? All I know is that it's a GeForce 7950 GX2 with 1 gb of vram...
      Driver information might be relevant, but as long as you're not using multiple graphics cards (which definitely does have issues at the moment). That's probably enough. You might investigate updated drivers from NVidia, if you're not using the latest.
      -Joshua
    • Sep 15 2006 | 11:35 pm
      >In the below patch, I can not seem to get the texture onto the >cylinder the right way. It appears rotated 90 degrees. Any tips are >welcome. Messing around with the tex_plane_t and s on the sketch >object which generates the cylinder does not get me the needed result
      I might suggest using the texture matrix transform stack, as exposed through jit.gl.sketch. It works just like the modelview matrix transform stack. So to rotate by 90 degrees, you'll want to do something like the following:
      glmatrixmode texture, glpushmatrix, glrotate 90. 0. 0. 1., gltranslate 0. -1., cylinder 0.75 0.75 0.95 45 135, glmatrixmode texture, glpopmatrix
      There are a few things to note here:
      1. you want to push/pop the texture matrix so that you don't adversely affect other objects.
      2. rectangular textures typically don't support the repeating texture wrap mode, but rather clamps, so you will need to translate the texture back into the appropriate range with gltranslate (wouldn't be necessary if you were using power of two textures).
      3. when drawing shapes and other draw commands, the current matrix mode can change, so you need to explicitly set the matrix mode after calling any of the shape or object drawing methods, as we do above in order to pop the matrix.
      For more information on how to use the matrix transform stacks, please see the OpenGL redbook and other OpenGL documentation.
      I'd also suggest you use the recently included cc.uyvy2rgba.jxs shaders on PC (in 1.6.2 beta 9) for maximum performance, converting UYVY on the GPU via jit.gl.slab. You can strip this shader down (and in fact we have for an upcoming beta, called cc.uyvy2rgba.lite.jxs) so that there's no additional color correction or chromasmoothing. Probably not necessary on a GeForce 7950, but it can noticably improve performance on less powerful cards.
      I've also been testing this patch on a MacBookPro running Windows XP and an ATi X1600 Mobility, without issues moving between screens. I'll be testing on an NVidia card shortly.
      -Joshua
      -------------------------------------------------------------------- mail2web - Check your email from the web at http://mail2web.com/ .
    • Sep 15 2006 | 11:40 pm
      Cool. I'll try this out to see whether it works. I'm not using multiple graphics cards so that is not the issue. Interesting to know might be that when I set the display to screen spanning mode the issue is resolved. So apparently it's only giving problems when the 2 displays are used as 'indiviual displays' as the setting is named. The driver used is : 91.47, which is supposed to be the latest one for the graphics card (released 14th september).
      Anyway, the issues are 'resolved' now, using this workaround if anyone has to deal with this in the near future :
      -setting screens to screen spanning mode -sending the 'rect x1 y1 x2 y2' for fullscreen workaround instead of the 'fullscreen 1' command -movie texture rotation, which I posted before with the plane_t and plane_s thing I could not work out : use Quicktime Pro, apple (ctrl)- J, select video track, rotate (the buttons with the circular arrows) and save as standalone movie. Basically, if you can't figure out the rotation of the texture, rotate the movie and swap the x-y resolution of qt and texture objects accordingly ;) -get rid of "balloon popups" from the task bar like so : http:// support.microsoft.com/default.aspx?scid=KB;en-us;307729
      -to get rid of the blue bar of the taskbar when it's set to auto- hide.... I haven't figured out yet.
      brecht.
      On Sep 15, 2006, at 8:48 PM, Joshua Kit Clayton wrote:
      > > On Sep 15, 2006, at 2:33 AM, Brecht wrote: > >> Allright, finally gotten to stripping the actual part out of the >> patch. It speaks for itself I suppose. On my PC, one texture stays >> (the video), the geometry disappears when dragging the window to >> the second screen. >> I did solve this in a workaround : put the screen to spanning mode >> so windows sees it as one long screen instead of 2 seperate. >> This solution is not preferable though, since one jit.window is >> then stretched across both screens. > > > Thanks for this clearer version of the patch, which we'll try to > figure out a fix for. In the meantime, you could try performing > some action which forces a texture rebuild such as sending the > message dim 256 256, followed by dim 1024 768 (back to the desired > size). Let us know if this does or does not work for you. > > If this doesn't work there is also the possibility that you could > try the FBO glreadback backend, by typing "; jitter glreadback fbo" > and clicking it. This will use Frame Buffer Objects instead of the > default of pbuffers (in either ctt or rtt modes). This solves some > pbuffer problems but in various circumstances introduces others. > You can change back to pbuffer "Copy To Texture" mode (default on > XP) or "Render To Texture" mode by sending the messages "; jitter > glreadback ctt" or "; jitter glreadback rtt" respectively. On > Windows XP there may be some harmless error messages with rtt mode. > > >> Details about the GPU, any info you had in mind that I can look >> for ? All I know is that it's a GeForce 7950 GX2 with 1 gb of vram... > > Driver information might be relevant, but as long as you're not > using multiple graphics cards (which definitely does have issues at > the moment). That's probably enough. You might investigate updated > drivers from NVidia, if you're not using the latest. > > -Joshua > > >
    • Sep 16 2006 | 12:25 am
      >> Details about the GPU, any info you had in mind that I can look >> for ? All I know is that it's a GeForce 7950 GX2 with 1 gb of vram...
      Sorry. I wasn't paying attention to this closely enough. The GX2 is a *Dual* GPU card. So this sounds like it has the same issues as has been reported with mulitple GPUs on multiple cards. It also sounds like a single GPU will typically drive both displays in the spanning mode, or that at least it doesn't exhibit these problems.
      I've also verified no issues (aside from the harmless invalid enumeration message) on a single GPU GeForce 6800 driving multiple displays. So this sounds like the most likely issue.
      We'll be investigating these multi-GPU issues next week when our HW arrives. In the meantime, you might also investigate if in your driver options if you can disable the second GPU on the 7950, and see if that also solves your problems (I have no idea if this is in fact exposed or not).
      Thanks for your reports. I'd be interested to hear your findings with the following four tests if possible (using individual disaplays rather than monitor spanning):
      1. Don't start rendering until after you've moved the window to the second monitor
      2. Force rebuilding the texture using dim messages after dragging to a new monitor (having already started rendering on the first).
      3. using "; jitter glreadback fbo" instead of the XP default "; jitter glreadback ctt"
      4. disabling the second GPU if it is exposed in the driver settings somewhere.
      Thanks again, Joshua
      -------------------------------------------------------------------- mail2web - Check your email from the web at http://mail2web.com/ .
    • Sep 16 2006 | 10:43 am
      Yes.. it is a dual GPU card... sorry for failing to mention that. I tried what you suggested but with no success. The card does not allow for using a single GPU to drive both screens. When dragging the window to the second screen it fails to render anything, even the un-textured cylinder fails. The Max window reads : ob3d_draw_end popmatrix: GL Error: Invalid operation
      This opposed to starting the rendering on the main screen which, after dragging to the second, results in *only* the gl.sketch @capture with associated gl.texture to fail, with the movie texture running smoothly. The glreadback fbo and glreadback ctt does not produce any noticeable difference in the above.
      Thanks anyway for the tip, though they didn't result in a solution, I hope these results can be usefull to you.
      On Sep 16, 2006, at 2:25 AM, jkc@musork.com wrote:
      > >>> Details about the GPU, any info you had in mind that I can look >>> for ? All I know is that it's a GeForce 7950 GX2 with 1 gb of >>> vram... > > > Sorry. I wasn't paying attention to this closely enough. The GX2 is a > *Dual* GPU card. So this sounds like it has the same issues as has > been > reported with mulitple GPUs on multiple cards. It also sounds like > a single > GPU will typically drive both displays in the spanning mode, or > that at > least it doesn't exhibit these problems. > > I've also verified no issues (aside from the harmless invalid > enumeration > message) on a single GPU GeForce 6800 driving multiple displays. So > this > sounds like the most likely issue. > > We'll be investigating these multi-GPU issues next week when our HW > arrives. In the meantime, you might also investigate if in your driver > options if you can disable the second GPU on the 7950, and see if > that also > solves your problems (I have no idea if this is in fact exposed or > not). > > Thanks for your reports. I'd be interested to hear your findings > with the > following four tests if possible (using individual disaplays rather > than > monitor spanning): > > 1. Don't start rendering until after you've moved the window to the > second > monitor > > 2. Force rebuilding the texture using dim messages after dragging > to a new > monitor (having already started rendering on the first). > > 3. using "; jitter glreadback fbo" instead of the XP default "; jitter > glreadback ctt" > > 4. disabling the second GPU if it is exposed in the driver settings > somewhere. > > Thanks again, > Joshua > > > -------------------------------------------------------------------- > mail2web - Check your email from the web at > http://mail2web.com/ . > > > > >
    • Sep 19 2006 | 3:34 pm
      Hi, we have the same problem. I stripped it down to a very basic patch. There is no texture readback involved, only the texture that disappears.
      Steps to reproduce are inside the patch.
      My setup is G5 Quad 2.5 GHz, GeForce 7800GT 256MB, Mac OS 10.4.7, Max 4.5.7, Jitter 1.5.2
      Thanks, Mattijs
    • Sep 19 2006 | 4:26 pm
      On Sep 19, 2006, at 8:34 AM, Mattijs Kneppers wrote:
      > Hi, we have the same problem. I stripped it down to a very basic > patch. There is no texture readback involved, only the texture that > disappears. > Steps to reproduce are inside the patch. > My setup is G5 Quad 2.5 GHz, GeForce 7800GT 256MB, Mac OS 10.4.7, > Max 4.5.7, Jitter 1.5.2
      This looks like a different problem entirely. In this instance your texture is re-created, and requires @mode static if you're not going to keep banging the movie to fill the texture. By default @mode dynamic is employed for faster video update.
      Let us know if jit.gl.texture @mode static doesn't solve your issues.
      Brecht's problem might also be related to using 1.5.X instead of 1.6 (for which there's a public beta for PC, but should wait until later this week probably for a new version). Final release of 1.5.3 for CFM is coming soon too.
      -Joshua
    • Sep 20 2006 | 9:07 am
      Oi! It looks like I've been making a mistake here. The was no rendering context in my jit.gl.texture.
      Funny though that without a rendering context the texture still works until you drag the window to another screen..
      Best, Mattijs