Problems with G4 800 MHz and Radeon Mobility 7500

Dear Denis and the list,

I have been working over the last few weeks to learn the Toolbox with plans
to use new G4 Powerbook and it's ATI Radeon Mobility 7500 DualHead chip to
drive an external VGA monitor at 10 bit CLUT resolution. I tested the G4 at
a local Apple store using Ben Singer's testgamma-06-11-02 program and it
passed the 10-bit test using the high bits.

The G4 arrived today but the tests don't look good. I ran a Screentest,
Cluttest, WaitBlankingTest, and LoadCluttest with the G4 booted in OS 9.2.2
and the VGA monitor connected as Screen 1 through the VDI-VGA cable.

The SetGammaWaitTest, called in Screentest, produced runtime errors. The
ClutTest didn't map well. The WaitBlankingTest looked OK to my novice eye,
and the LoadClutTest also didn't look good. Test results are below.

Any advice would be appreciated. Is it premature to think such a setup can
work?

Chris


--
Chris Chase, Ph.D.
Associate Professor of Psychology
Claremont McKenna College
850 Columbia Ave.
Claremont, CA 91711

909.607.3668 (office)
909.621.8419 (FAX)
chris.chase@...

---

»screentest
ScreenTest
*** Chris Chase's PowerBook G4/800, Mac OS 9.2.2 *************************
G4, 800 MHz, memory bus 133 MHz, 96.556 Mflop/s
Psychtoolbox 2.51, 5 July 2002, Matlab 5.2.1.1421
*** Screen 0 *************************************************************
ATY,Crown_A (.Display_DualHead version 1.0b76) in slot ATI
10 bit dacs. 1280x854 60 Hz.
Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
- - - - - - - - - - - - - - - - - - - - - - - - -
pixel size 8 16 32 bits
pages 1 1 1
CopyWindow (ie CopyBits) 185 185 186 MB/s
SetClut suppresses ints. for 0.0 0.0 0.0 frames
LoadClut vs. GetClut? ( 8 bits) == == ==
LoadClut vs. GetClut? (10 bits) 4 4 4 #'s are max error.
- - - - - - - - - - - - - - - - - - - - - - - - -
SetClut waits for blanking (i.e. ~60 Hz) if parameters have these values:

60 Hz:
The following parameters don't affect whether SetClut waits for blanking:
prioritySequence clutEntries pixelSize
- - - - - - - - - - - - - - - - - - - - - - - - -
SetGamma waits for blanking (i.e. ~60 Hz) if parameters have these values:
pixelSize
??? In an assignment A(I) = B, the number of elements in B and
I must be the same.

Error in ==> Macintosh HD:Applications (Mac OS 9):MATLAB
5:Toolbox:Psychtoolbox:PsychTests:SetGammaWaitTest.m
On line 71 ==> [s(1) s(2) s(3) s(4)]=ind2sub(sizeWaits,i);

Error in ==> Macintosh HD:Applications (Mac OS 9):MATLAB
5:Toolbox:Psychtoolbox:PsychTests:ScreenTest.m
On line 644 ==> SetGammaWaitTest(screenNumber);

Error in ==> Macintosh HD:Applications (Mac OS 9):MATLAB
5:Toolbox:Psychtoolbox:PsychTests:ScreenTest.m
On line 428 ==> ScreenTest(screenNumber);

»cluttest
ClutTest
*** Chris Chase's PowerBook G4/800, Mac OS 9.2.2 *************************
G4, 800 MHz, memory bus 133 MHz, 98.208 Mflop/s
Psychtoolbox 2.51, 5 July 2002, Matlab 5.2.1.1421
*** Screen 0 *************************************************************
ATY,CrowATY,Crown_B (.Display_DualHead version 1.0b76) in slot ATI
10 bit dacs. 1280x854 60 Hz.
Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
- - - - - - - - - - - - - - - - - - - - - - - - -
pixelSize 8. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
predicted.
pixelSize 8. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
predicted.
pixelSize 16. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
predicted.
pixelSize 16. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
predicted.
pixelSize 32. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
predicted.
pixelSize 32. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
predicted.
pixelSize 8. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
Radeon. GetClut != predicted. Max error 4. Rms error 2.0.
1: GetClut:[ 4 1023 52] vs. expected:[ 4 1019 52]
2: GetClut:[ 8 1019 799] vs. expected:[ 8 1015 795]
3: GetClut:[ 12 1015 811] vs. expected:[ 12 1011 807]
4: GetClut:[ 16 1011 84] vs. expected:[ 16 1007 84]
. . .
251: GetClut:[ 1011 16 140] vs. expected:[ 1007 16 140]
252: GetClut:[ 1015 12 1023] vs. expected:[ 1011 12 1023]
253: GetClut:[ 1019 8 341] vs. expected:[ 1015 8 341]
254: GetClut:[ 1023 4 522] vs. expected:[ 1019 4 522]
pixelSize 16. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
Radeon. GetClut == predicted.
pixelSize 16. randomize 1. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
Radeon. GetClut != predicted. Max error 4. Rms error 2.3.
0: GetClut:[ 734 542 530] vs. expected:[ 732 540 529]
1: GetClut:[ 851 224 132] vs. expected:[ 847 226 132]
2: GetClut:[ 1019 104 24] vs. expected:[ 1015 104 25]
3: GetClut:[ 534 425 610] vs. expected:[ 533 423 607]
. . .
28: GetClut:[ 734 734 60] vs. expected:[ 732 732 59]
29: GetClut:[ 104 497 999] vs. expected:[ 104 497 998]
30: GetClut:[ 855 132 224] vs. expected:[ 851 132 226]
31: GetClut:[ 851 855 148] vs. expected:[ 847 851 150]
pixelSize 32. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
Radeon. GetClut != predicted. Max error 4. Rms error 2.0.
0: GetClut:[ 0 1023 871] vs. expected:[ 0 1023 867]
1: GetClut:[ 4 1023 381] vs. expected:[ 4 1019 381]
2: GetClut:[ 8 1019 546] vs. expected:[ 8 1015 546]
3: GetClut:[ 12 1015 473] vs. expected:[ 12 1011 473]
. . .
252: GetClut:[ 1015 12 136] vs. expected:[ 1011 12 136]
253: GetClut:[ 1019 8 369] vs. expected:[ 1015 8 369]
254: GetClut:[ 1023 4 987] vs. expected:[ 1019 4 983]
255: GetClut:[ 1023 0 875] vs. expected:[ 1023 0 871]
Screen driver supports gamma tables with precisions: 8 bits.
*** Screen 1 *************************************************************
ATY,Crown_B (.Display_DualHead version 1.0b76) in slot ATI
10 bit dacs. 1152x870 75 Hz. (56,60,65,67,70,72,75,76,85,90,100,120 Hz
avail)
Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
- - - - - - - - - - - - - - - - - - - - - - - - -
pixelSize 8. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
predicted.
pixelSize 8. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
predicted.
pixelSize 16. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
predicted.
pixelSize 16. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
predicted.
pixelSize 32. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
predicted.
pixelSize 32. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
predicted.
pixelSize 8. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
Radeon. GetClut != predicted. Max error 4. Rms error 2.0.
1: GetClut:[ 4 1023 413] vs. expected:[ 4 1019 413]
2: GetClut:[ 8 1019 594] vs. expected:[ 8 1015 594]
3: GetClut:[ 12 1015 252] vs. expected:[ 12 1011 252]
4: GetClut:[ 16 1011 469] vs. expected:[ 16 1007 469]
. . .
252: GetClut:[ 1015 12 164] vs. expected:[ 1011 12 164]
253: GetClut:[ 1019 8 730] vs. expected:[ 1015 8 730]
254: GetClut:[ 1023 4 542] vs. expected:[ 1019 4 542]
255: GetClut:[ 1023 0 783] vs. expected:[ 1023 0 779]
pixelSize 16. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
Radeon. GetClut == predicted.
pixelSize 16. randomize 1. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
Radeon. GetClut != predicted. Max error 4. Rms error 2.0.
0: GetClut:[ 819 377 116] vs. expected:[ 816 378 117]
1: GetClut:[ 887 678 746] vs. expected:[ 883 677 746]
2: GetClut:[ 180 746 819] vs. expected:[ 179 746 816]
3: GetClut:[ 397 116 345] vs. expected:[ 397 117 343]
. . .
28: GetClut:[ 164 369 939] vs. expected:[ 163 367 935]
29: GetClut:[ 180 72 779] vs. expected:[ 179 74 776]
30: GetClut:[ 746 754 939] vs. expected:[ 746 754 935]
31: GetClut:[ 377 827 754] vs. expected:[ 378 825 754]
pixelSize 32. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
Radeon. GetClut != predicted. Max error 4. Rms error 2.0.
1: GetClut:[ 4 1023 871] vs. expected:[ 4 1019 867]
2: GetClut:[ 8 1019 112] vs. expected:[ 8 1015 112]
3: GetClut:[ 12 1015 269] vs. expected:[ 12 1011 269]
4: GetClut:[ 16 1011 208] vs. expected:[ 16 1007 208]
. . .
251: GetClut:[ 1011 16 441] vs. expected:[ 1007 16 441]
252: GetClut:[ 1015 12 947] vs. expected:[ 1011 12 943]
253: GetClut:[ 1019 8 60] vs. expected:[ 1015 8 60]
254: GetClut:[ 1023 4 1023] vs. expected:[ 1019 4 1019]
Screen driver supports gamma tables with precisions: 8 bits.
**************************************************************************

