Hi all,
We're thinking of migrating some tests to PsychToolbox so they can run
in OS X natively, but we're running into some speed problems. They're
random dot motion tests, running on a 1.8Ghz G5, which should be
plenty fast. Anyway, the call in question is:
b(i) = Screen('MakeTexture', screenNum, img);
where imgR is a 765x765 pixel array on a 1280x1024 screen to get the
proper size, screenNum comes from Screen('screens').
The call takes on average 0.1s, meaning a 10-frame stimulus takes ~1s
to generate (just for the MakeTexture calls, generating the dots
themselves put this up closer to 2s, but that's not a psychtoolbox
issue). It's not really feasible to wait this long between stimulus
presentations when giving a test. By reducing the resolution to
800x640, the pixel array doesn't need to be quite as big, and we can
get the MakeTexture time down to ~0.07 per frame (so still >1s total
to generate a 10-frame stimulus).
(To clarify-- displaying the stimuli is fine, it's just in the
generation/maketexture process that these delays occur, meaning long
waits after a subject gives their response)
So, is there anything we can do to make this call faster? We've tried
using other window pointers than the fullscreen, but without much luck
(or knowing exactly what to try). Failing that, what is the limiting
factor on speed for the MakeTexture call? Anything that might improve
in the future?
We've timed the demos for similarly sized stimuli and get the same
problem. It's not as much of a problem for small stimuli or only a
few frames, but that's not usually possible for us, and even 10-frames
is often not enough.
Any suggestions?
Thanks very much!
Finnegan
We're thinking of migrating some tests to PsychToolbox so they can run
in OS X natively, but we're running into some speed problems. They're
random dot motion tests, running on a 1.8Ghz G5, which should be
plenty fast. Anyway, the call in question is:
b(i) = Screen('MakeTexture', screenNum, img);
where imgR is a 765x765 pixel array on a 1280x1024 screen to get the
proper size, screenNum comes from Screen('screens').
The call takes on average 0.1s, meaning a 10-frame stimulus takes ~1s
to generate (just for the MakeTexture calls, generating the dots
themselves put this up closer to 2s, but that's not a psychtoolbox
issue). It's not really feasible to wait this long between stimulus
presentations when giving a test. By reducing the resolution to
800x640, the pixel array doesn't need to be quite as big, and we can
get the MakeTexture time down to ~0.07 per frame (so still >1s total
to generate a 10-frame stimulus).
(To clarify-- displaying the stimuli is fine, it's just in the
generation/maketexture process that these delays occur, meaning long
waits after a subject gives their response)
So, is there anything we can do to make this call faster? We've tried
using other window pointers than the fullscreen, but without much luck
(or knowing exactly what to try). Failing that, what is the limiting
factor on speed for the MakeTexture call? Anything that might improve
in the future?
We've timed the demos for similarly sized stimuli and get the same
problem. It's not as much of a problem for small stimuli or only a
few frames, but that's not usually possible for us, and even 10-frames
is often not enough.
Any suggestions?
Thanks very much!
Finnegan