Framerate problems with triple head output.

Mar 3, 2008 at 3:23am

Framerate problems with triple head output.

Hi, I’m new to max/jitter.

I’ve done tons of work and reading trying to get this to work well, but I am still stuck with about 6-7 frames per second running this patch.

The goal is to run crossfades of approximately 900×1024 jpeg images fullscreen on three projectors during a live performance. I’d like to have smooth crossfades if possible.

I’ve attached an example image.

Thanks for your help.

#P window setfont “Sans Serif” 9.;
#P number 780 45 35 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P window linecount 1;
#P newex 1000 314 94 9109513 jit.gl.videoplane third;
#P newex 810 318 106 9109513 jit.gl.videoplane second;
#P newex 610 321 93 9109513 jit.gl.videoplane first;
#P message 482 210 81 9109513 param amount $1;
#P flonum 482 176 35 9 0. 1. 3 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P message 494 237 85 9109513 read co.normal.jxs;
#P newex 281 151 116 9109513 jit.gl.render third @ortho 2;
#P newex 281 184 128 9109513 jit.gl.render second @ortho 2;
#P newex 282 218 115 9109513 jit.gl.render first @ortho 2;
#P newex 223 108 53 9109513 t b b erase;
#P user jit.fpsgui 305 107 60 9109513 0;
#P message 1050 204 26 9109513 read;
#P message 994 136 26 9109513 read;
#P newex 994 282 66 9109513 jit.gl.slab third;
#P newex 1050 239 55 9109513 jit.qt.movie;
#P newex 994 173 55 9109513 jit.qt.movie;
#P newex 0 248 196 9109513 jit.window third @floating 1 @size 1280 1024;
#P message 879 203 26 9109513 read;
#P message 811 134 26 9109513 read;
#P newex 811 280 78 9109513 jit.gl.slab second;
#P newex 879 238 55 9109513 jit.qt.movie;
#P newex 811 171 55 9109513 jit.qt.movie;
#P newex 3 201 205 9109513 jit.window second @floating 1 @size 1280 1024;
#P toggle 731 40 15 0;
#P message 666 204 26 9109513 read;
#P message 611 135 26 9109513 read;
#P newex 611 281 65 9109513 jit.gl.slab first;
#P newex 666 239 55 9109513 jit.qt.movie;
#P newex 611 172 55 9109513 jit.qt.movie;
#P newex 2 148 192 9109513 jit.window first @floating 1 @size 1280 1024;
#P newex 731 67 45 9109513 metro 33;
#P fasten 0 0 21 0 736 96 228 96;
#P fasten 21 0 24 0 228 139 286 139;
#P fasten 21 2 24 0 270 139 286 139;
#P fasten 21 0 23 0 228 177 286 177;
#P fasten 21 2 23 0 270 177 286 177;
#P fasten 21 0 22 0 228 211 287 211;
#P fasten 21 2 22 0 270 210 287 210;
#P fasten 0 0 20 0 736 96 310 96;
#P connect 26 0 27 0;
#P connect 4 0 28 0;
#P fasten 0 0 2 0 736 162 616 162;
#P connect 5 0 2 0;
#P connect 2 0 4 0;
#P fasten 25 0 4 0 499 267 616 267;
#P fasten 27 0 4 0 487 266 616 266;
#P fasten 0 0 3 0 736 230 671 230;
#P connect 6 0 3 0;
#P connect 3 0 4 1;
#P connect 7 0 0 0;
#P connect 31 0 0 1;
#P connect 11 0 29 0;
#P fasten 0 0 9 0 736 162 816 162;
#P connect 12 0 9 0;
#P connect 9 0 11 0;
#P fasten 25 0 11 0 499 266 816 266;
#P fasten 0 0 10 0 736 230 884 230;
#P connect 13 0 10 0;
#P connect 10 0 11 1;
#P fasten 27 0 11 1 487 266 884 266;
#P fasten 0 0 15 0 736 162 999 162;
#P connect 18 0 15 0;
#P connect 15 0 17 0;
#P fasten 25 0 17 0 499 266 999 266;
#P fasten 27 0 17 0 487 266 999 266;
#P connect 17 0 30 0;
#P fasten 0 0 16 0 736 230 1055 230;
#P connect 19 0 16 0;
#P connect 16 0 17 1;
#P window clipboard copycount 32;