»waitblankingtest
WaitBlankingTest
We time a loop that calls SCREEN WaitBlanking or SetClut. If the loop
is thus synched to the display blanking, the iteration rate (Hz) of
our loop will match the official FrameRate.
*** Chris Chase's PowerBook G4/800, Mac OS 9.2.2 *************************
G4, 800 MHz, memory bus 133 MHz, 83.889 Mflop/s
Psychtoolbox 2.51, 5 July 2002, Matlab 5.2.1.1421
*** Screen 0 *************************************************************
ATY,Crown_A (.Display_DualHead version 1.0b76) in slot ATI
10 bit dacs. 1280x854 60 Hz.
Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
- - - - - - - - - - - - - - - - - - - - - - - - -
WaitBlanking is using blanking interrupt to synch with 60 Hz display:
60 Hz: priority 0
60 Hz: priority 0.5
60 Hz: priority 1
- - - - - - - - - - - - - - - - - - - - - - - - -
WaitBlanking is using SetClut to synch with 60 Hz display:
60 Hz: priority 0
60 Hz: priority 0.5
60 Hz: priority 1
60 Hz: priority 2
60 Hz: priority 7
- - - - - - - - - - - - - - - - - - - - - - - - -
Directly calling SetClut to synch with 60 Hz display:
AskSetClutDriverToWaitForBlanking set to 1.
60 Hz: priority 0, SetClut(256 entries).
60 Hz: priority 0, SetClut( 1 entry).
60 Hz: priority 0, SetClut( 1 entry) and 5 ms delay.
60 Hz: priority 1, SetClut(256 entries).
60 Hz: priority 1, SetClut( 1 entry).
60 Hz: priority 1, SetClut( 1 entry) and 5 ms delay.
60 Hz: priority 7, SetClut(256 entries).
60 Hz: priority 7, SetClut( 1 entry).
60 Hz: priority 7, SetClut( 1 entry) and 5 ms delay.
AskSetClutDriverToWaitForBlanking set to 0.
320 Hz: priority 0, SetClut(256 entries).
326 Hz: priority 0, SetClut( 1 entry).
193 Hz: priority 0, SetClut( 1 entry) and 5 ms delay.
319 Hz: priority 1, SetClut(256 entries).
326 Hz: priority 1, SetClut( 1 entry).
194 Hz: priority 1, SetClut( 1 entry) and 5 ms delay.
320 Hz: priority 7, SetClut(256 entries).
326 Hz: priority 7, SetClut( 1 entry).
194 Hz: priority 7, SetClut( 1 entry) and 5 ms delay.
*** Screen 1 *************************************************************
ATY,Crown_B (.Display_DualHead version 1.0b76) in slot ATI
10 bit dacs. 1152x870 75 Hz. (56,60,65,67,70,72,75,76,85,90,100,120 Hz
avail)
Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
- - - - - - - - - - - - - - - - - - - - - - - - -
WaitBlanking is using blanking interrupt to synch with 75 Hz display:
75 Hz: priority 0
75 Hz: priority 0.5
75 Hz: priority 1
- - - - - - - - - - - - - - - - - - - - - - - - -
WaitBlanking is using SetClut to synch with 75 Hz display:
75 Hz: priority 0
75 Hz: priority 0.5
75 Hz: priority 1
75 Hz: priority 2
75 Hz: priority 7
- - - - - - - - - - - - - - - - - - - - - - - - -
Directly calling SetClut to synch with 75 Hz display:
AskSetClutDriverToWaitForBlanking set to 1.
75 Hz: priority 0, SetClut(256 entries).
75 Hz: priority 0, SetClut( 1 entry).
75 Hz: priority 0, SetClut( 1 entry) and 5 ms delay.
75 Hz: priority 1, SetClut(256 entries).
75 Hz: priority 1, SetClut( 1 entry).
75 Hz: priority 1, SetClut( 1 entry) and 5 ms delay.
75 Hz: priority 7, SetClut(256 entries).
75 Hz: priority 7, SetClut( 1 entry).
75 Hz: priority 7, SetClut( 1 entry) and 5 ms delay.
AskSetClutDriverToWaitForBlanking set to 0.
320 Hz: priority 0, SetClut(256 entries).
324 Hz: priority 0, SetClut( 1 entry).
194 Hz: priority 0, SetClut( 1 entry) and 5 ms delay.
320 Hz: priority 1, SetClut(256 entries).
326 Hz: priority 1, SetClut( 1 entry).
194 Hz: priority 1, SetClut( 1 entry) and 5 ms delay.
317 Hz: priority 7, SetClut(256 entries).
325 Hz: priority 7, SetClut( 1 entry).
194 Hz: priority 7, SetClut( 1 entry) and 5 ms delay.
**************************************************************************
»loadcluttest
LoadClutTest
*** Chris Chase's PowerBook G4/800, Mac OS 9.2.2 *************************
G4, 800 MHz, memory bus 133 MHz, 97.829 Mflop/s
Psychtoolbox 2.51, 5 July 2002, Matlab 5.2.1.1421
*** Screen 0 *************************************************************
ATY,CrowATY,Crown_B (.Display_DualHead version 1.0b76) in slot ATI
10 bit dacs. 1280x854 60 Hz.
Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
- - - - - - - - - - - - - - - - - - - - - - - - -
8-bit gamma table. pixelSize 8. Success! GetClut==LoadClut at 8 bits.
8-bit gamma table. pixelSize 16. Success! GetClut==LoadClut at 8 bits.
8-bit gamma table. pixelSize 32. Success! GetClut==LoadClut at 8 bits.
10-bit gamma table. pixelSize 8. Failed! Values read differed (by up to 4)
from what was written:
1: LoadClut:[ 4 1019 662] vs. GetClut:[ 4 1023 662]
2: LoadClut:[ 8 1015 650] vs. GetClut:[ 8 1019 650]
3: LoadClut:[ 12 1011 36] vs. GetClut:[ 12 1015 36]
4: LoadClut:[ 16 1007 236] vs. GetClut:[ 16 1011 236]
5: LoadClut:[ 20 1003 722] vs. GetClut:[ 20 1007 722]
10-bit gamma table. pixelSize 16. Success! GetClut==LoadClut at 10 bits.
10-bit gamma table. pixelSize 32. Failed! Values read differed (by up to 4)
from what was written:
1: LoadClut:[ 4 1019 650] vs. GetClut:[ 4 1023 650]
2: LoadClut:[ 8 1015 534] vs. GetClut:[ 8 1019 534]
3: LoadClut:[ 12 1011 771] vs. GetClut:[ 12 1015 775]
4: LoadClut:[ 16 1007 602] vs. GetClut:[ 16 1011 602]
5: LoadClut:[ 20 1003 542] vs. GetClut:[ 20 1007 542]
*** Screen 1 *************************************************************
ATY,Crown_B (.Display_DualHead version 1.0b76) in slot ATI
10 bit dacs. 1152x870 75 Hz. (56,60,65,67,70,72,75,76,85,90,100,120 Hz
avail)
Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
- - - - - - - - - - - - - - - - - - - - - - - - -
8-bit gamma table. pixelSize 8. Success! GetClut==LoadClut at 8 bits.
8-bit gamma table. pixelSize 16. Success! GetClut==LoadClut at 8 bits.
8-bit gamma table. pixelSize 32. Success! GetClut==LoadClut at 8 bits.
10-bit gamma table. pixelSize 8. Failed! Values read differed (by up to 4)
from what was written:
0: LoadClut:[ 0 1023 819] vs. GetClut:[ 0 1023 823]
1: LoadClut:[ 4 1019 361] vs. GetClut:[ 4 1023 361]
2: LoadClut:[ 8 1015 955] vs. GetClut:[ 8 1019 959]
3: LoadClut:[ 12 1011 405] vs. GetClut:[ 12 1015 405]
4: LoadClut:[ 16 1007 883] vs. GetClut:[ 16 1011 887]
10-bit gamma table. pixelSize 16. Success! GetClut==LoadClut at 10 bits.
10-bit gamma table. pixelSize 32. Failed! Values read differed (by up to 4)
from what was written:
1: LoadClut:[ 4 1019 172] vs. GetClut:[ 4 1023 172]
2: LoadClut:[ 8 1015 381] vs. GetClut:[ 8 1019 381]
3: LoadClut:[ 12 1011 787] vs. GetClut:[ 12 1015 791]
4: LoadClut:[ 16 1007 477] vs. GetClut:[ 16 1011 477]
5: LoadClut:[ 20 1003 598] vs. GetClut:[ 20 1007 598]
**************************************************************************
»
dear chris

