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

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;
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, "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;
>
--- In 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.
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, "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/
>
> A technical support engineer might contact you with further information.
>
> Thank you for your help.
>
>
>
>
>
> --- In psychtoolbox@yahoogroups.com, "Mario" <mario.kleiner@> wrote:
> >
> >
> >
> > --- In 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> 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/
> > >
> > > 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
>
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.
> 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!
--- In 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