#36153
Mar 3, 2008 at 4:50am

Just to clarify the hardware I’m using is as follows:

Celeron D 3.06 Ghz
1 MB DDR pc3200 ram

2x Geforce 6200 w/256 MB Vram — PCI

I know that this hardware setup was quite underestimated, I’ve ordered a Pentium D dual core proc to replace the celeron (haha celeron yeah right).

I’ve also got another gig of ram coming.

Basically I just want this to run as well as humanly possible.

I’m hoping to have at least 15 fps… more would be a bonus.

Thanks again!

#123850
Mar 3, 2008 at 5:01pm

Is there a way to send a texture to the video card once, and from then on apply the textures to the video plane and then use a shader to crossfade between them?

I’m having a hard time wrapping my head around how to use textures efficiently to do what I’m trying to do.

#123851
Mar 3, 2008 at 6:48pm

if you want to send a texture to a video card once,

make a jit.gl.texture object, and send a matrix to it once…

what does “once” mean?

bang it once

ONEBANG -> matrix stuff that is your bitmap texture -> jit.gl.texture
@name MYTEXTURE

IE, dont use metro since metro REPEATS.

and then wire/patchj the texture where you want it like normal.

its that simple :)

On Mar 3, 2008, at 12:01 PM, bill wrote:

>
> Is there a way to send a texture to the video card once, and from
> then on apply the textures to the video plane and then use a shader
> to crossfade between them?
>
> I’m having a hard time wrapping my head around how to use textures
> efficiently to do what I’m trying to do.
>
>

#123852
Mar 3, 2008 at 9:00pm

Like this?

I thought I might use something like uyvy colormode, but if I’m not passing video does it matter?

Are there any other things I could do to this patch to boost the framerate? I’ve looked at all your patches vade and I don’t see anything else that would apply…

Hopefully that Pentium D will save my day, but right now the framerate on my crappy celeron is a dismal 4.5 fps…

Thanks for your help.

#P window setfont “Sans Serif” 9.;
#P user jit.fpsgui 51 217 60 9109513 0;
#P window linecount 1;
#P newex 282 146 27 9109513 t b b;
#P message 778 175 52 9109513 read , bang;
#P message 710 104 52 9109513 read , bang;
#P newex 778 200 101 9109513 jit.qt.movie 1024 1024;
#P newex 710 127 101 9109513 jit.qt.movie 1024 1024;
#P message 483 176 52 9109513 read , bang;
#P message 428 105 52 9109513 read , bang;
#P newex 483 201 101 9109513 jit.qt.movie 1024 1024;
#P newex 428 128 101 9109513 jit.qt.movie 1024 1024;
#P number 371 35 35 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 1007 333 242 9109513 jit.gl.videoplane third @transform_reset 2 @automatic 0;
#P newex 710 332 254 9109513 jit.gl.videoplane second @transform_reset 2 @automatic 0;
#P newex 428 333 241 9109513 jit.gl.videoplane first @transform_reset 2 @automatic 0;
#P message 350 229 81 9109513 param amount $1;
#P message 331 184 85 9109513 read co.normal.jxs;
#P newex 51 127 75 9109513 jit.gl.render third;
#P newex 51 154 87 9109513 jit.gl.render second;
#P newex 51 181 74 9109513 jit.gl.render first;
#P newex 0 91 53 9109513 t b b erase;
#P message 1063 177 52 9109513 read , bang;
#P message 1007 106 52 9109513 read , bang;
#P newex 1007 292 127 9109513 jit.gl.slab third @automatic 0;
#P newex 1063 202 101 9109513 jit.qt.movie 1024 1024;
#P newex 1007 129 101 9109513 jit.qt.movie 1024 1024;
#P newex 75 302 193 9109513 jit.window third @floating 1 @size 1024 1024;
#P newex 710 290 139 9109513 jit.gl.slab second @automatic 0;
#P newex 75 277 205 9109513 jit.window second @floating 1 @size 1024 1024;
#P toggle 331 30 15 0;
#P newex 428 291 126 9109513 jit.gl.slab first @automatic 0;
#P newex 75 253 192 9109513 jit.window first @floating 1 @size 1024 1024;
#P newex 331 58 50 9109513 qmetro 33;
#P flonum 350 207 35 9 0. 1. 3 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P fasten 31 1 3 0 304 276 433 276;
#P fasten 31 1 6 0 304 276 715 276;
#P fasten 31 1 10 0 304 276 1012 276;
#P fasten 31 0 19 0 287 324 433 324;
#P fasten 31 0 20 0 287 324 715 324;
#P fasten 31 0 21 0 287 324 1012 324;
#P connect 10 0 21 0;
#P connect 6 0 20 0;
#P fasten 18 0 3 0 355 254 433 254;
#P lcolor 7;
#P fasten 18 0 10 0 355 254 1012 254;
#P lcolor 7;
#P fasten 17 0 3 0 336 254 433 254;
#P lcolor 7;
#P fasten 17 0 6 0 336 254 715 254;
#P lcolor 7;
#P fasten 17 0 10 0 336 254 1012 254;
#P lcolor 7;
#P connect 8 0 10 0;
#P connect 9 0 10 1;
#P fasten 27 0 6 0 715 148;
#P connect 28 0 6 1;
#P connect 23 0 3 0;
#P connect 24 0 3 1;
#P connect 3 0 19 0;
#P connect 12 0 9 0;
#P connect 11 0 8 0;
#P connect 30 0 28 0;
#P connect 29 0 27 0;
#P connect 26 0 24 0;
#P connect 25 0 23 0;
#P connect 22 0 1 1;
#P connect 4 0 1 0;
#P lcolor 15;
#P connect 0 0 18 0;
#P fasten 13 1 31 0 26 113 287 113;
#P connect 14 0 32 0;
#P fasten 13 0 16 0 5 121 56 121;
#P fasten 13 0 15 0 5 151 56 151;
#P fasten 13 0 14 0 5 176 56 176;
#P fasten 13 2 16 0 47 121 56 121;
#P fasten 13 2 15 0 47 151 56 151;
#P fasten 13 2 14 0 47 176 56 176;
#P fasten 1 0 13 0 336 88 5 88;
#P lcolor 15;
#P window clipboard copycount 33;