don't be discouraged. the results look good to me. the synching is
perfect, at all priorities; copybits is a FAST 185 MB/s; you've got
frame rates up to 120 Hz; 8-bit-CLUT loading is perfect.

The 10-bit CLUT loading isn't quite right, with maximum errors of 4.
in effect you're getting 8-bit accuracy in 10-bit mode. However, the
problems with loading 10-bits into the ATI CLUTs have centered around
their slightly odd rounding rules, and it appears that the fiddle we
developed for the Radeon 7000 and .Display_DualHead driver version
1.0f26 isn't quite right for your Radeon 7500 and .Display_DualHead
driver version 1.0b76. Notice that there are no errors when you load
small values, and the result is too low by 4 when you load large
values. The orderliness of the mistake suggests that a slight tweak
of our existing fix might fix your driver. The relevant code is all
in LoadClut.m and is conditional on "fixATIRadeonGamma". This is
arcane stuff, so it may not appeal to you, but then again, you might
quickly find a fix for your driver. Fixing LoadClut should make
LoadClutTest run correctly; the other tests, which bypass LoadClut.m,
will be unaffected. The first thing to try, of course, is to simply
turn off our fix, since it's just conceivable that your driver would
be better off without it.

We expect a new driver update from ATI in July before MacWorld which
will make the fix unnecessary.

In the meantime your driver is making only small errors that would be
difficult for an observer to notice, so you could start developing
your application now, and incorporate the fix when ATI releases the
new driver.

It appears to me that you've got a great set up.

best

denis




