# Native 10 bit tests fail with ATI v7600, WinXP, latest drivers and PTB

**URL:** <https://psychtoolbox.discourse.group/t/native-10-bit-tests-fail-with-ati-v7600-winxp-latest-drivers-and-ptb/843>\
**Category:** Uncategorized\
**Created:** [June 2, 2011, 7:59pm UTC](https://psychtoolbox.discourse.group/t/native-10-bit-tests-fail-with-ati-v7600-winxp-latest-drivers-and-ptb/843 "2011-06-02T19:59:20Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![xeos](https://avatars.discourse-cdn.com/v4/letter/x/ecae2f/32.png) [@xeos](https://psychtoolbox.discourse.group/u/xeos)\
**Post date:** [June 2, 2011, 7:59pm UTC](https://psychtoolbox.discourse.group/t/native-10-bit-tests-fail-with-ati-v7600-winxp-latest-drivers-and-ptb/843/1 "2011-06-02T19:59:20Z")

</div>

I just tried putting our FireGL card through it's paces, and while it reports 10 bit support, it seems to actually drive the DAC at just 8 bits. My recollection is the previous reported success was not verified with a photometer, but just by eye with the AdditiveBlendingForLinearSuperpositionTutorial script, which is far from ideal for this. I modified the script (included below) and would be grateful if Native 10 bit pros (I'm thinking Mario) could give a quick once-over to make sure I'm not missing something. It works properly with a BITS++ and in pseudo gray, so I doubt it's wrong, but you never know.  
  
-----  
PTB-INFO: Your script requested a 30bpp, 10bpc framebuffer, but this is only supported on few special graphics cards and drivers on MS-Windows.  
PTB-INFO: This may or may not work for you - Double check your results! Theoretically, the 2008 series ATI FireGL/FirePro and NVidia Quadro cards may support this with some drivers,  
PTB-INFO: but you must enable it manually in the Catalyst Control center (somewhere under ''Workstation settings'')  
PTB-INFO: Fixed point precision integer framebuffer enabled.  
PTB-INFO: Frame buffer provides 10 bits for red channel.  
PTB-INFO: Frame buffer provides 10 bits for green channel.  
PTB-INFO: Frame buffer provides 10 bits for blue channel.  
PTB-INFO: Frame buffer provides 2 bits for alpha channel.  
PTB-INFO: Real (native, queried) color resolution of the GPU framebuffer is 10 bits per RGB color component.  
  
  
Driver: FirePro\_8.773.1.2\_XP32\_117903  
PTB 3.0.8 - Flavor: beta - Corresponds to SVN Revision 1942  
  
TEST CODE:  
----  
%%% Test bit depth supported by display/video card %%%  
% Shows an intensity staircase from left to right, with starting intensity  
% = mouse(y). If display supports the bit-depth tested (see divisor,  
% below), then each step should be visible (super-threshold intensity  
% staircase at bottom of screen shows the scale), esp. at low luminance. To  
% further increase step visibility, 10hz flickering patches are added to  
% each bar, at one intensity level higher than the bar.  
% Alan Robinson, 6-2-2011  
  
outputdevice = 'Native10Bit';  
divisor = 2^10-1; % bitdepth to test   
screenNumber = 1; % which screen to use (0 = both OR just one display)  
  
% you can select amongst all devices supported by PTB:  
%  
% 'None': Use standard 8 bit framebuffer, but  
% disable the gamma correction provided by PTB's imaging pipeline. This is  
% usually not what you want, but it allows to test how much faster the  
% display runs without gamma correction.  
%  
% 'PseudoGray' - PseudoGray display, also known as "Bit stealing". This  
% technique allows to create the perception of up to 1786 different  
% luminance levels on standard 8 bit graphics hardware by use of some  
% clever color rendering trick. See "help CreatePseudoGrayLUT" for  
% references and details.  
%  
% 'Native10Bit' - Enables the native 10 bpc framebuffer support on ATI  
% Radeon X1xxx / HDxxx GPU's when used under Linux or OS/X with the  
% PsychtoolboxKernelDriver loaded (see "help PsychtoolboxKernelDriver" on  
% how to do that). These GPU's do support 10 bits per color channel when  
% this special mode is used. If you try this option on MS-Windows, or  
% without the driver loaded or with a different GPU, it will just fail.  
%  
% 'VideoSwitcher' - Enable the Xiangrui Li et al. VideoSwitcher, a special  
% type of video attenuator (see "help PsychVideoSwitcher") in standard  
% "simple" mode.  
%  
% 'VideoSwitcherCalibrated' - Enable the Xiangrui Li et al. VideoSwitcher,  
% but use the more complex (and more accurate?) mode with calibrated lookup  
% tables (see "help PsychVideoSwitcher").  
%  
% 'Attenuator' - Enable support for standard Pelli & Zhang style video  
% attenuators by use of lookup tables.  
%  
% Then we have support for the different modes of operation of the  
% Cambridge Research Systems Bits++ box:  
%  
% 'Mono++' - Use 14 bit mono output mode, either with color index overlay  
% (if the optional 2nd 'overlay' flag is set to 1, which is the default),  
% or without color index overlay.  
%  
% 'Color++' - User 14 bits per color component mode.  
%  
% Then we have support for the different modes of operation of the  
% VPixx Technologies DPixx (DataPixx) box:  
%  
% 'M16' - Use 16 bit mono output mode, either with color index overlay  
% (if the optional 2nd 'overlay' flag is set to 1, which is the default),  
% or without color index overlay.  
%  
% 'C48' - User 16 bits per color component mode.  
%  
% 'BrightSide' - Enable drivers for BrightSide's HDR display. This only  
% works if you have a BrightSide HDR display + the proper driver libraries  
% installed on MS-Windows. On other operating systems it just uses a simple  
% dummy emulation of the display with less than spectacular results.  
%  
% 'DualPipeHDR' - Use experimental output to dual-pipeline HDR display  
% device.  
  
AssertOpenGL;  
  
KbName('UnifyKeyNames');  
  
esc = KbName('ESCAPE');  
space = KbName('space');  
  
try  
  
 % Open a double-buffered fullscreen window with a gray (intensity =  
 % 0.5) background and support for 16- or 32 bpc floating point framebuffers.  
 PsychImaging('PrepareConfiguration');  
  
  
 % This will try to get 32 bpc float precision if the hardware supports  
 % simultaneous use of 32 bpc float and alpha-blending. Otherwise it  
 % will use a 16 bpc floating point framebuffer for drawing and  
 % alpha-blending, but a 32 bpc buffer for gamma correction and final  
 % display. The effective stimulus precision is reduced from 23 bits to  
 % about 11 bits when a 16 bpc float buffer must be used instead of a 32  
 % bpc float buffer:  
 PsychImaging('AddTask', 'General', 'FloatingPoint32BitIfPossible');  
  
 switch outputdevice  
 case {'Mono++'}  
 % Use Mono++ mode without color overlay:  
 PsychImaging('AddTask', 'General', 'EnableBits++Mono++Output');  
  
  
 case {'Color++'}  
 % Use Color++ mode: We select averaging between even/odd  
 % pixels, aka mode 2:  
 PsychImaging('AddTask', 'General', 'EnableBits++Color++Output', 2);  
  
 case {'M16'}  
  
 % Use M16 mode of Datapixx without color overlay:  
 PsychImaging('AddTask', 'General', 'EnableDataPixxM16Output');  
  
  
 case {'C48'}  
 % Use C48 mode of Datapixx: We select averaging between even/odd  
 % pixels, aka mode 2:  
 PsychImaging('AddTask', 'General', 'EnableDataPixxC48Output', 2);  
  
 case {'Attenuator'}  
 % Use the standard Pelli & Zhang style attenuator driver. This  
 % uses a simple 3 row (for the three color channels Red, Green,  
 % Blue) by n slots lookup table to map wanted intensity values  
 % to RGB triplets for driving the attenuator. Any number of  
 % slots up to 2^16 is supported, for a max precision of 16 bits  
 % luminance. As we don't have a calibrated table in this demo,  
 % we simply load a 2048 slot table (11 bit precision) with  
 % random values:  
 PsychImaging('AddTask', 'General', 'EnableGenericHighPrecisionLuminanceOutput', uint8(rand(3, 2048) \* 255));  
  
  
 case {'VideoSwitcher'}  
 % Select simple opmode of VideoSwitcher, where only the btrr  
 % blue-to-red ratio from the global configuration file is used  
 % for calibrated output:  
 PsychImaging('AddTask', 'General', 'EnableVideoSwitcherSimpleLuminanceOutput', [], 1);  
  
 % Switch the device to high precision luminance mode:  
 PsychVideoSwitcher('SwitchMode', screenNumber, 1);  
  
  
 case {'VideoSwitcherCalibrated'}  
 % Again the videoswitcher, but in lookup-table calibrated mode,  
 % where additionally to the BTRR, a lookup table is loaded:  
 PsychImaging('AddTask', 'General', 'EnableVideoSwitcherCalibratedLuminanceOutput', [], [], 1);  
  
 % Switch the device to high precision luminance mode:  
 PsychVideoSwitcher('SwitchMode', screenNumber, 1);  
  
  
 case {'PseudoGray'}  
 % Enable bitstealing aka PseudoGray shader:  
 PsychImaging('AddTask', 'General', 'EnablePseudoGrayOutput');  
  
  
 case {'Native10Bit'}  
 % Enable ATI GPU's 10 bit framebuffer under certain conditions  
 % (see help for this file):  
 PsychImaging('AddTask', 'General', 'EnableNative10BitFramebuffer');  
  
 case {'BrightSide'}  
 % Enable drivers for BrightSide's HDR display:  
 PsychImaging('AddTask', 'General', 'EnableBrightSideHDROutput');  
  
  
  
 case {'None'}  
 % No high precision output, just the plain 8 bit framebuffer,  
 % even without gamma correction:  
 PsychImaging('AddTask', 'General', 'NormalizedHighresColorRange');  
  
  
 case {'DualPipeHDR'}  
 % Enable experimental dual display, dual pipeline HDR output:  
  
 % Handle single-screen vs. dual-screen output:  
 if length(Screen('Screens')) == 1  
 lrect = [0 0 600 600];  
 rrect = [601 0 1201 600];  
 end  
  
 % Request actual output mode:  
 PsychImaging('AddTask', 'General', 'EnableDualPipeHDROutput', min(Screen('Screens')), rrect);  
  
 otherwise  
 error('Unknown "outputdevice" provided.');  
 end  
  
 [w, wRect]=PsychImaging('OpenWindow',screenNumber, 0.5); % actually open the screen  
 [width, height]=Screen('WindowSize', w);  
  
 % Calibrated conversion driver for VideoSwitcher in use?  
 if strcmp(outputdevice, 'VideoSwitcherCalibrated')  
 % Tell the driver what luminance the background has. This allows  
 % for some quite significant speedups in stimulus conversion:  
 PsychVideoSwitcher('SetBackgroundLuminanceHint', w, 0.5);  
 end  
  
 % Animation loop:  
  
 adder = 1;  
  
 vbl = Screen('Flip', w);  
 [d1 d2 keycode]=KbCheck;  
  
 while ~keycode(esc)  
 adder = xor(adder,1);  
 [x,y,buttons]=GetMouse(w); % starting intensity set by mouse y  
 [d1 d2 keycode]=KbCheck;  
  
 for i = 0:32:width % draw vertical stripes across screen, each 1/divisor greater than the last  
 Screen('FillRect', w, y/divisor, [i 0 i+32 height]);  
 Screen('FillRect', w, (y+adder)/divisor, [i+8 500 i+24 600]); % 10hz flicker   
 Screen('FillRect', w, i/width/2, [i height-100 i+32 height]); % scale at bottom of screen  
 y = y + 1;  
 end  
  
 vbl = Screen('Flip', w, vbl + 101/1000); % Show stimulus after 110ms (assuming 100hz refresh)  
 end  
  
 % We're done: Close all windows and textures:  
 Screen('CloseAll');   
catch  
 %this "catch" section executes in case of an error in the "try" section  
 %above. Importantly, it closes the onscreen window if its open.  
 Screen('CloseAll');  
 ShowCursor;  
 psychrethrow(psychlasterror);  
end %try..catch..  
  
if ~isempty(findstr(outputdevice, 'VideoSwitcher'))  
 % If VideoSwitcher was active, switch it back to standard RGB desktop  
 % display mode:  
 PsychVideoSwitcher('SwitchMode', screenNumber, 0);  
end  
  
% Restore gfx gammatables if needed:  
RestoreCluts;

---

<div class="post-metadata">

**Author:** ![mariokleiner](https://avatars.discourse-cdn.com/v4/letter/m/13edae/32.png) [@mariokleiner](https://psychtoolbox.discourse.group/u/mariokleiner)\
**Post date:** [June 4, 2011, 12:46am UTC](https://psychtoolbox.discourse.group/t/native-10-bit-tests-fail-with-ati-v7600-winxp-latest-drivers-and-ptb/843/2 "2011-06-04T00:46:56Z")

</div>

Script looks ok. I wasn't using AdditiveBlendingForLinearSuperpositionTutorial, but the BitsPlusCSFDemo, which can also display a gray scale gradient. That shows you if there are steps in the gradient or if it is smooth. But your script is probably even better with a flicker stim.  
  
Anyway. Your system did configure a 10 bit framebuffer and the various ATI/AMD cards do have 10 bit DAC's and gamma tables since at least the X1000 series (from 2005).  
  
One catch could be that the gamma tables normally have 256 slots, for 8 bpc input, with 10 bpc output. If the builtin gamma tables (due to a driver bug or intentionally) don't get bypassed for VGA output, then the 10 bit framebuffer would get reduced again to 8 bit before gamma correction and DAC conversion.  
  
You could try if it works better for you under Linux. If it doesn't work out of the box, at least there are ptb tricks to work around it and maybe make it work.  
  
-mario  
  

> --- In [psychtoolbox@yahoogroups.com](mailto:psychtoolbox@yahoogroups.com), "Alan Robinson" \<x\_e\_o\_s\_yahoo@...\> wrote:  
> \>  
> \> I just tried putting our FireGL card through it's paces, and while it reports 10 bit support, it seems to actually drive the DAC at just 8 bits. My recollection is the previous reported success was not verified with a photometer, but just by eye with the AdditiveBlendingForLinearSuperpositionTutorial script, which is far from ideal for this. I modified the script (included below) and would be grateful if Native 10 bit pros (I'm thinking Mario) could give a quick once-over to make sure I'm not missing something. It works properly with a BITS++ and in pseudo gray, so I doubt it's wrong, but you never know.  
> \>   
> \> -----  
> \> PTB-INFO: Your script requested a 30bpp, 10bpc framebuffer, but this is only supported on few special graphics cards and drivers on MS-Windows.  
> \> PTB-INFO: This may or may not work for you - Double check your results! Theoretically, the 2008 series ATI FireGL/FirePro and NVidia Quadro cards may support this with some drivers,  
> \> PTB-INFO: but you must enable it manually in the Catalyst Control center (somewhere under ''Workstation settings'')  
> \> PTB-INFO: Fixed point precision integer framebuffer enabled.  
> \> PTB-INFO: Frame buffer provides 10 bits for red channel.  
> \> PTB-INFO: Frame buffer provides 10 bits for green channel.  
> \> PTB-INFO: Frame buffer provides 10 bits for blue channel.  
> \> PTB-INFO: Frame buffer provides 2 bits for alpha channel.  
> \> PTB-INFO: Real (native, queried) color resolution of the GPU framebuffer is 10 bits per RGB color component.  
> \>   
> \>   
> \> Driver: FirePro\_8.773.1.2\_XP32\_117903  
> \> PTB 3.0.8 - Flavor: beta - Corresponds to SVN Revision 1942  
> \>   
> \> TEST CODE:  
> \> ----  
> \> %%% Test bit depth supported by display/video card %%%  
> \> % Shows an intensity staircase from left to right, with starting intensity  
> \> % = mouse(y). If display supports the bit-depth tested (see divisor,  
> \> % below), then each step should be visible (super-threshold intensity  
> \> % staircase at bottom of screen shows the scale), esp. at low luminance. To  
> \> % further increase step visibility, 10hz flickering patches are added to  
> \> % each bar, at one intensity level higher than the bar.  
> \> % Alan Robinson, 6-2-2011  
> \>   
> \> outputdevice = 'Native10Bit';  
> \> divisor = 2^10-1; % bitdepth to test   
> \> screenNumber = 1; % which screen to use (0 = both OR just one display)  
> \>   
> \> % you can select amongst all devices supported by PTB:  
> \> %  
> \> % 'None': Use standard 8 bit framebuffer, but  
> \> % disable the gamma correction provided by PTB's imaging pipeline. This is  
> \> % usually not what you want, but it allows to test how much faster the  
> \> % display runs without gamma correction.  
> \> %  
> \> % 'PseudoGray' - PseudoGray display, also known as "Bit stealing". This  
> \> % technique allows to create the perception of up to 1786 different  
> \> % luminance levels on standard 8 bit graphics hardware by use of some  
> \> % clever color rendering trick. See "help CreatePseudoGrayLUT" for  
> \> % references and details.  
> \> %  
> \> % 'Native10Bit' - Enables the native 10 bpc framebuffer support on ATI  
> \> % Radeon X1xxx / HDxxx GPU's when used under Linux or OS/X with the  
> \> % PsychtoolboxKernelDriver loaded (see "help PsychtoolboxKernelDriver" on  
> \> % how to do that). These GPU's do support 10 bits per color channel when  
> \> % this special mode is used. If you try this option on MS-Windows, or  
> \> % without the driver loaded or with a different GPU, it will just fail.  
> \> %  
> \> % 'VideoSwitcher' - Enable the Xiangrui Li et al. VideoSwitcher, a special  
> \> % type of video attenuator (see "help PsychVideoSwitcher") in standard  
> \> % "simple" mode.  
> \> %  
> \> % 'VideoSwitcherCalibrated' - Enable the Xiangrui Li et al. VideoSwitcher,  
> \> % but use the more complex (and more accurate?) mode with calibrated lookup  
> \> % tables (see "help PsychVideoSwitcher").  
> \> %  
> \> % 'Attenuator' - Enable support for standard Pelli & Zhang style video  
> \> % attenuators by use of lookup tables.  
> \> %  
> \> % Then we have support for the different modes of operation of the  
> \> % Cambridge Research Systems Bits++ box:  
> \> %  
> \> % 'Mono++' - Use 14 bit mono output mode, either with color index overlay  
> \> % (if the optional 2nd 'overlay' flag is set to 1, which is the default),  
> \> % or without color index overlay.  
> \> %  
> \> % 'Color++' - User 14 bits per color component mode.  
> \> %  
> \> % Then we have support for the different modes of operation of the  
> \> % VPixx Technologies DPixx (DataPixx) box:  
> \> %  
> \> % 'M16' - Use 16 bit mono output mode, either with color index overlay  
> \> % (if the optional 2nd 'overlay' flag is set to 1, which is the default),  
> \> % or without color index overlay.  
> \> %  
> \> % 'C48' - User 16 bits per color component mode.  
> \> %  
> \> % 'BrightSide' - Enable drivers for BrightSide's HDR display. This only  
> \> % works if you have a BrightSide HDR display + the proper driver libraries  
> \> % installed on MS-Windows. On other operating systems it just uses a simple  
> \> % dummy emulation of the display with less than spectacular results.  
> \> %  
> \> % 'DualPipeHDR' - Use experimental output to dual-pipeline HDR display  
> \> % device.  
> \>   
> \> AssertOpenGL;  
> \>   
> \> KbName('UnifyKeyNames');  
> \>   
> \> esc = KbName('ESCAPE');  
> \> space = KbName('space');  
> \>   
> \> try  
> \>   
> \> % Open a double-buffered fullscreen window with a gray (intensity =  
> \> % 0.5) background and support for 16- or 32 bpc floating point framebuffers.  
> \> PsychImaging('PrepareConfiguration');  
> \>   
> \>   
> \> % This will try to get 32 bpc float precision if the hardware supports  
> \> % simultaneous use of 32 bpc float and alpha-blending. Otherwise it  
> \> % will use a 16 bpc floating point framebuffer for drawing and  
> \> % alpha-blending, but a 32 bpc buffer for gamma correction and final  
> \> % display. The effective stimulus precision is reduced from 23 bits to  
> \> % about 11 bits when a 16 bpc float buffer must be used instead of a 32  
> \> % bpc float buffer:  
> \> PsychImaging('AddTask', 'General', 'FloatingPoint32BitIfPossible');  
> \>   
> \> switch outputdevice  
> \> case {'Mono++'}  
> \> % Use Mono++ mode without color overlay:  
> \> PsychImaging('AddTask', 'General', 'EnableBits++Mono++Output');  
> \>   
> \>   
> \> case {'Color++'}  
> \> % Use Color++ mode: We select averaging between even/odd  
> \> % pixels, aka mode 2:  
> \> PsychImaging('AddTask', 'General', 'EnableBits++Color++Output', 2);  
> \>   
> \> case {'M16'}  
> \>   
> \> % Use M16 mode of Datapixx without color overlay:  
> \> PsychImaging('AddTask', 'General', 'EnableDataPixxM16Output');  
> \>   
> \>   
> \> case {'C48'}  
> \> % Use C48 mode of Datapixx: We select averaging between even/odd  
> \> % pixels, aka mode 2:  
> \> PsychImaging('AddTask', 'General', 'EnableDataPixxC48Output', 2);  
> \>   
> \> case {'Attenuator'}  
> \> % Use the standard Pelli & Zhang style attenuator driver. This  
> \> % uses a simple 3 row (for the three color channels Red, Green,  
> \> % Blue) by n slots lookup table to map wanted intensity values  
> \> % to RGB triplets for driving the attenuator. Any number of  
> \> % slots up to 2^16 is supported, for a max precision of 16 bits  
> \> % luminance. As we don't have a calibrated table in this demo,  
> \> % we simply load a 2048 slot table (11 bit precision) with  
> \> % random values:  
> \> PsychImaging('AddTask', 'General', 'EnableGenericHighPrecisionLuminanceOutput', uint8(rand(3, 2048) \* 255));  
> \>   
> \>   
> \> case {'VideoSwitcher'}  
> \> % Select simple opmode of VideoSwitcher, where only the btrr  
> \> % blue-to-red ratio from the global configuration file is used  
> \> % for calibrated output:  
> \> PsychImaging('AddTask', 'General', 'EnableVideoSwitcherSimpleLuminanceOutput', [], 1);  
> \>   
> \> % Switch the device to high precision luminance mode:  
> \> PsychVideoSwitcher('SwitchMode', screenNumber, 1);  
> \>   
> \>   
> \> case {'VideoSwitcherCalibrated'}  
> \> % Again the videoswitcher, but in lookup-table calibrated mode,  
> \> % where additionally to the BTRR, a lookup table is loaded:  
> \> PsychImaging('AddTask', 'General', 'EnableVideoSwitcherCalibratedLuminanceOutput', [], [], 1);  
> \>   
> \> % Switch the device to high precision luminance mode:  
> \> PsychVideoSwitcher('SwitchMode', screenNumber, 1);  
> \>   
> \>   
> \> case {'PseudoGray'}  
> \> % Enable bitstealing aka PseudoGray shader:  
> \> PsychImaging('AddTask', 'General', 'EnablePseudoGrayOutput');  
> \>   
> \>   
> \> case {'Native10Bit'}  
> \> % Enable ATI GPU's 10 bit framebuffer under certain conditions  
> \> % (see help for this file):  
> \> PsychImaging('AddTask', 'General', 'EnableNative10BitFramebuffer');  
> \>   
> \> case {'BrightSide'}  
> \> % Enable drivers for BrightSide's HDR display:  
> \> PsychImaging('AddTask', 'General', 'EnableBrightSideHDROutput');  
> \>   
> \>   
> \>   
> \> case {'None'}  
> \> % No high precision output, just the plain 8 bit framebuffer,  
> \> % even without gamma correction:  
> \> PsychImaging('AddTask', 'General', 'NormalizedHighresColorRange');  
> \>   
> \>   
> \> case {'DualPipeHDR'}  
> \> % Enable experimental dual display, dual pipeline HDR output:  
> \>   
> \> % Handle single-screen vs. dual-screen output:  
> \> if length(Screen('Screens')) == 1  
> \> lrect = [0 0 600 600];  
> \> rrect = [601 0 1201 600];  
> \> end  
> \>   
> \> % Request actual output mode:  
> \> PsychImaging('AddTask', 'General', 'EnableDualPipeHDROutput', min(Screen('Screens')), rrect);  
> \>   
> \> otherwise  
> \> error('Unknown "outputdevice" provided.');  
> \> end  
> \>   
> \> [w, wRect]=PsychImaging('OpenWindow',screenNumber, 0.5); % actually open the screen  
> \> [width, height]=Screen('WindowSize', w);  
> \>   
> \> % Calibrated conversion driver for VideoSwitcher in use?  
> \> if strcmp(outputdevice, 'VideoSwitcherCalibrated')  
> \> % Tell the driver what luminance the background has. This allows  
> \> % for some quite significant speedups in stimulus conversion:  
> \> PsychVideoSwitcher('SetBackgroundLuminanceHint', w, 0.5);  
> \> end  
> \>   
> \> % Animation loop:  
> \>   
> \> adder = 1;  
> \>   
> \> vbl = Screen('Flip', w);  
> \> [d1 d2 keycode]=KbCheck;  
> \>   
> \> while ~keycode(esc)  
> \> adder = xor(adder,1);  
> \> [x,y,buttons]=GetMouse(w); % starting intensity set by mouse y  
> \> [d1 d2 keycode]=KbCheck;  
> \>   
> \> for i = 0:32:width % draw vertical stripes across screen, each 1/divisor greater than the last  
> \> Screen('FillRect', w, y/divisor, [i 0 i+32 height]);  
> \> Screen('FillRect', w, (y+adder)/divisor, [i+8 500 i+24 600]); % 10hz flicker   
> \> Screen('FillRect', w, i/width/2, [i height-100 i+32 height]); % scale at bottom of screen  
> \> y = y + 1;  
> \> end  
> \>   
> \> vbl = Screen('Flip', w, vbl + 101/1000); % Show stimulus after 110ms (assuming 100hz refresh)  
> \> end  
> \>   
> \> % We're done: Close all windows and textures:  
> \> Screen('CloseAll');   
> \> catch  
> \> %this "catch" section executes in case of an error in the "try" section  
> \> %above. Importantly, it closes the onscreen window if its open.  
> \> Screen('CloseAll');  
> \> ShowCursor;  
> \> psychrethrow(psychlasterror);  
> \> end %try..catch..  
> \>   
> \> if ~isempty(findstr(outputdevice, 'VideoSwitcher'))  
> \> % If VideoSwitcher was active, switch it back to standard RGB desktop  
> \> % display mode:  
> \> PsychVideoSwitcher('SwitchMode', screenNumber, 0);  
> \> end  
> \>   
> \> % Restore gfx gammatables if needed:  
> \> RestoreCluts;  
> \>

---

<div class="post-metadata">

**Author:** ![xeos](https://avatars.discourse-cdn.com/v4/letter/x/ecae2f/32.png) [@xeos](https://psychtoolbox.discourse.group/u/xeos)\
**Post date:** [June 7, 2011, 8:41pm UTC](https://psychtoolbox.discourse.group/t/native-10-bit-tests-fail-with-ati-v7600-winxp-latest-drivers-and-ptb/843/3 "2011-06-07T20:41:35Z")

</div>

--- In [psychtoolbox@yahoogroups.com](mailto:psychtoolbox@yahoogroups.com), "Mario" \<mario.kleiner@...\> wrote:   

> \> Script looks ok. I wasn't using AdditiveBlendingForLinearSuperpositionTutorial, but the BitsPlusCSFDemo, which can also display a gray scale gradient. That shows you if there are steps in the gradient or if it is smooth. But your script is probably even better with a flicker stim.

I tried that script as well (BitsPlusCSFDemo) and found that I could convince myself that I could see a little more of the gradient in 10 bit mode than 8, but it was quite subjective. Also, by playing around with the gamma the reverse seemed to be true (more was visible in 8 bit mode)!  
  
I wonder if there could be subtle interactions at the GPU/driver level that might make 10 bit mode look better, in terms of biasing the quantization, etc., so that a weak false positive could be observed? That is, I'm wondering if the 10 bit frame buffer -\> 10 bit DAC support you observed may have been illusory. Otherwise, I've got a long list of older drivers to try (or Linux, eventually).  
  
Or maybe there's a subtle mistake in my code that causes the 8 bit quantization. Ugh.   
  
- Alan.

---

<div class="post-metadata">

**Author:** ![mariokleiner](https://avatars.discourse-cdn.com/v4/letter/m/13edae/32.png) [@mariokleiner](https://psychtoolbox.discourse.group/u/mariokleiner)\
**Post date:** [August 4, 2011, 10:25pm UTC](https://psychtoolbox.discourse.group/t/native-10-bit-tests-fail-with-ati-v7600-winxp-latest-drivers-and-ptb/843/4 "2011-08-04T22:25:59Z")

</div>

There's only one new stack trace in this message. Did you forget the 2nd one?  
I assume the crash also happens if you don't run matlab via sudo as root?  
  
But this could be two independent failures:  
  
1. If you get synchronization failure you may need to clear out Screen or even restart Matlab. I've seen occassions where a sync failure caused a crash when retrying. This is a bug in ptb's error handling somewhere which i need to sort out at some point.  
  
Not sure why you get sync failures at all though.  
  
2. The Screen('Preference','Visualdebuglevel', 3) prevents the ptb startup message "Welcome to the Psychtoolbox...". If the crash goes away without it, then the bug may be in the ati drivers glDrawPixels() command used to blit that welcome message.  
  
First i'd like to know if (preventing sync-failures) the crashes go away. You could also "sudo apt-get install octave" to install octave and try with it. With octave we could simply attach the gdb debugger and try to narrow down the real bug faster. That should also work with matlab in theory but i find using a debugger with matlab extremely painful.  
  
-mario  
  

> --- In [psychtoolbox@yahoogroups.com](mailto:psychtoolbox@yahoogroups.com), "Alan Robinson" \<x\_e\_o\_s\_yahoo@...\> wrote:  
> \>  
> \> No success. I upgraded to the newest driver downloaded from ATI's website: 8.872, which provides OpenGL version 3.3.10907 (Compatibility Profile Context FireGL). Turning on Screen('Preference','Visualdebuglevel', 3) did prevent the crash, but only because PTB aborted thusly: ----- ! PTB - ERROR: SYNCHRONIZATION FAILURE ! ----.  
> \>   
> \> If you then add Screen('Preference', 'SkipSyncTests', 1); it seems to fail in almost the same way (the stack trace differs sightly, so I'll paste both).   
> \> ===================================  
> \> Here's the output with 10 verbosity from arcDemo:  
> \>   
> \>   
> \> PTB-INFO: This is Psychtoolbox-3 for GNU/Linux X11, under Matlab (Version 3.0.9 - Build date: Jul 4 2011).  
> \> PTB-INFO: Type 'PsychtoolboxVersion' for more detailed version information.  
> \> PTB-INFO: Most parts of the Psychtoolbox distribution are licensed to you under terms of the MIT License, with  
> \> PTB-INFO: some restrictions. See file 'License.txt' in the Psychtoolbox root folder for the exact licensing conditions.  
> \>   
> \> PTB-INFO: Using GLEW version 1.5.3 for automatic detection of OpenGL extensions...  
> \> PTB-INFO: Using GLX\_MESA\_swap\_control extension for control of vsync.  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller] with class x00060000 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation 82G33/G31/P35/P31 Express PCI Express Root Port] with class x00060400 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family High Definition Audio Controller] with class x00040300 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family PCI Express Port 1] with class x00060400 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family PCI Express Port 2] with class x00060400 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family USB UHCI Controller #1] with class x000c0300 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family USB UHCI Controller #2] with class x000c0300 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family USB UHCI Controller #3] with class x000c0300 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family USB UHCI Controller #4] with class x000c0300 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family USB2 EHCI Controller] with class x000c0320 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation 82801 PCI Bridge] with class x00060401 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge] with class x00060100 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH7 Family SATA IDE Controller] with class x0001018a ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family SMBus Controller] with class x000c0500 ...  
> \> PTB-DEBUG: Checking PCI device [ATI Technologies Inc R600 [FireGL V7600]] with class x00030000 ...  
> \> PTB-INFO: ATI Technologies Inc - R600 [FireGL V7600] GPU found. Trying to establish low-level access...  
> \> PTB-DEBUG: Mapping GPU BAR address 0xfdce0000 ...  
> \> PTB-DEBUG: Mapping 0x10000 bytes...  
> \> PTB-INFO: Connected to ATI Technologies Inc R600 [FireGL V7600] GPU with AVIVO display engine. Beamposition timestamping enabled.  
> \>   
> \>   
> \> OpenGL-Extensions are: GL\_AMDX\_debug\_output GL\_AMDX\_vertex\_shader\_tessellator GL\_AMD\_conservative\_depth GL\_AMD\_debug\_output GL\_AMD\_depth\_clamp\_separate GL\_AMD\_name\_gen\_delete GL\_AMD\_performance\_monitor GL\_AMD\_pinned\_memory GL\_AMD\_sample\_positions GL\_AMD\_shader\_stencil\_export GL\_AMD\_vertex\_shader\_tessellator GL\_ARB\_ES2\_compatibility GL\_ARB\_blend\_func\_extended GL\_ARB\_color\_buffer\_float GL\_ARB\_copy\_buffer GL\_ARB\_depth\_buffer\_float GL\_ARB\_depth\_clamp GL\_ARB\_depth\_texture GL\_ARB\_draw\_buffers GL\_ARB\_draw\_elements\_base\_vertex GL\_ARB\_draw\_instanced GL\_ARB\_explicit\_attrib\_location GL\_ARB\_fragment\_coord\_conventions GL\_ARB\_fragment\_program GL\_ARB\_fragment\_program\_shadow GL\_ARB\_fragment\_shader GL\_ARB\_framebuffer\_object GL\_ARB\_framebuffer\_sRGB GL\_ARB\_geometry\_shader4 GL\_ARB\_get\_program\_binary GL\_ARB\_half\_float\_pixel GL\_ARB\_half\_float\_vertex GL\_ARB\_imaging GL\_ARB\_instanced\_arrays GL\_ARB\_map\_buffer\_range GL\_ARB\_multisample GL\_ARB\_multitexture GL\_ARB\_occlusion\_query GL\_ARB\_occlusion\_query2 GL\_ARB\_pixel\_buffer\_object GL\_ARB\_point\_parameters GL\_ARB\_point\_sprite GL\_ARB\_provoking\_vertex GL\_ARB\_sampler\_objects GL\_ARB\_seamless\_cube\_map GL\_ARB\_separate\_shader\_objects GL\_ARB\_shader\_bit\_encoding GL\_ARB\_shader\_objects GL\_ARB\_shader\_precision GL\_ARB\_shader\_stencil\_export GL\_ARB\_shader\_texture\_lod GL\_ARB\_shading\_language\_100 GL\_ARB\_shadow GL\_ARB\_shadow\_ambient GL\_ARB\_sync GL\_ARB\_texture\_border\_clamp GL\_ARB\_texture\_buffer\_object GL\_ARB\_texture\_buffer\_object\_rgb32 GL\_ARB\_texture\_compression GL\_ARB\_texture\_compression\_rgtc GL\_ARB\_texture\_cube\_map GL\_ARB\_texture\_env\_add GL\_ARB\_texture\_env\_combine GL\_ARB\_texture\_env\_crossbar GL\_ARB\_texture\_env\_dot3 GL\_ARB\_texture\_float GL\_ARB\_texture\_mirrored\_repeat GL\_ARB\_texture\_multisample GL\_ARB\_texture\_non\_power\_of\_two GL\_ARB\_texture\_rectangle GL\_ARB\_texture\_rg GL\_ARB\_texture\_rgb10\_a2ui GL\_ARB\_texture\_snorm GL\_ARB\_timer\_query GL\_ARB\_transform\_feedback2 GL\_ARB\_transform\_feedback3 GL\_ARB\_transpose\_matrix GL\_ARB\_uniform\_buffer\_object GL\_ARB\_vertex\_array\_bgra GL\_ARB\_vertex\_array\_object GL\_ARB\_vertex\_buffer\_object GL\_ARB\_vertex\_program GL\_ARB\_vertex\_shader GL\_ARB\_vertex\_type\_2\_10\_10\_10\_rev GL\_ARB\_viewport\_array GL\_ARB\_window\_pos GL\_ATI\_draw\_buffers GL\_ATI\_envmap\_bumpmap GL\_ATI\_fragment\_shader GL\_ATI\_meminfo GL\_ATI\_separate\_stencil GL\_ATI\_texture\_compression\_3dc GL\_ATI\_texture\_env\_combine3 GL\_ATI\_texture\_float GL\_ATI\_texture\_mirror\_once GL\_EXT\_abgr GL\_EXT\_bgra GL\_EXT\_bindable\_uniform GL\_EXT\_blend\_color GL\_EXT\_blend\_equation\_separate GL\_EXT\_blend\_func\_separate GL\_EXT\_blend\_minmax GL\_EXT\_blend\_subtract GL\_EXT\_compiled\_vertex\_array GL\_EXT\_copy\_buffer GL\_EXT\_copy\_texture GL\_EXT\_direct\_state\_access GL\_EXT\_draw\_buffers2 GL\_EXT\_draw\_instanced GL\_EXT\_draw\_range\_elements GL\_EXT\_fog\_coord GL\_EXT\_framebuffer\_blit GL\_EXT\_framebuffer\_multisample GL\_EXT\_framebuffer\_object GL\_EXT\_framebuffer\_sRGB GL\_EXT\_geometry\_shader4 GL\_EXT\_gpu\_program\_parameters GL\_EXT\_gpu\_shader4 GL\_EXT\_histogram GL\_EXT\_multi\_draw\_arrays GL\_EXT\_packed\_depth\_stencil GL\_EXT\_packed\_float GL\_EXT\_packed\_pixels GL\_EXT\_pixel\_buffer\_object GL\_EXT\_point\_parameters GL\_EXT\_provoking\_vertex GL\_EXT\_rescale\_normal GL\_EXT\_secondary\_color GL\_EXT\_separate\_specular\_color GL\_EXT\_shadow\_funcs GL\_EXT\_stencil\_wrap GL\_EXT\_subtexture GL\_EXT\_texgen\_reflection GL\_EXT\_texture3D GL\_EXT\_texture\_array GL\_EXT\_texture\_buffer\_object GL\_EXT\_texture\_compression\_latc GL\_EXT\_texture\_compression\_rgtc GL\_EXT\_texture\_compression\_s3tc GL\_EXT\_texture\_cube\_map GL\_EXT\_texture\_edge\_clamp GL\_EXT\_texture\_env\_add GL\_EXT\_texture\_env\_combine GL\_EXT\_texture\_env\_dot3 GL\_EXT\_texture\_filter\_anisotropic GL\_EXT\_texture\_integer GL\_EXT\_texture\_lod GL\_EXT\_texture\_lod\_bias GL\_EXT\_texture\_mirror\_clamp GL\_EXT\_texture\_object GL\_EXT\_texture\_rectangle GL\_EXT\_texture\_sRGB GL\_EXT\_texture\_shared\_exponent GL\_EXT\_texture\_snorm GL\_EXT\_texture\_swizzle GL\_EXT\_timer\_query GL\_EXT\_transform\_feedback GL\_EXT\_vertex\_array GL\_EXT\_vertex\_array\_bgra GL\_IBM\_texture\_mirrored\_repeat GL\_KTX\_buffer\_region GL\_NV\_blend\_square GL\_NV\_conditional\_render GL\_NV\_copy\_depth\_to\_color GL\_NV\_explicit\_multisample GL\_NV\_float\_buffer GL\_NV\_half\_float GL\_NV\_primitive\_restart GL\_NV\_texgen\_reflection GL\_NV\_texture\_barrier GL\_SGIS\_generate\_mipmap GL\_SGIS\_texture\_edge\_clamp GL\_SGIS\_texture\_lod GL\_SUN\_multi\_draw\_arrays GL\_WIN\_swap\_hint WGL\_EXT\_swap\_control  
> \>   
> \> PTB-DEBUG: Interrogating Low-level renderer capabilities for onscreen window with handle 10:  
> \> Indicator variables: FBO's 1, ATI\_texture\_float 1, ARB\_texture\_float 1, Vendor ATI Technologies Inc., Renderer ATI FireGL V7600.  
> \> Indicator variables: maxcolorattachments = 8, maxrectangletexturesize = 8192, maxnativealuinstructions = 2147483647.  
> \> Basic framebuffer objects with rectangle texture rendertargets supported --\> RGBA8 rendertargets with blending.  
> \> Framebuffer objects support fast blitting between each other.  
> \> Framebuffer objects support anti-aliasing via multisampling.  
> \> Hardware supports floating point textures of 16bpc and 32bpc float format.  
> \> Assuming ATI R300 core or later: Hardware supports basic floating point framebuffers of 16bpc and 32bpc float format.  
> \> Assuming ATI R500 or later (maxtexsize=8192): Hardware supports floating point blending on 16bpc float format.  
> \> Hardware supports full 32 bit floating point precision shading.  
> \> Assuming ATI R600 or later (Max native ALU inst. = 2147483647): Hardware supports floating point blending and filtering on 16bpc and 32bpc float formats.  
> \> PTB-Info: Running on 'The X.Org Foundation' XServer, Vendor release 11001000.  
> \> OML\_sync\_control indicators: glXGetSyncValuesOML=(nil) , glXWaitForMscOML=(nil), glXWaitForSbcOML=(nil), glXSwapBuffersMscOML=(nil)  
> \> OML\_sync\_control indicators: glxewIsSupported() says 0.  
> \> No support for OpenML OML\_sync\_control extension. Using standard implementation.  
> \> PTB-DEBUG: Interrogation done.  
> \>   
> \>   
> \>   
> \>   
> \>   
> \>   
> \> MATLAB crash file:/home/visionlab/matlab\_crash\_dump.3654-1:  
> \>   
> \>   
> \> ------------------------------------------------------------------------  
> \> Abort signal detected at Wed Aug 3 10:07:45 2011  
> \> ------------------------------------------------------------------------  
> \>   
> \> Configuration:  
> \> Crash Decoding : Disabled  
> \> Current Visual : 0x25 (class 4, depth 24)  
> \> Default Encoding: UTF-8  
> \> GNU C Library : 2.13 stable  
> \> MATLAB License : 206168  
> \> MATLAB Root : /usr/local/MATLAB/R2011a  
> \> MATLAB Version : 7.12.0.635 (R2011a)  
> \> Operating System: Linux 2.6.38-10-generic-pae #46-Ubuntu SMP Tue Jun 28 16:54:49 UTC 2011 i686  
> \> Processor ID : x86 Family 6 Model 7 Stepping 10, GenuineIntel  
> \> Virtual Machine : Java 1.6.0\_17-b04 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode  
> \> Window System : The X.Org Foundation (11001000), display :0.0  
> \>   
> \> Fault Count: 1  
> \>   
> \>   
> \>   
> \> Abnormal termination:  
> \> Abort signal  
> \>   
> \> Register State (from fault):  
> \> EAX = 00000000 EBX = 00000e46  
> \> ECX = 00000e6e EDX = 00000006  
> \> ESP = b212018c EBP = b21201a4  
> \> ESI = 00000000 EDI = b6b36ff4  
> \>   
> \> EIP = b7717424 EFL = 00200202  
> \>   
> \> CS = 00000073 DS = 0000007b SS = 0000007b  
> \> ES = ffff007b FS = c1530000 GS = 00000033  
> \>   
> \>   
> \> Stack Trace (from fault):  
> \> [0] 0xb7607099 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwfl.so+00450713 fl::sysdep::linux::unwind\_stack(void const\*\*, unsigned int, unsigned int, fl::diag::thread\_context const&)+000036  
> \> [1] 0xb75b824a /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwfl.so+00127562 fl::diag::stacktrace\_base::capture(fl::diag::thread\_context const&, unsigned int)+000180  
> \> [2] 0xb75c2473 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwfl.so+00169075  
> \> [3] 0xb75c2845 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwfl.so+00170053 fl::diag::terminate\_log(char const\*, fl::diag::thread\_context const&, bool)+000115  
> \> [4] 0xb7294a0f /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00375311 fl::diag::terminate\_log(char const\*, ucontext const\*, bool)+000096  
> \> [5] 0xb72918a6 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00362662  
> \> [6] 0xb729356e /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00370030  
> \> [7] 0xb72943a0 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00373664  
> \> [8] 0xb771740c \_\_kernel\_rt\_sigreturn+000000  
> \> [9] 0xb7717424 \_\_kernel\_vsyscall+000016  
> \> [10] 0xb6a04e71 /lib/i386-linux-gnu/libc.so.6+00175729 gsignal+000081  
> \> [11] 0xb6a0834e /lib/i386-linux-gnu/libc.so.6+00189262 abort+000382  
> \> [12] 0x9a14f018 /usr/X11R6/lib/modules/dri/fglrx\_dri.so+26087448  
> \> [13] 0x9a143884 /usr/X11R6/lib/modules/dri/fglrx\_dri.so+26040452  
> \> [14] 0x9a14e1ba /usr/X11R6/lib/modules/dri/fglrx\_dri.so+26083770  
> \> [15] 0x9a14f81b /usr/X11R6/lib/modules/dri/fglrx\_dri.so+26089499  
> \> [16] 0x9a14f060 /usr/X11R6/lib/modules/dri/fglrx\_dri.so+26087520  
> \> [17] 0x9a13f434 /usr/X11R6/lib/modules/dri/fglrx\_dri.so+26022964  
> \> [18] 0x99f140e1 /usr/X11R6/lib/modules/dri/fglrx\_dri.so+23748833  
> \>   
> \>   
> \>   
> \> This error was detected while a MEX-file was running. If the MEX-file  
> \> is not an official MathWorks function, please examine its source code  
> \> for errors. Please consult the External Interfaces Guide for information  
> \> on debugging MEX-files.  
> \>   
> \> If this problem is reproducible, please submit a Service Request via:  
> \> [http://www.mathworks.com/support/contact\_us/](http://www.mathworks.com/support/contact_us/)  
> \>   
> \> A technical support engineer might contact you with further information.  
> \>   
> \> Thank you for your help.  
> \>   
> \>   
> \>   
> \>   
> \>   
> \> --- In [psychtoolbox@yahoogroups.com](mailto:psychtoolbox@yahoogroups.com), "Mario" \<mario.kleiner@\> wrote:  
> \> \>  
> \> \>   
> \> \>   
> \> \> --- In [psychtoolbox@yahoogroups.com](mailto:psychtoolbox@yahoogroups.com), "Alan Robinson" \<x\_e\_o\_s\_yahoo@\> wrote:  
> \> \> \>  
> \> \> \> I have now tried this, but have only succeeded in crashing matlab. I'm using 32 bit Ubuntu 11.04, 32 bit matlab R2011a, and the 8.84.6 ATI binary drivers (IE those that came with Ubuntu 11.04). Note that I can run PTB code just fine with the x.org driver, except there is no 10 bit support.   
> \> \> \>   
> \> \> \> It actually doesn't matter what I try to run with the ATI binary drivers, as any call to screen causes the same error:  
> \> \> \>   
> \> \>   
> \> \> Cool.  
> \> \>   
> \> \> So any demo fails? Please rerun it with Screen('Preference','Verbosity', 10); so we get a better clue where it fails.  
> \> \>   
> \> \> Does running with Screen('Preference','Visualdebuglevel', 3); make any difference?  
> \> \>   
> \> \> A graphics driver update from \<[http://www.amd.com](http://www.amd.com)\> would also make sense as a next step.  
> \> \>   
> \> \> \> --------------  
> \> \> \> matlab command window  
> \> \> \> --------------  
> \> \> \> PTB-Info: A total of 2 physical X-Windows display screens is available for use.  
> \> \> \>   
> \> \> \>   
> \> \> \> PTB-INFO: This is Psychtoolbox-3 for GNU/Linux X11, under Matlab (Version 3.0.9 - Build date: Jul 4 2011).  
> \> \> \> PTB-INFO: Type 'PsychtoolboxVersion' for more detailed version information.  
> \> \> \> PTB-INFO: Most parts of the Psychtoolbox distribution are licensed to you under terms of the MIT License, with  
> \> \> \> PTB-INFO: some restrictions. See file 'License.txt' in the Psychtoolbox root folder for the exact licensing conditions.  
> \> \> \>   
> \> \> \> PTB-INFO: Using GLEW version 1.5.3 for automatic detection of OpenGL extensions...  
> \> \> \> PTB-INFO: Using GLX\_MESA\_swap\_control extension for control of vsync.  
> \> \> \> PTB-INFO: ATI Technologies Inc - R600 [FireGL V7600] GPU found. Trying to establish low-level access...  
> \> \> \> PTB-INFO: Connected to ATI Technologies Inc R600 [FireGL V7600] GPU with AVIVO display engine. Beamposition timestamping enabled.  
> \> \> \>   
> \> \> \>   
> \> \> \> OpenGL-Extensions are:..... (too many to list)  
> \> \> \>   
> \> \> \> -----------------------------------  
> \> \> \> then matlab throws up this message:  
> \> \> \> -----------------------------------  
> \> \> \>   
> \> \> \> Fault Count: 1  
> \> \> \>   
> \> \> \>   
> \> \> \>   
> \> \> \> Abnormal termination:  
> \> \> \> Abort signal  
> \> \> \>   
> \> \> \> Register State (from fault):  
> \> \> \> EAX = 00000000 EBX = 00000daa  
> \> \> \> ECX = 00000dd2 EDX = 00000006  
> \> \> \> ESP = b21b6fdc EBP = b21b6ff4  
> \> \> \> ESI = 00000000 EDI = b6bceff4  
> \> \> \>   
> \> \> \> EIP = b77af424 EFL = 00200206  
> \> \> \>   
> \> \> \> CS = 00000073 DS = 0000007b SS = 0000007b  
> \> \> \> ES = 0000007b FS = 00000000 GS = 00000033  
> \> \> \>   
> \> \> \>   
> \> \> \> Stack Trace (from fault):  
> \> \> \> [0] 0xb769f099 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwfl.so+00450713 fl::sysdep::linux::unwind\_stack(void const\*\*, unsigned int, unsigned int, fl::diag::thread\_context const&)+000036  
> \> \> \> [1] 0xb765024a /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwfl.so+00127562 fl::diag::stacktrace\_base::capture(fl::diag::thread\_context const&, unsigned int)+000180  
> \> \> \> [2] 0xb765a473 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwfl.so+00169075  
> \> \> \> [3] 0xb765a845 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwfl.so+00170053 fl::diag::terminate\_log(char const\*, fl::diag::thread\_context const&, bool)+000115  
> \> \> \> [4] 0xb732ca0f /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00375311 fl::diag::terminate\_log(char const\*, ucontext const\*, bool)+000096  
> \> \> \> [5] 0xb73298a6 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00362662  
> \> \> \> [6] 0xb732b56e /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00370030  
> \> \> \> [7] 0xb732c3a0 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00373664  
> \> \> \> [8] 0xb77af40c \_\_kernel\_rt\_sigreturn+000000  
> \> \> \> [9] 0xb77af424 \_\_kernel\_vsyscall+000016  
> \> \> \> [10] 0xb6a9ce71 /lib/i386-linux-gnu/libc.so.6+00175729 gsignal+000081  
> \> \> \> [11] 0xb6aa034e /lib/i386-linux-gnu/libc.so.6+00189262 abort+000382  
> \> \> \> [12] 0x9b88f908 /usr/lib/dri/fglrx\_dri.so+25315592  
> \> \> \> [13] 0x9b884174 /usr/lib/dri/fglrx\_dri.so+25268596  
> \> \> \> [14] 0x9b88eaaa /usr/lib/dri/fglrx\_dri.so+25311914  
> \> \> \> [15] 0x9b89010b /usr/lib/dri/fglrx\_dri.so+25317643  
> \> \> \> [16] 0x9b88f950 /usr/lib/dri/fglrx\_dri.so+25315664  
> \> \> \> [17] 0x9b87fd24 /usr/lib/dri/fglrx\_dri.so+25251108  
> \> \> \> [18] 0x9b658225 /usr/lib/dri/fglrx\_dri.so+22991397  
> \> \> \>   
> \> \> \>   
> \> \> \>   
> \> \> \> This error was detected while a MEX-file was running. If the MEX-file  
> \> \> \> is not an official MathWorks function, please examine its source code  
> \> \> \> for errors. Please consult the External Interfaces Guide for information  
> \> \> \> on debugging MEX-files.  
> \> \> \>   
> \> \> \> If this problem is reproducible, please submit a Service Request via:  
> \> \> \> [http://www.mathworks.com/support/contact\_us/](http://www.mathworks.com/support/contact_us/)  
> \> \> \>   
> \> \> \> A technical support engineer might contact you with further information.  
> \> \> \>   
> \> \> \> Thank you for your help.  
> \> \> \>   
> \> \> \> -----------------  
> \> \> \> And in the console:  
> \> \> \> ------------------  
> \> \> \>   
> \> \> \>   
> \> \> \> root@cree:~# OMP: Error #15: Initializing libiomp5.a, but found libiomp5.so already initialized.  
> \> \> \> OMP: Hint: This may cause performance degradation and correctness issues. Set environment variable KMP\_DUPLICATE\_LIB\_OK=TRUE to ignore this problem and force the program to continue anyway. Please note that the use of KMP\_DUPLICATE\_LIB\_OK is unsupported and using it may cause undefined behavior. For more information, please contact Intel(R) Premier Support.  
> \> \> \>   
> \> \> \>   
> \> \> \> -----  
> \> \> \> note  
> \> \> \> -----  
> \> \> \> KMP\_DUPLICATE\_LIB\_OK=TRUE does not change the crash behavior at all.  
> \> \> \>  
> \> \>  
> \>   
> \>   
> \> ==========================  
> \> 10 verbosity, visual debug 3, skip sync tests:  
> \>   
> \>   
> \> PTB-INFO: This is Psychtoolbox-3 for GNU/Linux X11, under Matlab (Version 3.0.9 - Build date: Jul 4 2011).  
> \> PTB-INFO: Type 'PsychtoolboxVersion' for more detailed version information.  
> \> PTB-INFO: Most parts of the Psychtoolbox distribution are licensed to you under terms of the MIT License, with  
> \> PTB-INFO: some restrictions. See file 'License.txt' in the Psychtoolbox root folder for the exact licensing conditions.  
> \>   
> \> PTB-INFO: Using GLEW version 1.5.3 for automatic detection of OpenGL extensions...  
> \> PTB-INFO: Using GLX\_MESA\_swap\_control extension for control of vsync.  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller] with class x00060000 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation 82G33/G31/P35/P31 Express PCI Express Root Port] with class x00060400 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family High Definition Audio Controller] with class x00040300 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family PCI Express Port 1] with class x00060400 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family PCI Express Port 2] with class x00060400 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family USB UHCI Controller #1] with class x000c0300 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family USB UHCI Controller #2] with class x000c0300 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family USB UHCI Controller #3] with class x000c0300 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family USB UHCI Controller #4] with class x000c0300 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family USB2 EHCI Controller] with class x000c0320 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation 82801 PCI Bridge] with class x00060401 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge] with class x00060100 ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH7 Family SATA IDE Controller] with class x0001018a ...  
> \> PTB-DEBUG: Checking PCI device [Intel Corporation N10/ICH 7 Family SMBus Controller] with class x000c0500 ...  
> \> PTB-DEBUG: Checking PCI device [ATI Technologies Inc R600 [FireGL V7600]] with class x00030000 ...  
> \> PTB-INFO: ATI Technologies Inc - R600 [FireGL V7600] GPU found. Trying to establish low-level access...  
> \> PTB-DEBUG: Mapping GPU BAR address 0xfdce0000 ...  
> \> PTB-DEBUG: Mapping 0x10000 bytes...  
> \> PTB-INFO: Connected to ATI Technologies Inc R600 [FireGL V7600] GPU with AVIVO display engine. Beamposition timestamping enabled.  
> \>   
> \> ------------------------------------------------------------------------  
> \> Segmentation violation detected at Wed Aug 3 10:21:48 2011  
> \> ------------------------------------------------------------------------  
> \>   
> \> Configuration:  
> \> Crash Decoding : Disabled  
> \> Current Visual : 0x25 (class 4, depth 24)  
> \> Default Encoding: UTF-8  
> \> GNU C Library : 2.13 stable  
> \> MATLAB License : 206168  
> \> MATLAB Root : /usr/local/MATLAB/R2011a  
> \> MATLAB Version : 7.12.0.635 (R2011a)  
> \> Operating System: Linux 2.6.38-10-generic-pae #46-Ubuntu SMP Tue Jun 28 16:54:49 UTC 2011 i686  
> \> Processor ID : x86 Family 6 Model 7 Stepping 10, GenuineIntel  
> \> Virtual Machine : Java 1.6.0\_17-b04 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode  
> \> Window System : The X.Org Foundation (11001000), display :0.0  
> \>   
> \> Fault Count: 1  
> \>   
> \>   
> \>   
> \> Abnormal termination:  
> \> Segmentation violation  
> \>   
> \> Register State (from fault):  
> \> EAX = 00000000 EBX = 9c444ff4  
> \> ECX = 9c34b8b8 EDX = 00000000  
> \> ESP = b2188c04 EBP = b2188c38  
> \> ESI = 9cf7eaf8 EDI = 00000015  
> \>   
> \> EIP = 9c2d47e4 EFL = 00210202  
> \>   
> \> CS = 00000073 DS = 0000007b SS = 0000007b  
> \> ES = 0000007b FS = 00000000 GS = 00000033  
> \>   
> \>   
> \> Stack Trace (from fault):  
> \> [0] 0xb766f099 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwfl.so+00450713 fl::sysdep::linux::unwind\_stack(void const\*\*, unsigned int, unsigned int, fl::diag::thread\_context const&)+000036  
> \> [1] 0xb762024a /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwfl.so+00127562 fl::diag::stacktrace\_base::capture(fl::diag::thread\_context const&, unsigned int)+000180  
> \> [2] 0xb762a473 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwfl.so+00169075  
> \> [3] 0xb762a845 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwfl.so+00170053 fl::diag::terminate\_log(char const\*, fl::diag::thread\_context const&, bool)+000115  
> \> [4] 0xb72fca0f /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00375311 fl::diag::terminate\_log(char const\*, ucontext const\*, bool)+000096  
> \> [5] 0xb72f98a6 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00362662  
> \> [6] 0xb72fb56e /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00370030  
> \> [7] 0xb72fc154 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00373076  
> \> [8] 0xb777f40c \_\_kernel\_rt\_sigreturn+000000  
> \> [9] 0x9c2d47e4 /usr/lib/libGL.so.1+00337892 glXMakeCurrent+000024  
> \> [10] 0x9c39e427 /usr/local/ptb/Psychtoolbox/PsychBasic/Screen.mexglx+00205863  
> \> [11] 0x9c39e4ab /usr/local/ptb/Psychtoolbox/PsychBasic/Screen.mexglx+00205995  
> \> [12] 0x9c3a37fd /usr/local/ptb/Psychtoolbox/PsychBasic/Screen.mexglx+00227325  
> \> [13] 0x9c3b9628 /usr/local/ptb/Psychtoolbox/PsychBasic/Screen.mexglx+00316968  
> \> [14] 0x9c37aa7e /usr/local/ptb/Psychtoolbox/PsychBasic/Screen.mexglx+00060030 mexFunction+000933  
> \> [15] 0xb5186182 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/../../bin/glnx86/libmex.so+00041346 mexRunMexFile+000109  
> \> [16] 0xb5182f77 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/../../bin/glnx86/libmex.so+00028535  
> \> [17] 0xb5183caa /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/../../bin/glnx86/libmex.so+00031914  
> \> [18] 0xb7280429 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_dispatcher.so+00406569 Mfh\_file::dispatch\_fh(int, mxArray\_tag\*\*, int, mxArray\_tag\*\*)+000449  
> \> [19] 0xb6fb0e7c /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+02911868  
> \> [20] 0xb6fb4804 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+02926596  
> \> [21] 0xb6fb5459 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+02929753  
> \> [22] 0xb6e2e6d5 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+01328853  
> \> [23] 0xb6e5803a /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+01499194  
> \> [24] 0xb6e58109 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+01499401  
> \> [25] 0xb6f5a39b /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+02556827  
> \> [26] 0xb6dcec95 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+00937109  
> \> [27] 0xb6dd268a /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+00951946  
> \> [28] 0xb6dd008b /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+00942219  
> \> [29] 0xb6dd0ac4 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+00944836  
> \> [30] 0xb6e2c21a /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+01319450  
> \> [31] 0xb6e023d8 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+01147864  
> \> [32] 0xb6e009ac /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+01141164  
> \> [33] 0xb7280429 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_dispatcher.so+00406569 Mfh\_file::dispatch\_fh(int, mxArray\_tag\*\*, int, mxArray\_tag\*\*)+000449  
> \> [34] 0xb6e15e99 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+01228441  
> \> [35] 0xb6db04da /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+00812250  
> \> [36] 0xb6dcd5cf /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+00931279  
> \> [37] 0xb6dd268a /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+00951946  
> \> [38] 0xb6dd008b /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+00942219  
> \> [39] 0xb6dd0ac4 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+00944836  
> \> [40] 0xb6e2c21a /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+01319450  
> \> [41] 0xb6e023d8 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+01147864  
> \> [42] 0xb6e009ac /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+01141164  
> \> [43] 0xb7280429 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_dispatcher.so+00406569 Mfh\_file::dispatch\_fh(int, mxArray\_tag\*\*, int, mxArray\_tag\*\*)+000449  
> \> [44] 0xb6e0b6bb /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+01185467  
> \> [45] 0xb6dc2147 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+00885063  
> \> [46] 0xb6dc76e4 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+00906980  
> \> [47] 0xb6dc6166 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+00901478  
> \> [48] 0xb6dc6767 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+00903015  
> \> [49] 0xb6d79ae3 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwm\_interpreter.so+00588515 inEvalCmdWithLocalReturn+000081  
> \> [50] 0xb7331b5e /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwbridge.so+00093022  
> \> [51] 0xb73327dd /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwbridge.so+00096221 mnParser+000483  
> \> [52] 0xb72e4471 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00275569 mcrInstance::mnParser\_on\_interpreter\_thread()+000051  
> \> [53] 0xb72ea66b /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00300651  
> \> [54] 0xb72c5652 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00149074  
> \> [55] 0xb72c56e3 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00149219  
> \> [56] 0xb3d2bfbf /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/../../bin/glnx86/libmwuix.so+00393151  
> \> [57] 0xb3d25026 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/../../bin/glnx86/libmwuix.so+00364582  
> \> [58] 0xb3d25367 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/../../bin/glnx86/libmwuix.so+00365415 UIX\_DispatchEvent(\_XEvent\*)+000031  
> \> [59] 0xb3d34156 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/../../bin/glnx86/libmwuix.so+00426326  
> \> [60] 0xb3d2ece9 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/../../bin/glnx86/libmwuix.so+00404713  
> \> [61] 0xb3f53d19 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/../../bin/glnx86/libuij.so+00232729 sysq::wait\_F\<boost::weak\_ptr\<sysq::ws\_ppeHook\>, boost::shared\_ptr\<sysq::ws\_ppeHook\> \> std::for\_each\<\_\_gnu\_cxx::\_\_normal\_iterator\<boost::weak\_ptr\<sysq::ws\_ppeHook\>\*, std::vector\<boost::weak\_ptr\<sysq::ws\_ppeHook\>, std::allocator\<boost::weak\_ptr\<sysq::ws\_ppeHook\> \> \> \>, sysq::wait\_F\<boost::weak\_ptr\<sysq::ws\_ppeHook\>, boost::shared\_ptr\<sysq::ws\_ppeHook\> \> \>(\_\_gnu\_cxx::\_\_normal\_iterator\<boost::weak\_ptr\<sysq::ws\_ppeHook\>\*, std::vector\<boost::weak\_ptr\<sysq::ws\_ppeHook\>, std::allocator\<boost::weak\_ptr\<sysq::ws\_ppeHook\> \> \> \>, \_\_gnu\_cxx::\_\_normal\_iterator\<boost::weak\_ptr\<sysq::ws\_ppeHook\>\*, std::vector\<boost::weak\_ptr\<sysq::ws\_ppeHook\>, std::allocator\<boost::weak\_ptr\<sysq::ws\_ppeHook\> \> \> \>, sysq::wait\_F\<boost::weak\_ptr\<sysq::ws\_ppeHook\>, boost::shared\_ptr\<sysq::ws\_ppeHook\> \>)+000058  
> \> [62] 0xb3f544d7 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/../../bin/glnx86/libuij.so+00234711  
> \> [63] 0xb3f4f81b /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/../../bin/glnx86/libuij.so+00215067 svWS\_ProcessPendingEvents(int, int, bool)+000719  
> \> [64] 0xb3f52dad /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/../../bin/glnx86/libuij.so+00228781 UIJ\_WS\_ProcessPendingEvents(int, int)+000044  
> \> [65] 0xb7409d78 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwservices.so+00421240 svWS\_ProcessPendingEvents+000037  
> \> [66] 0xb72c695d /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00153949  
> \> [67] 0xb72c6ec4 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00155332  
> \> [68] 0xb72c7067 /usr/local/MATLAB/R2011a/bin/glnx86/../../bin/glnx86/libmwmcr.so+00155751  
> \> [69] 0xb6ba8e99 /lib/i386-linux-gnu/libpthread.so.0+00024217  
> \> [70] 0xb6b1273e /lib/i386-linux-gnu/libc.so.6+00853822 clone+000094  
> \>