#123853
Mar 3, 2008 at 9:25pm

Did you try this?

Schematically, not actually working:

#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#P newex 774 34 131 196617 loadmess position 1.5 0. 0.;
#P newex 461 34 125 196617 loadmess position 0. 0. 0.;
#P newex 106 34 136 196617 loadmess position -1.5 0. 0.;
#P newex 908 230 30 196617 !- 1.;
#P newex 908 250 107 196617 prepend color 1. 1. 1.;
#P newex 722 250 178 196617 jit.gl.videoplane me @texture image6;
#P message 722 185 57 196617 read , bang;
#P newex 722 224 154 196617 jit.gl.texture me @name image1;
#P newex 722 204 63 196617 jit.qt.movie;
#P flonum 921 115 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 908 143 107 196617 prepend color 1. 1. 1.;
#P newex 722 143 178 196617 jit.gl.videoplane me @texture image5;
#P message 722 79 57 196617 read , bang;
#P newex 722 117 154 196617 jit.gl.texture me @name image1;
#P newex 722 97 63 196617 jit.qt.movie;
#P comment 961 115 66 196617 fade amount;
#P newex 571 230 30 196617 !- 1.;
#P newex 571 250 107 196617 prepend color 1. 1. 1.;
#P newex 385 250 178 196617 jit.gl.videoplane me @texture image4;
#P message 385 185 57 196617 read , bang;
#P newex 385 224 154 196617 jit.gl.texture me @name image1;
#P newex 385 204 63 196617 jit.qt.movie;
#P flonum 584 115 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 571 143 107 196617 prepend color 1. 1. 1.;
#P newex 385 143 178 196617 jit.gl.videoplane me @texture image3;
#P message 385 79 57 196617 read , bang;
#P newex 385 117 154 196617 jit.gl.texture me @name image1;
#P newex 385 97 63 196617 jit.qt.movie;
#P comment 624 115 66 196617 fade amount;
#P newex 234 230 30 196617 !- 1.;
#P newex 48 305 81 196617 jit.gl.render me;
#P newex 234 250 107 196617 prepend color 1. 1. 1.;
#P newex 48 250 178 196617 jit.gl.videoplane me @texture image2;
#P message 48 185 57 196617 read , bang;
#P newex 48 224 154 196617 jit.gl.texture me @name image1;
#P newex 48 204 63 196617 jit.qt.movie;
#P flonum 247 115 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 234 143 107 196617 prepend color 1. 1. 1.;
#P newex 48 143 178 196617 jit.gl.videoplane me @texture image1;
#P message 48 79 57 196617 read , bang;
#P newex 48 117 154 196617 jit.gl.texture me @name image1;
#P newex 48 97 63 196617 jit.qt.movie;
#P newex 48 333 74 196617 jit.window me;
#P comment 287 115 66 196617 fade amount;
#P connect 43 0 32 0;
#P connect 43 0 38 0;
#P connect 42 0 19 0;
#P connect 42 0 25 0;
#P connect 41 0 5 0;
#P connect 41 0 11 0;
#P connect 39 0 38 0;
#P connect 33 0 32 0;
#P connect 26 0 25 0;
#P connect 20 0 19 0;
#P connect 12 0 11 0;
#P connect 40 0 39 0;
#P connect 37 0 35 0;
#P connect 35 0 36 0;
#P connect 29 0 30 0;
#P connect 31 0 29 0;
#P connect 34 0 40 0;
#P connect 34 0 33 0;
#P connect 21 0 20 0;
#P connect 21 0 27 0;
#P connect 18 0 16 0;
#P connect 16 0 17 0;
#P connect 22 0 23 0;
#P connect 24 0 22 0;
#P connect 27 0 26 0;
#P connect 7 0 6 0;
#P connect 7 0 14 0;
#P connect 14 0 12 0;
#P connect 10 0 8 0;
#P connect 8 0 9 0;
#P connect 6 0 5 0;
#P connect 2 0 3 0;
#P connect 4 0 2 0;
#P window clipboard copycount 44;