>Dear Denis and the list,
>
>I have been working over the last few weeks to learn the Toolbox with plans
>to use new G4 Powerbook and it's ATI Radeon Mobility 7500 DualHead chip to
>drive an external VGA monitor at 10 bit CLUT resolution. I tested the G4 at
>a local Apple store using Ben Singer's testgamma-06-11-02 program and it
>passed the 10-bit test using the high bits.
>
>The G4 arrived today but the tests don't look good. I ran a Screentest,
>Cluttest, WaitBlankingTest, and LoadCluttest with the G4 booted in OS 9.2.2
>and the VGA monitor connected as Screen 1 through the VDI-VGA cable.
>
>The SetGammaWaitTest, called in Screentest, produced runtime errors. The
>ClutTest didn't map well. The WaitBlankingTest looked OK to my novice eye,
>and the LoadClutTest also didn't look good. Test results are below.
>
>Any advice would be appreciated. Is it premature to think such a setup can
>work?
>
>Chris
>
>
>--
>Chris Chase, Ph.D.
>Associate Professor of Psychology
>Claremont McKenna College
>850 Columbia Ave.
>Claremont, CA 91711
>
>909.607.3668 (office)
>909.621.8419 (FAX)
>chris.chase@...
>
>---
>
>»screentest
>ScreenTest
>*** Chris Chase's PowerBook G4/800, Mac OS 9.2.2 *************************
>G4, 800 MHz, memory bus 133 MHz, 96.556 Mflop/s
>Psychtoolbox 2.51, 5 July 2002, Matlab 5.2.1.1421
>*** Screen 0 *************************************************************
>ATY,Crown_A (.Display_DualHead version 1.0b76) in slot ATI
>10 bit dacs. 1280x854 60 Hz.
>Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
>fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
> - - - - - - - - - - - - - - - - - - - - - - - - -
>pixel size 8 16 32 bits
>pages 1 1 1
>CopyWindow (ie CopyBits) 185 185 186 MB/s
>SetClut suppresses ints. for 0.0 0.0 0.0 frames
>LoadClut vs. GetClut? ( 8 bits) == == ==
>LoadClut vs. GetClut? (10 bits) 4 4 4 #'s are max error.
> - - - - - - - - - - - - - - - - - - - - - - - - -
>SetClut waits for blanking (i.e. ~60 Hz) if parameters have these values:
>
> 60 Hz:
>The following parameters don't affect whether SetClut waits for blanking:
> prioritySequence clutEntries pixelSize
> - - - - - - - - - - - - - - - - - - - - - - - - -
>SetGamma waits for blanking (i.e. ~60 Hz) if parameters have these values:
> pixelSize
>??? In an assignment A(I) = B, the number of elements in B and
> I must be the same.
>
>Error in ==> Macintosh HD:Applications (Mac OS 9):MATLAB
>5:Toolbox:Psychtoolbox:PsychTests:SetGammaWaitTest.m
>On line 71 ==> [s(1) s(2) s(3) s(4)]=ind2sub(sizeWaits,i);
>
>Error in ==> Macintosh HD:Applications (Mac OS 9):MATLAB
>5:Toolbox:Psychtoolbox:PsychTests:ScreenTest.m
>On line 644 ==> SetGammaWaitTest(screenNumber);
>
>Error in ==> Macintosh HD:Applications (Mac OS 9):MATLAB
>5:Toolbox:Psychtoolbox:PsychTests:ScreenTest.m
>On line 428 ==> ScreenTest(screenNumber);
>
>»cluttest
>ClutTest
>*** Chris Chase's PowerBook G4/800, Mac OS 9.2.2 *************************
>G4, 800 MHz, memory bus 133 MHz, 98.208 Mflop/s
>Psychtoolbox 2.51, 5 July 2002, Matlab 5.2.1.1421
>*** Screen 0 *************************************************************
>ATY,CrowATY,Crown_B (.Display_DualHead version 1.0b76) in slot ATI
>10 bit dacs. 1280x854 60 Hz.
>Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
>fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
> - - - - - - - - - - - - - - - - - - - - - - - - -
>pixelSize 8. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>predicted.
>pixelSize 8. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>predicted.
>pixelSize 16. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>predicted.
>pixelSize 16. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>predicted.
>pixelSize 32. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>predicted.
>pixelSize 32. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>predicted.
>pixelSize 8. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
>Radeon. GetClut != predicted. Max error 4. Rms error 2.0.
> 1: GetClut:[ 4 1023 52] vs. expected:[ 4 1019 52]
> 2: GetClut:[ 8 1019 799] vs. expected:[ 8 1015 795]
> 3: GetClut:[ 12 1015 811] vs. expected:[ 12 1011 807]
> 4: GetClut:[ 16 1011 84] vs. expected:[ 16 1007 84]
> . . .
>251: GetClut:[ 1011 16 140] vs. expected:[ 1007 16 140]
>252: GetClut:[ 1015 12 1023] vs. expected:[ 1011 12 1023]
>253: GetClut:[ 1019 8 341] vs. expected:[ 1015 8 341]
>254: GetClut:[ 1023 4 522] vs. expected:[ 1019 4 522]
>pixelSize 16. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
>Radeon. GetClut == predicted.
>pixelSize 16. randomize 1. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
>Radeon. GetClut != predicted. Max error 4. Rms error 2.3.
> 0: GetClut:[ 734 542 530] vs. expected:[ 732 540 529]
> 1: GetClut:[ 851 224 132] vs. expected:[ 847 226 132]
> 2: GetClut:[ 1019 104 24] vs. expected:[ 1015 104 25]
> 3: GetClut:[ 534 425 610] vs. expected:[ 533 423 607]
> . . .
> 28: GetClut:[ 734 734 60] vs. expected:[ 732 732 59]
> 29: GetClut:[ 104 497 999] vs. expected:[ 104 497 998]
> 30: GetClut:[ 855 132 224] vs. expected:[ 851 132 226]
> 31: GetClut:[ 851 855 148] vs. expected:[ 847 851 150]
>pixelSize 32. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
>Radeon. GetClut != predicted. Max error 4. Rms error 2.0.
> 0: GetClut:[ 0 1023 871] vs. expected:[ 0 1023 867]
> 1: GetClut:[ 4 1023 381] vs. expected:[ 4 1019 381]
> 2: GetClut:[ 8 1019 546] vs. expected:[ 8 1015 546]
> 3: GetClut:[ 12 1015 473] vs. expected:[ 12 1011 473]
> . . .
>252: GetClut:[ 1015 12 136] vs. expected:[ 1011 12 136]
>253: GetClut:[ 1019 8 369] vs. expected:[ 1015 8 369]
>254: GetClut:[ 1023 4 987] vs. expected:[ 1019 4 983]
>255: GetClut:[ 1023 0 875] vs. expected:[ 1023 0 871]
>Screen driver supports gamma tables with precisions: 8 bits.
>*** Screen 1 *************************************************************
>ATY,Crown_B (.Display_DualHead version 1.0b76) in slot ATI
>10 bit dacs. 1152x870 75 Hz. (56,60,65,67,70,72,75,76,85,90,100,120 Hz
>avail)
>Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
>fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
> - - - - - - - - - - - - - - - - - - - - - - - - -
>pixelSize 8. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>predicted.
>pixelSize 8. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>predicted.
>pixelSize 16. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>predicted.
>pixelSize 16. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>predicted.
>pixelSize 32. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>predicted.
>pixelSize 32. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>predicted.
>pixelSize 8. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
>Radeon. GetClut != predicted. Max error 4. Rms error 2.0.
> 1: GetClut:[ 4 1023 413] vs. expected:[ 4 1019 413]
> 2: GetClut:[ 8 1019 594] vs. expected:[ 8 1015 594]
> 3: GetClut:[ 12 1015 252] vs. expected:[ 12 1011 252]
> 4: GetClut:[ 16 1011 469] vs. expected:[ 16 1007 469]
> . . .
>252: GetClut:[ 1015 12 164] vs. expected:[ 1011 12 164]
>253: GetClut:[ 1019 8 730] vs. expected:[ 1015 8 730]
>254: GetClut:[ 1023 4 542] vs. expected:[ 1019 4 542]
>255: GetClut:[ 1023 0 783] vs. expected:[ 1023 0 779]
>pixelSize 16. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
>Radeon. GetClut == predicted.
>pixelSize 16. randomize 1. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
>Radeon. GetClut != predicted. Max error 4. Rms error 2.0.
> 0: GetClut:[ 819 377 116] vs. expected:[ 816 378 117]
> 1: GetClut:[ 887 678 746] vs. expected:[ 883 677 746]
> 2: GetClut:[ 180 746 819] vs. expected:[ 179 746 816]
> 3: GetClut:[ 397 116 345] vs. expected:[ 397 117 343]
> . . .
> 28: GetClut:[ 164 369 939] vs. expected:[ 163 367 935]
> 29: GetClut:[ 180 72 779] vs. expected:[ 179 74 776]
> 30: GetClut:[ 746 754 939] vs. expected:[ 746 754 935]
> 31: GetClut:[ 377 827 754] vs. expected:[ 378 825 754]
>pixelSize 32. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
>Radeon. GetClut != predicted. Max error 4. Rms error 2.0.
> 1: GetClut:[ 4 1023 871] vs. expected:[ 4 1019 867]
> 2: GetClut:[ 8 1019 112] vs. expected:[ 8 1015 112]
> 3: GetClut:[ 12 1015 269] vs. expected:[ 12 1011 269]
> 4: GetClut:[ 16 1011 208] vs. expected:[ 16 1007 208]
> . . .
>251: GetClut:[ 1011 16 441] vs. expected:[ 1007 16 441]
>252: GetClut:[ 1015 12 947] vs. expected:[ 1011 12 943]
>253: GetClut:[ 1019 8 60] vs. expected:[ 1015 8 60]
>254: GetClut:[ 1023 4 1023] vs. expected:[ 1019 4 1019]
>Screen driver supports gamma tables with precisions: 8 bits.
>**************************************************************************
>
>»waitblankingtest
>WaitBlankingTest
>We time a loop that calls SCREEN WaitBlanking or SetClut. If the loop
>is thus synched to the display blanking, the iteration rate (Hz) of
>our loop will match the official FrameRate.
>*** Chris Chase's PowerBook G4/800, Mac OS 9.2.2 *************************
>G4, 800 MHz, memory bus 133 MHz, 83.889 Mflop/s
>Psychtoolbox 2.51, 5 July 2002, Matlab 5.2.1.1421
>*** Screen 0 *************************************************************
>ATY,Crown_A (.Display_DualHead version 1.0b76) in slot ATI
>10 bit dacs. 1280x854 60 Hz.
>Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
>fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
> - - - - - - - - - - - - - - - - - - - - - - - - -
>WaitBlanking is using blanking interrupt to synch with 60 Hz display:
> 60 Hz: priority 0
> 60 Hz: priority 0.5
> 60 Hz: priority 1
> - - - - - - - - - - - - - - - - - - - - - - - - -
>WaitBlanking is using SetClut to synch with 60 Hz display:
> 60 Hz: priority 0
> 60 Hz: priority 0.5
> 60 Hz: priority 1
> 60 Hz: priority 2
> 60 Hz: priority 7
> - - - - - - - - - - - - - - - - - - - - - - - - -
>Directly calling SetClut to synch with 60 Hz display:
>AskSetClutDriverToWaitForBlanking set to 1.
> 60 Hz: priority 0, SetClut(256 entries).
> 60 Hz: priority 0, SetClut( 1 entry).
> 60 Hz: priority 0, SetClut( 1 entry) and 5 ms delay.
> 60 Hz: priority 1, SetClut(256 entries).
> 60 Hz: priority 1, SetClut( 1 entry).
> 60 Hz: priority 1, SetClut( 1 entry) and 5 ms delay.
> 60 Hz: priority 7, SetClut(256 entries).
> 60 Hz: priority 7, SetClut( 1 entry).
> 60 Hz: priority 7, SetClut( 1 entry) and 5 ms delay.
>AskSetClutDriverToWaitForBlanking set to 0.
>320 Hz: priority 0, SetClut(256 entries).
>326 Hz: priority 0, SetClut( 1 entry).
>193 Hz: priority 0, SetClut( 1 entry) and 5 ms delay.
>319 Hz: priority 1, SetClut(256 entries).
>326 Hz: priority 1, SetClut( 1 entry).
>194 Hz: priority 1, SetClut( 1 entry) and 5 ms delay.
>320 Hz: priority 7, SetClut(256 entries).
>326 Hz: priority 7, SetClut( 1 entry).
>194 Hz: priority 7, SetClut( 1 entry) and 5 ms delay.
>*** Screen 1 *************************************************************
>ATY,Crown_B (.Display_DualHead version 1.0b76) in slot ATI
>10 bit dacs. 1152x870 75 Hz. (56,60,65,67,70,72,75,76,85,90,100,120 Hz
>avail)
>Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
>fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
> - - - - - - - - - - - - - - - - - - - - - - - - -
>WaitBlanking is using blanking interrupt to synch with 75 Hz display:
> 75 Hz: priority 0
> 75 Hz: priority 0.5
> 75 Hz: priority 1
> - - - - - - - - - - - - - - - - - - - - - - - - -
>WaitBlanking is using SetClut to synch with 75 Hz display:
> 75 Hz: priority 0
> 75 Hz: priority 0.5
> 75 Hz: priority 1
> 75 Hz: priority 2
> 75 Hz: priority 7
> - - - - - - - - - - - - - - - - - - - - - - - - -
>Directly calling SetClut to synch with 75 Hz display:
>AskSetClutDriverToWaitForBlanking set to 1.
> 75 Hz: priority 0, SetClut(256 entries).
> 75 Hz: priority 0, SetClut( 1 entry).
> 75 Hz: priority 0, SetClut( 1 entry) and 5 ms delay.
> 75 Hz: priority 1, SetClut(256 entries).
> 75 Hz: priority 1, SetClut( 1 entry).
> 75 Hz: priority 1, SetClut( 1 entry) and 5 ms delay.
> 75 Hz: priority 7, SetClut(256 entries).
> 75 Hz: priority 7, SetClut( 1 entry).
> 75 Hz: priority 7, SetClut( 1 entry) and 5 ms delay.
>AskSetClutDriverToWaitForBlanking set to 0.
>320 Hz: priority 0, SetClut(256 entries).
>324 Hz: priority 0, SetClut( 1 entry).
>194 Hz: priority 0, SetClut( 1 entry) and 5 ms delay.
>320 Hz: priority 1, SetClut(256 entries).
>326 Hz: priority 1, SetClut( 1 entry).
>194 Hz: priority 1, SetClut( 1 entry) and 5 ms delay.
>317 Hz: priority 7, SetClut(256 entries).
>325 Hz: priority 7, SetClut( 1 entry).
>194 Hz: priority 7, SetClut( 1 entry) and 5 ms delay.
>**************************************************************************
>»loadcluttest
>LoadClutTest
>*** Chris Chase's PowerBook G4/800, Mac OS 9.2.2 *************************
>G4, 800 MHz, memory bus 133 MHz, 97.829 Mflop/s
>Psychtoolbox 2.51, 5 July 2002, Matlab 5.2.1.1421
>*** Screen 0 *************************************************************
>ATY,CrowATY,Crown_B (.Display_DualHead version 1.0b76) in slot ATI
>10 bit dacs. 1280x854 60 Hz.
>Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
>fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
> - - - - - - - - - - - - - - - - - - - - - - - - -
> 8-bit gamma table. pixelSize 8. Success! GetClut==LoadClut at 8 bits.
> 8-bit gamma table. pixelSize 16. Success! GetClut==LoadClut at 8 bits.
> 8-bit gamma table. pixelSize 32. Success! GetClut==LoadClut at 8 bits.
>10-bit gamma table. pixelSize 8. Failed! Values read differed (by up to 4)
>from what was written:
> 1: LoadClut:[ 4 1019 662] vs. GetClut:[ 4 1023 662]
> 2: LoadClut:[ 8 1015 650] vs. GetClut:[ 8 1019 650]
> 3: LoadClut:[ 12 1011 36] vs. GetClut:[ 12 1015 36]
> 4: LoadClut:[ 16 1007 236] vs. GetClut:[ 16 1011 236]
> 5: LoadClut:[ 20 1003 722] vs. GetClut:[ 20 1007 722]
>10-bit gamma table. pixelSize 16. Success! GetClut==LoadClut at 10 bits.
>10-bit gamma table. pixelSize 32. Failed! Values read differed (by up to 4)
>from what was written:
> 1: LoadClut:[ 4 1019 650] vs. GetClut:[ 4 1023 650]
> 2: LoadClut:[ 8 1015 534] vs. GetClut:[ 8 1019 534]
> 3: LoadClut:[ 12 1011 771] vs. GetClut:[ 12 1015 775]
> 4: LoadClut:[ 16 1007 602] vs. GetClut:[ 16 1011 602]
> 5: LoadClut:[ 20 1003 542] vs. GetClut:[ 20 1007 542]
>*** Screen 1 *************************************************************
>ATY,Crown_B (.Display_DualHead version 1.0b76) in slot ATI
>10 bit dacs. 1152x870 75 Hz. (56,60,65,67,70,72,75,76,85,90,100,120 Hz
>avail)
>Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
>fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
> - - - - - - - - - - - - - - - - - - - - - - - - -
> 8-bit gamma table. pixelSize 8. Success! GetClut==LoadClut at 8 bits.
> 8-bit gamma table. pixelSize 16. Success! GetClut==LoadClut at 8 bits.
> 8-bit gamma table. pixelSize 32. Success! GetClut==LoadClut at 8 bits.
>10-bit gamma table. pixelSize 8. Failed! Values read differed (by up to 4)
>from what was written:
> 0: LoadClut:[ 0 1023 819] vs. GetClut:[ 0 1023 823]
> 1: LoadClut:[ 4 1019 361] vs. GetClut:[ 4 1023 361]
> 2: LoadClut:[ 8 1015 955] vs. GetClut:[ 8 1019 959]
> 3: LoadClut:[ 12 1011 405] vs. GetClut:[ 12 1015 405]
> 4: LoadClut:[ 16 1007 883] vs. GetClut:[ 16 1011 887]
>10-bit gamma table. pixelSize 16. Success! GetClut==LoadClut at 10 bits.
>10-bit gamma table. pixelSize 32. Failed! Values read differed (by up to 4)
>from what was written:
> 1: LoadClut:[ 4 1019 172] vs. GetClut:[ 4 1023 172]
> 2: LoadClut:[ 8 1015 381] vs. GetClut:[ 8 1019 381]
> 3: LoadClut:[ 12 1011 787] vs. GetClut:[ 12 1015 791]
> 4: LoadClut:[ 16 1007 477] vs. GetClut:[ 16 1011 477]
> 5: LoadClut:[ 20 1003 598] vs. GetClut:[ 20 1007 598]
>**************************************************************************

