dear rhea & doug
i'm responding to your several posts (984 - 989) in mid May about
problems with the ATI .Display_DualHead video driver version 1.0f64
associated with all the ATI DualHead cards (7000, 7500, and 8500).
(Apparently there's no problem with the older ATI .Display_DualHead
1.0b61 driver, e.g. in a PowerBook.) You've run a lot of tests, which
characterize the driver's performance quite thoroughly. In most
respects the driver seems to run fine.
No anomalies at all appear when the card is tested in the Mac OS X
Classic environment, but the Classic environment probably provides a
completely different driver, not that used in Mac OS 9. The Classic
driver reports itself (to cscGetGamma) as having 8 bit DACs. That's a
disappointing limitation because many of us are interested in the
DualHead card precisely because of the 10-bit DACs and associated
driver support. However, it's not a bug.
PROBLEMS:
When tested in Mac OS 9.2.2, the driver supports a 10-bit gamma
table, and exhibits four anomalies:
1. ScreenTest finishes normally, but leaves the screen black. The
gamma table needs to be reloaded. Doug discovered that the ATI
DualHead driver fails to support the standard Apple convention of
allowing us to pass a NULL pointer with cscSetGamma to request an
identity gamma table. It works if the pixelSize is 8, otherwise you
get an all-black CLUT, as reported by Rhea. This is a driver bug,
which we should report to Apple, but it should be easy to work around.
2. The write-and-read test of SetClut and GetClut failed: "~=". This
is probably because ScreenTest didn't succeed in loading an identity
gamma table, for the same reason as in 1, above.
3. The cscGetClutBehavior call to the driver is accepted but is less
effective than it should be. The call determines whether SetClut
waits, provided the priority is 1 or less. At priority above 1,
SetClut never waits. Apple may not agree that this a bug, but we
might as well report it as such, if only to explain to the engineers
why running at high priority matters to us, so they'll know when
they're writing new drivers.
4. The test reports are inconsistent on one point. Some tests
indicate that, as far as waiting for blanking, it doesn't matter
whether the call to SetClut is loading one element or all elements.
Other tests indicate that SetClut only waits if loading the whole
clut. We need to run more tests to get a definite answer on this
point.
SOLUTIONS:
I'm enclosing an enhanced version of SCREEN.mex that treats the ATI
DualHead driver as a special case and always supplies a full gamma
table instead of using the Apple shortcut of passing a NULL pointer.
Hopefully this will clear up items 1 and 2. However, I don't know
whether the driver wants the gamma values aligned with the top or the
bottom of the 16 bit word, so we may need to do another iteration to
get this right. It's presently aligned with the bottom of the word.
Could you try running the enclosed new ScreenTest.m, SetClutTest.m,
and WaitBlanking.m with the new SCREEN.mex? And post the reports on
the forum?
best
denis
p.s.
I added a diagnostic printout to SCREEN.mex, each time the new
identity gamma table is computed. This will assure us that the ATI
DualHead driver is being detected. This printout will be mildly
annoying, so I'll remove it once were sure that the fix is working.
i'm responding to your several posts (984 - 989) in mid May about
problems with the ATI .Display_DualHead video driver version 1.0f64
associated with all the ATI DualHead cards (7000, 7500, and 8500).
(Apparently there's no problem with the older ATI .Display_DualHead
1.0b61 driver, e.g. in a PowerBook.) You've run a lot of tests, which
characterize the driver's performance quite thoroughly. In most
respects the driver seems to run fine.
No anomalies at all appear when the card is tested in the Mac OS X
Classic environment, but the Classic environment probably provides a
completely different driver, not that used in Mac OS 9. The Classic
driver reports itself (to cscGetGamma) as having 8 bit DACs. That's a
disappointing limitation because many of us are interested in the
DualHead card precisely because of the 10-bit DACs and associated
driver support. However, it's not a bug.
PROBLEMS:
When tested in Mac OS 9.2.2, the driver supports a 10-bit gamma
table, and exhibits four anomalies:
1. ScreenTest finishes normally, but leaves the screen black. The
gamma table needs to be reloaded. Doug discovered that the ATI
DualHead driver fails to support the standard Apple convention of
allowing us to pass a NULL pointer with cscSetGamma to request an
identity gamma table. It works if the pixelSize is 8, otherwise you
get an all-black CLUT, as reported by Rhea. This is a driver bug,
which we should report to Apple, but it should be easy to work around.
2. The write-and-read test of SetClut and GetClut failed: "~=". This
is probably because ScreenTest didn't succeed in loading an identity
gamma table, for the same reason as in 1, above.
3. The cscGetClutBehavior call to the driver is accepted but is less
effective than it should be. The call determines whether SetClut
waits, provided the priority is 1 or less. At priority above 1,
SetClut never waits. Apple may not agree that this a bug, but we
might as well report it as such, if only to explain to the engineers
why running at high priority matters to us, so they'll know when
they're writing new drivers.
4. The test reports are inconsistent on one point. Some tests
indicate that, as far as waiting for blanking, it doesn't matter
whether the call to SetClut is loading one element or all elements.
Other tests indicate that SetClut only waits if loading the whole
clut. We need to run more tests to get a definite answer on this
point.
SOLUTIONS:
I'm enclosing an enhanced version of SCREEN.mex that treats the ATI
DualHead driver as a special case and always supplies a full gamma
table instead of using the Apple shortcut of passing a NULL pointer.
Hopefully this will clear up items 1 and 2. However, I don't know
whether the driver wants the gamma values aligned with the top or the
bottom of the 16 bit word, so we may need to do another iteration to
get this right. It's presently aligned with the bottom of the word.
Could you try running the enclosed new ScreenTest.m, SetClutTest.m,
and WaitBlanking.m with the new SCREEN.mex? And post the reports on
the forum?
best
denis
p.s.
I added a diagnostic printout to SCREEN.mex, each time the new
identity gamma table is computed. This will assure us that the ATI
DualHead driver is being detected. This printout will be mildly
annoying, so I'll remove it once were sure that the fix is working.