#123854
Mar 3, 2008 at 10:20pm

Does your video card have enough vram to actually display the
textures? It looks like you are not running any effects, why not

1) use one large window?
2) do you need to have movies at 1024×1024
3) if you use no effects why not use direct to window?

On Mar 3, 2008, at 4:25 PM, Mattijs Kneppers wrote:

>
> Did you try this?
>
> Schematically, not actually working:
>
> #P window setfont “Sans Serif” 9.;
> #P window linecount 1;
> #P newex 774 34 131 196617 loadmess position 1.5 0. 0.;
> #P newex 461 34 125 196617 loadmess position 0. 0. 0.;
> #P newex 106 34 136 196617 loadmess position -1.5 0. 0.;
> #P newex 908 230 30 196617 !- 1.;
> #P newex 908 250 107 196617 prepend color 1. 1. 1.;
> #P newex 722 250 178 196617 jit.gl.videoplane me @texture image6;
> #P message 722 185 57 196617 read , bang;
> #P newex 722 224 154 196617 jit.gl.texture me @name image1;
> #P newex 722 204 63 196617 jit.qt.movie;
> #P flonum 921 115 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P newex 908 143 107 196617 prepend color 1. 1. 1.;
> #P newex 722 143 178 196617 jit.gl.videoplane me @texture image5;
> #P message 722 79 57 196617 read , bang;
> #P newex 722 117 154 196617 jit.gl.texture me @name image1;
> #P newex 722 97 63 196617 jit.qt.movie;
> #P comment 961 115 66 196617 fade amount;
> #P newex 571 230 30 196617 !- 1.;
> #P newex 571 250 107 196617 prepend color 1. 1. 1.;
> #P newex 385 250 178 196617 jit.gl.videoplane me @texture image4;
> #P message 385 185 57 196617 read , bang;
> #P newex 385 224 154 196617 jit.gl.texture me @name image1;
> #P newex 385 204 63 196617 jit.qt.movie;
> #P flonum 584 115 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P newex 571 143 107 196617 prepend color 1. 1. 1.;
> #P newex 385 143 178 196617 jit.gl.videoplane me @texture image3;
> #P message 385 79 57 196617 read , bang;
> #P newex 385 117 154 196617 jit.gl.texture me @name image1;
> #P newex 385 97 63 196617 jit.qt.movie;
> #P comment 624 115 66 196617 fade amount;
> #P newex 234 230 30 196617 !- 1.;
> #P newex 48 305 81 196617 jit.gl.render me;
> #P newex 234 250 107 196617 prepend color 1. 1. 1.;
> #P newex 48 250 178 196617 jit.gl.videoplane me @texture image2;
> #P message 48 185 57 196617 read , bang;
> #P newex 48 224 154 196617 jit.gl.texture me @name image1;
> #P newex 48 204 63 196617 jit.qt.movie;
> #P flonum 247 115 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P newex 234 143 107 196617 prepend color 1. 1. 1.;
> #P newex 48 143 178 196617 jit.gl.videoplane me @texture image1;
> #P message 48 79 57 196617 read , bang;
> #P newex 48 117 154 196617 jit.gl.texture me @name image1;
> #P newex 48 97 63 196617 jit.qt.movie;
> #P newex 48 333 74 196617 jit.window me;
> #P comment 287 115 66 196617 fade amount;
> #P connect 43 0 32 0;
> #P connect 43 0 38 0;
> #P connect 42 0 19 0;
> #P connect 42 0 25 0;
> #P connect 41 0 5 0;
> #P connect 41 0 11 0;
> #P connect 39 0 38 0;
> #P connect 33 0 32 0;
> #P connect 26 0 25 0;
> #P connect 20 0 19 0;
> #P connect 12 0 11 0;
> #P connect 40 0 39 0;
> #P connect 37 0 35 0;
> #P connect 35 0 36 0;
> #P connect 29 0 30 0;
> #P connect 31 0 29 0;
> #P connect 34 0 40 0;
> #P connect 34 0 33 0;
> #P connect 21 0 20 0;
> #P connect 21 0 27 0;
> #P connect 18 0 16 0;
> #P connect 16 0 17 0;
> #P connect 22 0 23 0;
> #P connect 24 0 22 0;
> #P connect 27 0 26 0;
> #P connect 7 0 6 0;
> #P connect 7 0 14 0;
> #P connect 14 0 12 0;
> #P connect 10 0 8 0;
> #P connect 8 0 9 0;
> #P connect 6 0 5 0;
> #P connect 2 0 3 0;
> #P connect 4 0 2 0;
> #P window clipboard copycount 44;
>