>
>
>
>http://psychtoolbox.org
>POST a message to: psychtoolbox@yahoogroups.com
>UNSUBSCRIBE by sending a blank message to:
>psychtoolbox-unsubscribe@yahoogroups.com
>
>Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
Dear Denis,

Thanks very much for your reply. I've been only looking at these functions
for a few weeks and didn't know how serious a max error of 4 is for 10 bit
CLUT loading. You analysis is encouraging. I will try tinkering with your
fixATRadeonGamma and see what it produces.

Thanks again. I am very grateful for all the support and time you give to
the research community, especially to novices like me.

Chris

---------
Chris Chase, Ph.D.
Associate Professor of Psychology
Claremont McKenna College
850 Columbia Ave.
Claremont, CA 91711

chris.chase@...
909-607-3668



> dear chris
>
> don't be discouraged. the results look good to me. the synching is
> perfect, at all priorities; copybits is a FAST 185 MB/s; you've got
> frame rates up to 120 Hz; 8-bit-CLUT loading is perfect.
>
> The 10-bit CLUT loading isn't quite right, with maximum errors of 4.
> in effect you're getting 8-bit accuracy in 10-bit mode. However, the
> problems with loading 10-bits into the ATI CLUTs have centered around
> their slightly odd rounding rules, and it appears that the fiddle we
> developed for the Radeon 7000 and .Display_DualHead driver version
> 1.0f26 isn't quite right for your Radeon 7500 and .Display_DualHead
> driver version 1.0b76. Notice that there are no errors when you load
> small values, and the result is too low by 4 when you load large
> values. The orderliness of the mistake suggests that a slight tweak
> of our existing fix might fix your driver. The relevant code is all
> in LoadClut.m and is conditional on "fixATIRadeonGamma". This is
> arcane stuff, so it may not appeal to you, but then again, you might
> quickly find a fix for your driver. Fixing LoadClut should make
> LoadClutTest run correctly; the other tests, which bypass LoadClut.m,
> will be unaffected. The first thing to try, of course, is to simply
> turn off our fix, since it's just conceivable that your driver would
> be better off without it.
>
> We expect a new driver update from ATI in July before MacWorld which
> will make the fix unnecessary.
>
> In the meantime your driver is making only small errors that would be
> difficult for an observer to notice, so you could start developing
> your application now, and incorporate the fix when ATI releases the
> new driver.
>
> It appears to me that you've got a great set up.
>
> best
>
> denis
>
>
>
>
>> Dear Denis and the list,
>>
>> I have been working over the last few weeks to learn the Toolbox with plans
>> to use new G4 Powerbook and it's ATI Radeon Mobility 7500 DualHead chip to
>> drive an external VGA monitor at 10 bit CLUT resolution. I tested the G4 at
>> a local Apple store using Ben Singer's testgamma-06-11-02 program and it
>> passed the 10-bit test using the high bits.
>>
>> The G4 arrived today but the tests don't look good. I ran a Screentest,
>> Cluttest, WaitBlankingTest, and LoadCluttest with the G4 booted in OS 9.2.2
>> and the VGA monitor connected as Screen 1 through the VDI-VGA cable.
>>
>> The SetGammaWaitTest, called in Screentest, produced runtime errors. The
>> ClutTest didn't map well. The WaitBlankingTest looked OK to my novice eye,
>> and the LoadClutTest also didn't look good. Test results are below.
>>
>> Any advice would be appreciated. Is it premature to think such a setup can
>> work?
>>
>> Chris
>>
>>
>> --
>> Chris Chase, Ph.D.
>> Associate Professor of Psychology
>> Claremont McKenna College
>> 850 Columbia Ave.
>> Claremont, CA 91711
>>
>> 909.607.3668 (office)
>> 909.621.8419 (FAX)
>> chris.chase@...
>>
>> ---
>>
>> »screentest
>> ScreenTest
>> *** Chris Chase's PowerBook G4/800, Mac OS 9.2.2 *************************
>> G4, 800 MHz, memory bus 133 MHz, 96.556 Mflop/s
>> Psychtoolbox 2.51, 5 July 2002, Matlab 5.2.1.1421
>> *** Screen 0 *************************************************************
>> ATY,Crown_A (.Display_DualHead version 1.0b76) in slot ATI
>> 10 bit dacs. 1280x854 60 Hz.
>> Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
>> fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
>> - - - - - - - - - - - - - - - - - - - - - - - - -
>> pixel size 8 16 32 bits
>> pages 1 1 1
>> CopyWindow (ie CopyBits) 185 185 186 MB/s
>> SetClut suppresses ints. for 0.0 0.0 0.0 frames
>> LoadClut vs. GetClut? ( 8 bits) == == ==
>> LoadClut vs. GetClut? (10 bits) 4 4 4 #'s are max error.
>> - - - - - - - - - - - - - - - - - - - - - - - - -
>> SetClut waits for blanking (i.e. ~60 Hz) if parameters have these values:
>>
>> 60 Hz:
>> The following parameters don't affect whether SetClut waits for blanking:
>> prioritySequence clutEntries pixelSize
>> - - - - - - - - - - - - - - - - - - - - - - - - -
>> SetGamma waits for blanking (i.e. ~60 Hz) if parameters have these values:
>> pixelSize
>> ??? In an assignment A(I) = B, the number of elements in B and
>> I must be the same.
>>
>> Error in ==> Macintosh HD:Applications (Mac OS 9):MATLAB
>> 5:Toolbox:Psychtoolbox:PsychTests:SetGammaWaitTest.m
>> On line 71 ==> [s(1) s(2) s(3) s(4)]=ind2sub(sizeWaits,i);
>>
>> Error in ==> Macintosh HD:Applications (Mac OS 9):MATLAB
>> 5:Toolbox:Psychtoolbox:PsychTests:ScreenTest.m
>> On line 644 ==> SetGammaWaitTest(screenNumber);
>>
>> Error in ==> Macintosh HD:Applications (Mac OS 9):MATLAB
>> 5:Toolbox:Psychtoolbox:PsychTests:ScreenTest.m
>> On line 428 ==> ScreenTest(screenNumber);
>>
>> »cluttest
>> ClutTest
>> *** Chris Chase's PowerBook G4/800, Mac OS 9.2.2 *************************
>> G4, 800 MHz, memory bus 133 MHz, 98.208 Mflop/s
>> Psychtoolbox 2.51, 5 July 2002, Matlab 5.2.1.1421
>> *** Screen 0 *************************************************************
>> ATY,CrowATY,Crown_B (.Display_DualHead version 1.0b76) in slot ATI
>> 10 bit dacs. 1280x854 60 Hz.
>> Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
>> fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
>> - - - - - - - - - - - - - - - - - - - - - - - - -
>> pixelSize 8. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>> predicted.
>> pixelSize 8. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>> predicted.
>> pixelSize 16. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>> predicted.
>> pixelSize 16. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>> predicted.
>> pixelSize 32. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>> predicted.
>> pixelSize 32. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>> predicted.
>> pixelSize 8. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
>> Radeon. GetClut != predicted. Max error 4. Rms error 2.0.
>> 1: GetClut:[ 4 1023 52] vs. expected:[ 4 1019 52]
>> 2: GetClut:[ 8 1019 799] vs. expected:[ 8 1015 795]
>> 3: GetClut:[ 12 1015 811] vs. expected:[ 12 1011 807]
>> 4: GetClut:[ 16 1011 84] vs. expected:[ 16 1007 84]
>> . . .
>> 251: GetClut:[ 1011 16 140] vs. expected:[ 1007 16 140]
>> 252: GetClut:[ 1015 12 1023] vs. expected:[ 1011 12 1023]
>> 253: GetClut:[ 1019 8 341] vs. expected:[ 1015 8 341]
>> 254: GetClut:[ 1023 4 522] vs. expected:[ 1019 4 522]
>> pixelSize 16. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
>> Radeon. GetClut == predicted.
>> pixelSize 16. randomize 1. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
>> Radeon. GetClut != predicted. Max error 4. Rms error 2.3.
>> 0: GetClut:[ 734 542 530] vs. expected:[ 732 540 529]
>> 1: GetClut:[ 851 224 132] vs. expected:[ 847 226 132]
>> 2: GetClut:[ 1019 104 24] vs. expected:[ 1015 104 25]
>> 3: GetClut:[ 534 425 610] vs. expected:[ 533 423 607]
>> . . .
>> 28: GetClut:[ 734 734 60] vs. expected:[ 732 732 59]
>> 29: GetClut:[ 104 497 999] vs. expected:[ 104 497 998]
>> 30: GetClut:[ 855 132 224] vs. expected:[ 851 132 226]
>> 31: GetClut:[ 851 855 148] vs. expected:[ 847 851 150]
>> pixelSize 32. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
>> Radeon. GetClut != predicted. Max error 4. Rms error 2.0.
>> 0: GetClut:[ 0 1023 871] vs. expected:[ 0 1023 867]
>> 1: GetClut:[ 4 1023 381] vs. expected:[ 4 1019 381]
>> 2: GetClut:[ 8 1019 546] vs. expected:[ 8 1015 546]
>> 3: GetClut:[ 12 1015 473] vs. expected:[ 12 1011 473]
>> . . .
>> 252: GetClut:[ 1015 12 136] vs. expected:[ 1011 12 136]
>> 253: GetClut:[ 1019 8 369] vs. expected:[ 1015 8 369]
>> 254: GetClut:[ 1023 4 987] vs. expected:[ 1019 4 983]
>> 255: GetClut:[ 1023 0 875] vs. expected:[ 1023 0 871]
>> Screen driver supports gamma tables with precisions: 8 bits.
>> *** Screen 1 *************************************************************
>> ATY,Crown_B (.Display_DualHead version 1.0b76) in slot ATI
>> 10 bit dacs. 1152x870 75 Hz. (56,60,65,67,70,72,75,76,85,90,100,120 Hz
>> avail)
>> Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
>> fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
>> - - - - - - - - - - - - - - - - - - - - - - - - -
>> pixelSize 8. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>> predicted.
>> pixelSize 8. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>> predicted.
>> pixelSize 16. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>> predicted.
>> pixelSize 16. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>> predicted.
>> pixelSize 32. randomize 0. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>> predicted.
>> pixelSize 32. randomize 1. SetGamma 8 bits. GetGamma 8 bits. GetClut ==
>> predicted.
>> pixelSize 8. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
>> Radeon. GetClut != predicted. Max error 4. Rms error 2.0.
>> 1: GetClut:[ 4 1023 413] vs. expected:[ 4 1019 413]
>> 2: GetClut:[ 8 1019 594] vs. expected:[ 8 1015 594]
>> 3: GetClut:[ 12 1015 252] vs. expected:[ 12 1011 252]
>> 4: GetClut:[ 16 1011 469] vs. expected:[ 16 1007 469]
>> . . .
>> 252: GetClut:[ 1015 12 164] vs. expected:[ 1011 12 164]
>> 253: GetClut:[ 1019 8 730] vs. expected:[ 1015 8 730]
>> 254: GetClut:[ 1023 4 542] vs. expected:[ 1019 4 542]
>> 255: GetClut:[ 1023 0 783] vs. expected:[ 1023 0 779]
>> pixelSize 16. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
>> Radeon. GetClut == predicted.
>> pixelSize 16. randomize 1. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
>> Radeon. GetClut != predicted. Max error 4. Rms error 2.0.
>> 0: GetClut:[ 819 377 116] vs. expected:[ 816 378 117]
>> 1: GetClut:[ 887 678 746] vs. expected:[ 883 677 746]
>> 2: GetClut:[ 180 746 819] vs. expected:[ 179 746 816]
>> 3: GetClut:[ 397 116 345] vs. expected:[ 397 117 343]
>> . . .
>> 28: GetClut:[ 164 369 939] vs. expected:[ 163 367 935]
>> 29: GetClut:[ 180 72 779] vs. expected:[ 179 74 776]
>> 30: GetClut:[ 746 754 939] vs. expected:[ 746 754 935]
>> 31: GetClut:[ 377 827 754] vs. expected:[ 378 825 754]
>> pixelSize 32. randomize 0. SetGamma 10 bits. GetGamma 8 bits. Fix gamma for
>> Radeon. GetClut != predicted. Max error 4. Rms error 2.0.
>> 1: GetClut:[ 4 1023 871] vs. expected:[ 4 1019 867]
>> 2: GetClut:[ 8 1019 112] vs. expected:[ 8 1015 112]
>> 3: GetClut:[ 12 1015 269] vs. expected:[ 12 1011 269]
>> 4: GetClut:[ 16 1011 208] vs. expected:[ 16 1007 208]
>> . . .
>> 251: GetClut:[ 1011 16 441] vs. expected:[ 1007 16 441]
>> 252: GetClut:[ 1015 12 947] vs. expected:[ 1011 12 943]
>> 253: GetClut:[ 1019 8 60] vs. expected:[ 1015 8 60]
>> 254: GetClut:[ 1023 4 1023] vs. expected:[ 1019 4 1019]
>> Screen driver supports gamma tables with precisions: 8 bits.
>> **************************************************************************
>>
>> »waitblankingtest
>> WaitBlankingTest
>> We time a loop that calls SCREEN WaitBlanking or SetClut. If the loop
>> is thus synched to the display blanking, the iteration rate (Hz) of
>> our loop will match the official FrameRate.
>> *** Chris Chase's PowerBook G4/800, Mac OS 9.2.2 *************************
>> G4, 800 MHz, memory bus 133 MHz, 83.889 Mflop/s
>> Psychtoolbox 2.51, 5 July 2002, Matlab 5.2.1.1421
>> *** Screen 0 *************************************************************
>> ATY,Crown_A (.Display_DualHead version 1.0b76) in slot ATI
>> 10 bit dacs. 1280x854 60 Hz.
>> Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
>> fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
>> - - - - - - - - - - - - - - - - - - - - - - - - -
>> WaitBlanking is using blanking interrupt to synch with 60 Hz display:
>> 60 Hz: priority 0
>> 60 Hz: priority 0.5
>> 60 Hz: priority 1
>> - - - - - - - - - - - - - - - - - - - - - - - - -
>> WaitBlanking is using SetClut to synch with 60 Hz display:
>> 60 Hz: priority 0
>> 60 Hz: priority 0.5
>> 60 Hz: priority 1
>> 60 Hz: priority 2
>> 60 Hz: priority 7
>> - - - - - - - - - - - - - - - - - - - - - - - - -
>> Directly calling SetClut to synch with 60 Hz display:
>> AskSetClutDriverToWaitForBlanking set to 1.
>> 60 Hz: priority 0, SetClut(256 entries).
>> 60 Hz: priority 0, SetClut( 1 entry).
>> 60 Hz: priority 0, SetClut( 1 entry) and 5 ms delay.
>> 60 Hz: priority 1, SetClut(256 entries).
>> 60 Hz: priority 1, SetClut( 1 entry).
>> 60 Hz: priority 1, SetClut( 1 entry) and 5 ms delay.
>> 60 Hz: priority 7, SetClut(256 entries).
>> 60 Hz: priority 7, SetClut( 1 entry).
>> 60 Hz: priority 7, SetClut( 1 entry) and 5 ms delay.
>> AskSetClutDriverToWaitForBlanking set to 0.
>> 320 Hz: priority 0, SetClut(256 entries).
>> 326 Hz: priority 0, SetClut( 1 entry).
>> 193 Hz: priority 0, SetClut( 1 entry) and 5 ms delay.
>> 319 Hz: priority 1, SetClut(256 entries).
>> 326 Hz: priority 1, SetClut( 1 entry).
>> 194 Hz: priority 1, SetClut( 1 entry) and 5 ms delay.
>> 320 Hz: priority 7, SetClut(256 entries).
>> 326 Hz: priority 7, SetClut( 1 entry).
>> 194 Hz: priority 7, SetClut( 1 entry) and 5 ms delay.
>> *** Screen 1 *************************************************************
>> ATY,Crown_B (.Display_DualHead version 1.0b76) in slot ATI
>> 10 bit dacs. 1152x870 75 Hz. (56,60,65,67,70,72,75,76,85,90,100,120 Hz
>> avail)
>> Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
>> fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
>> - - - - - - - - - - - - - - - - - - - - - - - - -
>> WaitBlanking is using blanking interrupt to synch with 75 Hz display:
>> 75 Hz: priority 0
>> 75 Hz: priority 0.5
>> 75 Hz: priority 1
>> - - - - - - - - - - - - - - - - - - - - - - - - -
>> WaitBlanking is using SetClut to synch with 75 Hz display:
>> 75 Hz: priority 0
>> 75 Hz: priority 0.5
>> 75 Hz: priority 1
>> 75 Hz: priority 2
>> 75 Hz: priority 7
>> - - - - - - - - - - - - - - - - - - - - - - - - -
>> Directly calling SetClut to synch with 75 Hz display:
>> AskSetClutDriverToWaitForBlanking set to 1.
>> 75 Hz: priority 0, SetClut(256 entries).
>> 75 Hz: priority 0, SetClut( 1 entry).
>> 75 Hz: priority 0, SetClut( 1 entry) and 5 ms delay.
>> 75 Hz: priority 1, SetClut(256 entries).
>> 75 Hz: priority 1, SetClut( 1 entry).
>> 75 Hz: priority 1, SetClut( 1 entry) and 5 ms delay.
>> 75 Hz: priority 7, SetClut(256 entries).
>> 75 Hz: priority 7, SetClut( 1 entry).
>> 75 Hz: priority 7, SetClut( 1 entry) and 5 ms delay.
>> AskSetClutDriverToWaitForBlanking set to 0.
>> 320 Hz: priority 0, SetClut(256 entries).
>> 324 Hz: priority 0, SetClut( 1 entry).
>> 194 Hz: priority 0, SetClut( 1 entry) and 5 ms delay.
>> 320 Hz: priority 1, SetClut(256 entries).
>> 326 Hz: priority 1, SetClut( 1 entry).
>> 194 Hz: priority 1, SetClut( 1 entry) and 5 ms delay.
>> 317 Hz: priority 7, SetClut(256 entries).
>> 325 Hz: priority 7, SetClut( 1 entry).
>> 194 Hz: priority 7, SetClut( 1 entry) and 5 ms delay.
>> **************************************************************************
>> »loadcluttest
>> LoadClutTest
>> *** Chris Chase's PowerBook G4/800, Mac OS 9.2.2 *************************
>> G4, 800 MHz, memory bus 133 MHz, 97.829 Mflop/s
>> Psychtoolbox 2.51, 5 July 2002, Matlab 5.2.1.1421
>> *** Screen 0 *************************************************************
>> ATY,CrowATY,Crown_B (.Display_DualHead version 1.0b76) in slot ATI
>> 10 bit dacs. 1280x854 60 Hz.
>> Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
>> fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
>> - - - - - - - - - - - - - - - - - - - - - - - - -
>> 8-bit gamma table. pixelSize 8. Success! GetClut==LoadClut at 8 bits.
>> 8-bit gamma table. pixelSize 16. Success! GetClut==LoadClut at 8 bits.
>> 8-bit gamma table. pixelSize 32. Success! GetClut==LoadClut at 8 bits.
>> 10-bit gamma table. pixelSize 8. Failed! Values read differed (by up to 4)
>> from what was written:
>> 1: LoadClut:[ 4 1019 662] vs. GetClut:[ 4 1023 662]
>> 2: LoadClut:[ 8 1015 650] vs. GetClut:[ 8 1019 650]
>> 3: LoadClut:[ 12 1011 36] vs. GetClut:[ 12 1015 36]
>> 4: LoadClut:[ 16 1007 236] vs. GetClut:[ 16 1011 236]
>> 5: LoadClut:[ 20 1003 722] vs. GetClut:[ 20 1007 722]
>> 10-bit gamma table. pixelSize 16. Success! GetClut==LoadClut at 10 bits.
>> 10-bit gamma table. pixelSize 32. Failed! Values read differed (by up to 4)
>> from what was written:
>> 1: LoadClut:[ 4 1019 650] vs. GetClut:[ 4 1023 650]
>> 2: LoadClut:[ 8 1015 534] vs. GetClut:[ 8 1019 534]
>> 3: LoadClut:[ 12 1011 771] vs. GetClut:[ 12 1015 775]
>> 4: LoadClut:[ 16 1007 602] vs. GetClut:[ 16 1011 602]
>> 5: LoadClut:[ 20 1003 542] vs. GetClut:[ 20 1007 542]
>> *** Screen 1 *************************************************************
>> ATY,Crown_B (.Display_DualHead version 1.0b76) in slot ATI
>> 10 bit dacs. 1152x870 75 Hz. (56,60,65,67,70,72,75,76,85,90,100,120 Hz
>> avail)
>> Prefs: cscGetClutBehavior, DacBits 10, SetClutDuplicates8Bits,
>> fixATIRadeonGamma, DipPriorityAfterSetClut, MinimumSetClutPriority 2.
>> - - - - - - - - - - - - - - - - - - - - - - - - -
>> 8-bit gamma table. pixelSize 8. Success! GetClut==LoadClut at 8 bits.
>> 8-bit gamma table. pixelSize 16. Success! GetClut==LoadClut at 8 bits.
>> 8-bit gamma table. pixelSize 32. Success! GetClut==LoadClut at 8 bits.
>> 10-bit gamma table. pixelSize 8. Failed! Values read differed (by up to 4)
>> from what was written:
>> 0: LoadClut:[ 0 1023 819] vs. GetClut:[ 0 1023 823]
>> 1: LoadClut:[ 4 1019 361] vs. GetClut:[ 4 1023 361]
>> 2: LoadClut:[ 8 1015 955] vs. GetClut:[ 8 1019 959]
>> 3: LoadClut:[ 12 1011 405] vs. GetClut:[ 12 1015 405]
>> 4: LoadClut:[ 16 1007 883] vs. GetClut:[ 16 1011 887]
>> 10-bit gamma table. pixelSize 16. Success! GetClut==LoadClut at 10 bits.
>> 10-bit gamma table. pixelSize 32. Failed! Values read differed (by up to 4)
>> from what was written:
>> 1: LoadClut:[ 4 1019 172] vs. GetClut:[ 4 1023 172]
>> 2: LoadClut:[ 8 1015 381] vs. GetClut:[ 8 1019 381]
>> 3: LoadClut:[ 12 1011 787] vs. GetClut:[ 12 1015 791]
>> 4: LoadClut:[ 16 1007 477] vs. GetClut:[ 16 1011 477]
>> 5: LoadClut:[ 20 1003 598] vs. GetClut:[ 20 1007 598]
>> **************************************************************************
>> »
>>
>>
>>
>> http://psychtoolbox.org
>> POST a message to: psychtoolbox@yahoogroups.com
>> UNSUBSCRIBE by sending a blank message to:
>> psychtoolbox-unsubscribe@yahoogroups.com
>>
>> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
>
>
>
> http://psychtoolbox.org
> POST a message to: psychtoolbox@yahoogroups.com
> UNSUBSCRIBE by sending a blank message to:
> psychtoolbox-unsubscribe@yahoogroups.com
>
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
>
>
>
dear bob & chris