---

<div class="post-metadata">

**Author:** ![xeos](https://avatars.discourse-cdn.com/v4/letter/x/ecae2f/32.png) [@xeos](https://psychtoolbox.discourse.group/u/xeos)\
**Post date:** [August 25, 2011, 4:00pm UTC](https://psychtoolbox.discourse.group/t/native-10-bit-tests-fail-with-ati-v7600-winxp-latest-drivers-and-ptb/843/5 "2011-08-25T16:00:46Z")

</div>

It works! The long and short of it: I needed to make ATI CCC get out of the way by turning off "force 10 bit (deep) color". CCC provides three choices: force, auto, and off. I switched from force to auto, and now with vram=2^21 it works perfectly. I did not try the "off" position, but I don't see how that would be any better. I also tried turning off verbose output, and that didn't make any difference in 10bit=force mode, so I don't think that's the issue.  
  
It's taken me a while to get back to you on this because I wanted to verify that it was actually working with a photometer, which I now have. There are definitely \> 256 intensity steps per color channel. I'm not 100% sure we are getting all 1024, esp. \> 800, but I suspect this is just due to the noisiness of CRTs, and that running the test over the weekend and then averaging will reveal all 1024 steps. In any case, your tireless help on this has been much appropriated. This has certainly saved us about $5000 or more in hardware costs. Your time and our time is probably worth more than that, but at least now other people that want to replicate our results know exactly what to buy.   
  
So, at this point, the configuration is :  
  
Latest Ubuntu  
Latest ATI binary driver (see earlier message for version)  
visual debug = 3 (otherwise, crash!)  
vram = 2^21 (otherwise, 8 bit only)  
ati ccc deep color = auto (otherwise, corrupted colors)  
video output = 2 CRTs via 2xVGA, with the screen open on one or the other (have not tried it simultaneously yet).   
  
It takes 26 seconds for the screen to finish opening when you set vram=2^21, during which time the CRT is a bright red. Without the vram setting it only takes a second or two. Any ideas why it takes so much longer?  
  
  

> \> Ok, the occassional corrupted colors in the first trunk version \>mean that it is addressing the correct display engine, except that \>you should have seen corrupted colors all the time. The log from the \>2nd (current) trunk download shows everything is setup correctly now.

Just to be clear, the corrupted colors seemed to be related to which settings were enabled, it's not like they came and went during a single opening of screen.

---

<div class="post-metadata">

**Author:** ![xeos](https://avatars.discourse-cdn.com/v4/letter/x/ecae2f/32.png) [@xeos](https://psychtoolbox.discourse.group/u/xeos)\
**Post date:** [August 29, 2011, 10:45pm UTC](https://psychtoolbox.discourse.group/t/native-10-bit-tests-fail-with-ati-v7600-winxp-latest-drivers-and-ptb/843/6 "2011-08-29T22:45:39Z")

</div>

> \> Good! Manhood restored i guess ;-)  
> \>   
> \> Now we would just need a way to communicate to AMD that their

hardware can do what they think it can't do. It would be better if this would be supported by the official catalyst driver on FireGL/FirePro without our hacks, given that you basically pay for   
  
Agreed. It would probably be better to go after the font crash first, though, since any hint of unsupported use/activity could cause them to stop providing support.   
  

> \> Yes, over 512 dicriminable levels means 10 bit framebuffer-\>dac operation. Of course there might be some noisyness in the dac's, amplifiers, cabling etc. Given that 10 bit mode is not officially supported, they probably won't spend extra effort making sure the parts are perfectly noise-free in the least significant bit.

Careful testing suggests that the LSB almost always contributes to the intensity, though the stepsize is sometimes quite small or abnormally large. This is most noticeable at higher intensities, where the \>8 bit resolution is less useful anyway. On the whole I'd guess we get around 1010-1020 unique intensities per color gun.  
  

> \> Btw. the same 10 bit hack should work with any Radeon card of the X1000, HD2000/3000/4000 series as well - although one would need to verify this by measurement again. The hd-5000/6000 etc. should be able to do it as well, but i don't have any hacks for these implemented in ptb yet.  
> \>   
> \> Can you enter all this info into the proper place on our Wiki? Thanks.

Yep, I've documented my success with our current setup (the fireGL) on the Wiki. Ironic that the more expensive,older card may have made all this more difficult not less.   
  
Thanks again Mario!

---

<div class="post-metadata">

**Author:** ![mariokleiner](https://avatars.discourse-cdn.com/v4/letter/m/13edae/32.png) [@mariokleiner](https://psychtoolbox.discourse.group/u/mariokleiner)\
**Post date:** [August 30, 2011, 12:27am UTC](https://psychtoolbox.discourse.group/t/native-10-bit-tests-fail-with-ati-v7600-winxp-latest-drivers-and-ptb/843/7 "2011-08-30T00:27:47Z")

</div>

--- In [psychtoolbox@yahoogroups.com](mailto:psychtoolbox@yahoogroups.com), "Alan Robinson" \<x\_e\_o\_s\_yahoo@...\> wrote:  

> \>   
> \> Agreed. It would probably be better to go after the font crash first, though, since any hint of unsupported use/activity could cause them to stop providing support.   
> \>

That's their bug, not our fault.  
  

> \> \> Yes, over 512 dicriminable levels means 10 bit framebuffer-\>dac operation. Of course there might be some noisyness in the dac's, amplifiers, cabling etc. Given that 10 bit mode is not officially supported, they probably won't spend extra effort making sure the parts are perfectly noise-free in the least significant bit.  
> \>   
> \> Careful testing suggests that the LSB almost always contributes to the intensity, though the stepsize is sometimes quite small or abnormally large. This is most noticeable at higher intensities, where the \>8 bit resolution is less useful anyway. On the whole I'd guess we get around 1010-1020 unique intensities per color gun.  
> \>

The stepsize difference is probably simply monitor gamma. In 10 bit mode, the gpu gamma tables are disabled/bypassed, so if you test with your testscript and don't use our shader based gamma correction via PsychColorCorrection() you won't have any gamma correction and measure the monitors uncorrected non-linearity.  
  
-mario