#123855
Mar 4, 2008 at 1:16am

Vade-

The cards I have have 256 megs of vram, so I don’t think that is an issue.

1. I have two graphics cards running 3 projectors and a console, so spanning a single window across all three is out of the question. If I had time to acquire a matrox triplehead to go and a beefier graphics card, I would do that instead. Hindsight is 20/20.

2. The images I am using are going to be projected quite large, and I want the resolution to be good enough to make out details in the images. The higher the resolution, the better my end result. I’m willing to compromise in the end for framerate’s sake, but I’d like to get as much resolution out of this as possible.

3. I need to do a crossfade, and I’d like to offload as much work as possible to the GPU. Maybe i’m not understanding what you mean by direct to window.

If it were possible, I’d run this show on my personal, overbuilt gaming rig. For reasons beyond the scope of this thread, that is impossible.

I think the CPU may be the primary issue here. The CPU is pegged at 100% while my patch is running. Maybe I’ll see an improvement on Thursday when the new processor gets here.

#123856
Mar 4, 2008 at 1:29am

I can get 60fps on your patch with my MBP, no problems. When I turn
on all of the movies, I get around 11-12. Is this what you’re seeing?

wes

#123857
Mar 4, 2008 at 1:31am

With all the movies running, I get about 5 fps.

#123858
Mar 4, 2008 at 1:37am

Sorry, I don’t have time to look at your patch in detail, but I would
definitely recommend you do this in one window spanning the entire
triple head device. With @sync enabled for jit.window (the default),
the framerate with deteriorate by integer multiples, one for each
window (e.g. with 3 windows and a refresh cycle of 60 hz/fps, you’ll
get 20fps where you would other wise be able to get 60fps).

And if you’re using still images, as people have recommended send
them to the card once (using an instance of jit.gl.texture,
jit.gl.videoplane, or jit.gl.slab).

-Joshua

#123859

You must be logged in to reply to this topic.