thanks for the update. indeed the july update from ATI included less
than i'd anticipated. as far as the CLUT is concerned, it cleaned up
the Radeon 8500 and the 7200 but hasn't obviously affected the
operation of any other cards.

I understand that ATI is considering a ROM upgrade for the 7000 and
8500 to clean up all remaining problems.

I don't have any news of an impending fix specifically for the 7500.
Is the 7500 being sold, either retail or oem? If not then I suspect
that it won't get much priority in engineering since they have their
hands full with current and future products. fixing no-longer-sold
products doesn't help their bottom line.

however, i'm happy to give ATI documentation of the bug, in case they
are willing to fix it. if you and chris assemble the evidence, i'll
forward it with a cover note to vladimir.

have you tried turning on and off the SetClutDuplicates8Bits option?
Turning that on helped enormously in fixing Radeon 7000. It turns out
that these drivers use all 16 bits of the input to SetClut, and round
it to 8 bits for use as an index into the gamma table, but use a
funny rounding rule. For most drivers it's good to leave the lower 8
bits zero. Duplicating the initial 8 bits turns out to work well with
the Radeon 7000. Simply noting whether this option makes a difference
will tell you whether this is on the right track. If it is, it seems
likely that we can figure out some rule for the lower 8 bits that
will work with their rounding rule to give us the behavior we want.

best

denis

p.s.
i'm enclosing the latest versions of PrepareScreen.m and LoadClutTest.m.


>Hi All,
>
>Here's an update on the ATI Radeon Mobility 7500 problems previously
>reported by Chris Chase. To recap- this chip claims to have 10-bit DACs,
>and it happily loads 10-bit values into the gamma table. However, it
>fails ClutTest when randomization is turned on.
>
>The failure was not the consistent 'off-by-one' error seen for the ATI
>7000 that could be easily hacked. In fact, the errors seemed random.
>However, we ran lots of values through the clutTest and determined that
>the pattern isn't quite random, and it suggests some kind of odd
>rounding behavior. However, no matter what values we send in, we always
>get one of 256 different values out. This suggests to me that 10 bit
>mode is useless on this card- there are really only 256 DAC steps
>available.
>
>Oddly, though, the chip passes Ben Singer's visual 10-bit test. However,
>I can imagine how that could be given a fortuitious selection of gamma
>table values to use for the test.
>
>Any thoughts on how to proceed with this problem? It would be really
>nice to be able to use a laptop to present 10-bit stimuli. We are so
>close, but not quite there! Maybe we need another update by ATI to fix it?
>
>cheers,
>bob dougherty
>
>(with chris chase)
>
>
>> Dear Denis,
>>
>> The ATI Radeon driver updates did not include any changes for
>> the Mobility chips. I have looked more closely at the Cluttest
>> report. As you say, the errors are all occuring with larger
>> numbers (randomize = 1), but the pattern doesn't look regular.
>> Sometimes we get expected values but other times it is off by
>> values of 3, 2 or 1 (disabling "FixRadeonGamma" proved to
>> reduce the error) and it varies by column.
>>
>> Below are three different cluttests. If you see a pattern that might
>> be corrected in MatLab, please let me know. Also, could you
>> explain what a max error of three might do to a 10-bit gamma
>> stimulus. At present, I don't see a way to correct the error as you
>> did with the Radeon 7000 and need to decide if I will proceed in
>> 8- or 10-bit display mode.
>>
>> As always, thanks.
>>
>> Chris
>
>
>
>
>http://psychtoolbox.org
>POST a message to: psychtoolbox@yahoogroups.com
>UNSUBSCRIBE by sending a blank message to:
>psychtoolbox-unsubscribe@yahoogroups.com
>
>Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/