Synch trouble on linux Ubuntu 18.04 with GeForce GTX 1650 nvidia GPU

Dear PTB community,

I started using PTB (version 3.0.14 debian package on octave version 4.2.2) with linux ubuntu 18.04 with low latency kernel and two X screens and it seems that PTB has trouble with my GPU (GeForce GTX 1650 nvidia). The correct driver is installed (NVIDIA 440.100) and I used XOrgConfCreator and XOrgConfSelector to set up my screens, but it seems that the output mapping of my screens by PTB is wrong and results in the following errors/problems. Both screens have a 60 Hz refresh rate and my primary screen (X-Screen 0) is connected to the display port and my secondary screen (X-screen 1), which I use to show my stimuli, is connected to the HDMI port.

The first problem I have is that PTB does not recognize the Nvidia chipset (Unknown NVidia chipset 0x167000a1 - Assuming latest generation). I couldn’t really find what this means and how to solve this, so any suggestions are welcome.

Another problem is that the mapping of my GPU outputs to CRTC’s seems to be wrong. I’ve checked and my nvidia GPU is the only one in use, so the problem cannot be related to a multi-GPU system. I have therefore tried to circumvent the problem by adding Screen(‘Preference’, ‘ScreenToHead’, 0, 2, 2, 0) and Screen(‘Preference’, ‘ScreenToHead’, 1, 1, 1, 0) to the top of my script, but everytime I run my script it seems that it falls back into the default settings and seems to ignore my manual rewiring attempt. My GPU has 3 outputs and 3 CRTC’s and I believe that my X-Screen 0 is connected to the last output and that X-screen 1 is attached to the middle output. I have tried several combinations of ScreenToHead, but all end up in the same first two output lines when I run my script and somehow seems to fall back into default settings after I call for any kind of Screen function (e.g. SkipSynchTest or Openwindow):

PTB-INFO: Display ':0.0' : X-Screen 0 : Assigning primary output as 1 with RandR-CRTC 0 and GPU-CRTC 0.
PTB-INFO: Display ':0.0' : X-Screen 1 : Assigning primary output as 0 with RandR-CRTC 0 and GPU-CRTC 1.) 

Sometimes PTB takes 50 valid samples when it calculates the refresh rate interval even though it throws me the warning that the beamposition queries are unsupported or defective on my system and then runs my script without skipping frames, but then sometimes it says that it cannot compute the refresh rate and takes up to 299 samples and shows that it will fall back into basic timestamping mode. This then results in the ----- ! PTB - ERROR: SYNCHRONIZATION FAILURE ! ---- error.

Below the output when I run my script:

>> LE_RandomDotsTask  
PTB-INFO: Display ':0.0' : X-Screen 0 : Assigning primary output as 1 with RandR-CRTC 0 and GPU-CRTC 0.
PTB-INFO: Display ':0.0' : X-Screen 1 : Assigning primary output as 0 with RandR-CRTC 0 and GPU-CRTC 1.
PTB-INFO: A total of 2 X-Windows display screens is available for use.
PTB-INFO: This is Psychtoolbox-3 for GNU/Linux X11, under GNU/Octave 64-Bit (Version 3.0.14 - Build date: Jun 26 2017).
PTB-INFO: Support status on this operating system release: Linux 4.15.0-108-lowlatency Supported.
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: NVIDIA Corporation - (null) GPU found. Trying to establish low-level access...
PTB-DEBUG: Unknown NVidia chipset 0x167000a1 - Assuming latest generation.
PTB-INFO: Connected to NVidia (null) GPU of NV-000 family with 4 display heads. Beamposition 
PTB-WARNING: Hang in beamposition query detected! Seems my mapping of screen numbers to GPU's and display outputs is wrong?
PTB-WARNING: In a single GPU system you can resolve this by plugging in your monitors in a different order, changing the
PTB-WARNING: display arrangement in the control panel, or using the Screen('Preference', 'ScreenToHead', ...);
PTB-WARNING: command at the top of your scripts to set the mapping manually. See 'help DisplayOutputMappings' for more info.

PTB-WARNING:
PTB-WARNING: I am not yet able to handle multi-GPU systems reliably at all. If you have such a system it may work if
PTB-WARNING: you plug your monitor(s) into one of the other GPU's output connectors, trying different combinations.
PTB-WARNING: Or you simply live without high precision stimulus onset timestamping for now. Or you use the free and open-source
PTB-WARNING: graphics drivers (intel, radeon, or nouveau) instead of the proprietary Catalyst or NVidia binary drivers.
PTB-WARNING: I've disabled high precision timestamping for this screen for the remainder of the session.

PTB-INFO: OpenGL-Renderer is NVIDIA Corporation :: GeForce GTX 1650/PCIe/SSE2 :: 4.6.0 NVIDIA 440.100
PTB-INFO: VBL startline = 1080 , VBL Endline = -1
PTB-INFO: Beamposition queries unsupported or defective on this system. Using basic timestamping as fallback: Timestamps returned by Screen('Flip') will be less robust and accurate.
PTB-INFO: Measured monitor refresh interval from VBLsync = 16.665435 ms [60.004435 Hz]. (299 valid samples taken, stddev=0.468491 ms.)
PTB-INFO: Reported monitor refresh interval from operating system = 16.666667 ms [60.000000 Hz].
PTB-INFO: Small deviations between reported values are normal and no reason to worry.

WARNING: Couldn't compute a reliable estimate of monitor refresh interval! Trouble with VBL syncing?!?

----- ! PTB - ERROR: SYNCHRONIZATION FAILURE ! ----

One or more internal checks (see Warnings above) indicate that synchronization
of Psychtoolbox to the vertical retrace (VBL) is not working on your setup.
This will seriously impair proper stimulus presentation and stimulus presentation timing!
Please read 'help SyncTrouble' for information about how to solve or work-around the problem.
You can force Psychtoolbox to continue, despite the severe problems, by adding the command
Screen('Preference', 'SkipSyncTests', 1); at the top of your script, if you really know what you are doing.

Although the mapping from GPU to PTB seems to be off, it does run the VBLSynchtest without skipping a frame.

Output when I run VBLSynchTest:

>> VBLSynchTest
ans = 0

PTB-INFO: OpenGL-Renderer is NVIDIA Corporation :: GeForce GTX 1650/PCIe/SSE2 :: 4.6.0 NVIDIA 440.100
PTB-INFO: VBL startline = 1080 , VBL Endline = -1
PTB-INFO: Beamposition queries unsupported or defective on this system. Using basic timestamping as fallback: Timestamps returned by Screen('Flip') will be less robust and accurate.
PTB-INFO: Measured monitor refresh interval from VBLsync = 16.666422 ms [60.000881 Hz]. (50 valid samples taken, stddev=0.147475 ms.)
PTB-INFO: Reported monitor refresh interval from operating system = 16.666667 ms [60.000000 Hz].
PTB-INFO: Small deviations between reported values are normal and no reason to worry.

The refresh interval reported by the operating system is 16.66667 ms.

Measured refresh interval, as reported by "GetFlipInterval" is 16.66642 ms. (nsamples = 0, stddev = 0.00000 ms)

ans = 1

PTB missed 0 out of 600 stimulus presentation deadlines.
One missed deadline is ok and an artifact of the measurement.
PTB completed 0 stimulus presentations before the requested target time.

Have a look at the plots for more details...

I have read that nvidia cards are not recommended because they are not open source, but unfortunately I cannot change to an AMD card.

I already went over the recommendations in the “BeampositionQueries”, “DisplayOutputMappings” and consulted several online platforms but I didn’t find the right solution yet, so any suggestions are very much appreciated.

Thanks!

Lilian

Hi Lilian,

Your Psychtoolbox is way too old to recognize your graphics card. Updating to the latest 3.0.16 beta for Octave from NeuroDebian should solve that:

http://neuro.debian.net/pkgs/octave-psychtoolbox-3.html#pkg-octave-psychtoolbox-3

I have the same GTX1650 is my most modern NVidia card, so i know that it works with current PTB at least on Ubuntu 20.04-LTS. Ie. timestamping is fine and accurate, timing is usually fine.

Maybe the problem resolves itself after the PTB update. Otherwise, the proper mapping is probably one that only changes the index of the display engine, what is called GPU-CRTC in that output e.g., something like

Screen(‘Preference’, ‘ScreenToHead’, 0, 0, 1);
Screen(‘Preference’, ‘ScreenToHead’, 1, 0, 0);

Usually the 3rd number is what goes wrong as it can’t be auto-detected by PTB on NVidia hardware, and so it uses a heuristic that may or may not be right for any given setup.

Given that the diagnostics of VBLSyncTest relies on precise timestamps and you don’t have these with the broken timestamping, VBLSyncTest may miss problems.

Timing should work out of the box on the standard GNOME or Ubuntu desktop setup if i remember correctly. On KDE with a multi-display setup you may need to disable the compositor, e.g., SHIFT+ALT+F12, or change the setting in the KDE control center.

If it doesn’t work consistently out of the box then either it is some temporary system overload/timing jitter, or some NVidia proprietary graphics driver bug or incompatibility and there isn’t anything we could do about it. Maybe upgrade/downgrade the driver and hope for the best? Maybe upgrade to Ubuntu 20.04-LTS and hope for the best? Seems to work on my 20.04-LTS system with the 445.something driver.

Yes, they are discouraged, exactly because of the kind of problems you see, which are non-issues on gpu’s with open-source driver like AMD for high-performance/functionality needs and Intel for more modest performance/functionality needs.

Discrete graphics cards like yours are easily swappable, and finding a suitable replacement from AMD would likely cost less than 200 Euros. In the end it is a question of how much your time and productivity is worth to you or your employer/lab leader. By using a card with proprietary driver, you are depriving yourself of half the advantage of switching to Linux in the first place. At least you will still get better diagnostics even with NVidia on Linux, so you can’t as easily fool yourself into corrupted data collection as on Windows, or even worse on Apples macOS trainwreck.

best,
-mario

Hi Mario,

Thanks a lot for your suggestions! I have now installed Linux Ubuntu 20.04 and PTB version 3.0.16 from Neurodebian. After installing some additional packages it seemed that everything worked perfectly in the first few test runs. The nvidia chipset is now recognized and it uses the beamposition query for flip time stamping. I also noticed that the VBL endline is now different from previous installations and it seems to match the resolution of X-screen 1.

However, again after a few test runs, the synch problem returned. See output below:

dl_setup_session_fig

PTB-INFO: This is Psychtoolbox-3 for GNU/Linux X11, under GNU/Octave 64-Bit (Version 3.0.16 - Build date: May 13 2020).

PTB-INFO: OS support status: Linux 5.4.0-48-lowlatency Supported.
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: Connected to NVidia TU117 [GeForce GTX 1650] GPU of NV-160 family with 4 display heads.

PTB-INFO: OpenGL-Renderer is NVIDIA Corporation :: GeForce GTX 1650/PCIe/SSE2 :: 4.6.0 NVIDIA 418.152.00
PTB-INFO: VBL startline = 1080 , VBL Endline = 1124
PTB-INFO: Measured monitor refresh interval from beamposition = 16.667162 ms [59.998218 Hz].
PTB-INFO: Will use beamposition query for accurate Flip time stamping.
PTB-INFO: Measured monitor refresh interval from VBLsync = 16.667174 ms [59.998174 Hz]. (299 valid samples taken, stddev=0.486686 ms.)
PTB-INFO: Reported monitor refresh interval from operating system = 16.666667 ms [60.000000 Hz].
PTB-INFO: Small deviations between reported values are normal and no reason to worry.

WARNING: Couldn't compute a reliable estimate of monitor refresh interval! Trouble with VBL syncing?!?

----- ! PTB - ERROR: SYNCHRONIZATION FAILURE ! -----

One or more internal checks (see Warnings above) indicate that synchronization
of Psychtoolbox to the vertical retrace (VBL) is not working on your setup.

This will seriously impair proper stimulus presentation and stimulus presentation timing!
Please read 'help SyncTrouble' for information about how to solve or work-around the problem.
You can force Psychtoolbox to continue, despite the severe problems, by adding the command
Screen('Preference', 'SkipSyncTests', 1); at the top of your script, if you really know what you are doing.

I have tried several combinations of ScreenToHead and have tried using different nvidia driver (418 and 450). Is there anythiing else I could try?

Thanks again,

Lilian

Hi Lilian,

these results look as perfect as they can be, except for the sync test failure and extreme noise in timestamping during sync tests, of course.

So timestamping works, ptb is up to date and handles your gpu as good as possible, os and kernel optimal…

You said your X-Screen 1 - the tested monitor - is a HDMI right? If it were DisplayPort it could have been possible that NVidia G-Sync interferes if it is on. But afaik G-Sync does not work/interfere over HDMI.

Do you use Priority(n) with n >= 1 in your script for extra realtime optimizations? Does it work without warnings? Does it help?

Do our own tests like PerceptualVBLSyncTest work, and VBLSyncTest?

What’s the full output with Screen(‘Preference’,‘Verbosity’,10)? Maybe also when adding a Screen(‘Preference’,‘SkipSyncTests’, 1) so it can run for a few seconds after the window was opened? E.g., during a few seconds of PerceptualVBLSyncTest or VBLSyncTest(100);?

What’s the output of IsWayland() ?

Which desktop GUI do you use? Standard Ubuntu 20.04-LTS “Ubuntu Desktop (X11)” not something with “Wayland” in its name?

Are any compute intense background processes running, e.g., file indexers, software updaters, other significant applications?

What’s the output of “tail -f /var/log/syslog” from a terminal during the time period of running the script?

In principle your system seems to be as optimal as it can get under the caveat of using a not recommended proprietary NVidia driver. So either something else is unusual on your machine, or you got bad luck, which could be most easily helped by not using a NVidia gpu.

-mario

Hi Mario, below my answers/output

correct

I have added Priority(1) to my script. I’ve done two test runs and they worked fine, but after a few runs the VBLSynch error appeared again. Should I try different values as well?

initially yes, but after I have had the VBL synch error after running my own task a few times succesfully but then all of the sudden the error appears again, the VBLSynchTest and others don’t work anymore either.

>> Screen('Preference', 'Verbosity', 10)
ans =  3

>> VBLSyncTest(100)
Tried to prepare a new configuration phase via PsychImaging('PrepareConfiguration'), but did not finalize the previous phase yet.
You must call the PsychImaging('OpenWindow', ...); command at least once to open an onscreen
window according to the provided settings, before you can specify settings for additional onscreen windows.

The most likely reason you see this error message is because your script aborted with some error
before it managed to open the onscreen window. In that case it is best practice to execute a 'clear all'
command at the Matlab/Octave prompt before you restart your script.

I will restart configuration now and forget the previously made PsychImaging('AddTask', ...); settings.
warning: Tried to prepare a new configuration phase, but you did not finalize the previous phase yet!
ans = 0
RandR: 1920x1080 (0x364)  148.5MHz
        h: width  1920 start 2008 end 2052 total 2200 skew    0
        v: height 1080 start 1084 end 1089 total 1125


PTB-INFO: This is Psychtoolbox-3 for GNU/Linux X11, under GNU/Octave 64-Bit (Version 3.0.16 - Build date: May 13 2020).
PTB-INFO: OS support status: Linux 5.4.0-48-lowlatency Supported.
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-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex] with class x00060000 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Starship/Matisse IOMMU] with class x00080600 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge] with class x00060000 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge] with class x00060400 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge] with class x00060000 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge] with class x00060000 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge] with class x00060400 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge] with class x00060000 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge] with class x00060000 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge] with class x00060000 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]] with class x00060400 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge] with class x00060000 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]] with class x00060400 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]] with class x00060400 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]] with class x00060400 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller] with class x000c0500 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge] with class x00060100 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 0] with class x00060000 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 1] with class x00060000 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 2] with class x00060000 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 3] with class x00060000 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 4] with class x00060000 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 5] with class x00060000 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 6] with class x00060000 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 7] with class x00060000 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] 400 Series Chipset USB 3.1 XHCI Controller] with class x000c0330 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] 400 Series Chipset SATA Controller] with class x00010601 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Bridge] with class x00060400 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port] with class x00060400 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port] with class x00060400 ...
PTB-DEBUG: Checking PCI device [Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port] with class x00060400 ...
PTB-DEBUG: Checking PCI device [Intel Corporation I211 Gigabit Network Connection] with class x00020000 ...
PTB-DEBUG: Checking PCI device [NVIDIA Corporation TU117 [GeForce GTX 1650]] with class x00030000 ...
PTB-INFO: NVIDIA Corporation - TU117 [GeForce GTX 1650] GPU found. Trying to establish low-level access...
PTB-DEBUG: Mapping GPU BAR address 0xf6000000 ...
PTB-DEBUG: Mapping 0x1000000 bytes...
PTB-INFO: Connected to NVidia TU117 [GeForce GTX 1650] GPU of NV-160 family with 4 display heads.
PTB-INFO: Using old-style override-redirect setup path for onscreen window creation.
PTB-INFO: GLX Visual info depths is 24 bits
PTB-INFO: Not running on Mesa graphics library.
PTB-INFO: Using GLEW version 2.0.0 for automatic detection of OpenGL extensions...
PTB-INFO: Fixed point precision integer framebuffer enabled.
PTB-INFO: System Frame buffer provides 8 bits for red channel.
PTB-INFO: System Frame buffer provides 8 bits for green channel.
PTB-INFO: System Frame buffer provides 8 bits for blue channel.
PTB-INFO: System frame buffer provides 8 bits for alpha channel, but effective alpha bits depends on imaging pipeline setup, if any.
PTB-DEBUG: PPM file magic is P6
 -> Ok
# CREATOR: GIMP PNM Filter Version 1.1
PTB-DEBUG: Recognized splash image of 432 x 89 pixels, maxlevel 255. Loading...


OpenGL-Vendor / renderer / version are: NVIDIA Corporation - GeForce GTX 1650/PCIe/SSE2 - 4.6.0 NVIDIA 418.152.00


OpenGL-Extensions are: GL_AMD_multi_draw_indirect GL_AMD_seamless_cubemap_per_texture GL_AMD_vertex_shader_viewport_index GL_AMD_vertex_shader_layer GL_ARB_arrays_of_arrays GL_ARB_base_instance GL_ARB_bindless_texture GL_ARB_blend_func_extended GL_ARB_buffer_storage GL_ARB_clear_buffer_object GL_ARB_clear_texture GL_ARB_clip_control GL_ARB_color_buffer_float GL_ARB_compatibility GL_ARB_compressed_texture_pixel_storage GL_ARB_conservative_depth GL_ARB_compute_shader GL_ARB_compute_variable_group_size GL_ARB_conditional_render_inverted GL_ARB_copy_buffer GL_ARB_copy_image GL_ARB_cull_distance GL_ARB_debug_output GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_depth_texture GL_ARB_derivative_control GL_ARB_direct_state_access GL_ARB_draw_buffers GL_ARB_draw_buffers_blend GL_ARB_draw_indirect GL_ARB_draw_elements_base_vertex GL_ARB_draw_instanced GL_ARB_enhanced_layouts GL_ARB_ES2_compatibility GL_ARB_ES3_compatibility GL_ARB_ES3_1_compatibility GL_ARB_ES3_2_compatibility GL_ARB_explicit_attrib_location GL_ARB_explicit_uniform_location GL_ARB_fragment_coord_conventions GL_ARB_fragment_layer_viewport GL_ARB_fragment_program GL_ARB_fragment_program_shadow GL_ARB_fragment_shader GL_ARB_fragment_shader_interlock GL_ARB_framebuffer_no_attachments GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_geometry_shader4 GL_ARB_get_program_binary GL_ARB_get_texture_sub_image GL_ARB_gl_spirv GL_ARB_gpu_shader5 GL_ARB_gpu_shader_fp64 GL_ARB_gpu_shader_int64 GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_imaging GL_ARB_indirect_parameters GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_internalformat_query2 GL_ARB_invalidate_subdata GL_ARB_map_buffer_alignment GL_ARB_map_buffer_range GL_ARB_multi_bind GL_ARB_multi_draw_indirect GL_ARB_multisample GL_ARB_multitextureGL_ARB_occlusion_query GL_ARB_occlusion_query2 GL_ARB_parallel_shader_compile GL_ARB_pipeline_statistics_query GL_ARB_pixel_buffer_object GL_ARB_point_parameters GL_ARB_point_sprite GL_ARB_polygon_offset_clamp GL_ARB_post_depth_coverage GL_ARB_program_interface_query GL_ARB_provoking_vertex GL_ARB_query_buffer_object GL_ARB_robust_buffer_access_behavior GL_ARB_robustness GL_ARB_sample_locations GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_seamless_cubemap_per_texture GL_ARB_separate_shader_objects GL_ARB_shader_atomic_counter_ops GL_ARB_shader_atomic_counters GL_ARB_shader_ballot GL_ARB_shader_bit_encoding GL_ARB_shader_clock GL_ARB_shader_draw_parameters GL_ARB_shader_group_vote GL_ARB_shader_image_load_store GL_ARB_shader_image_size GL_ARB_shader_objects GL_ARB_shader_precision GL_ARB_shader_storage_buffer_object GL_ARB_shader_subroutine GL_ARB_shader_texture_image_samples GL_ARB_shader_texture_lod GL_ARB_shading_language_100 GL_ARB_shader_viewport_layer_array GL_ARB_shading_language_420pack GL_ARB_shading_language_include GL_ARB_shading_language_packing GL_ARB_shadow GL_ARB_sparse_buffer GL_ARB_sparse_texture GL_ARB_sparse_texture2 GL_ARB_sparse_texture_clamp GL_ARB_spirv_extensions GL_ARB_stencil_texturing GL_ARB_sync GL_ARB_tessellation_shader GL_ARB_texture_barrier GL_ARB_texture_border_clamp GL_ARB_texture_buffer_object GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_buffer_range GL_ARB_texture_compression GL_ARB_texture_compression_bptc GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map GL_ARB_texture_cube_map_array GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_filter_anisotropic GL_ARB_texture_filter_minmax GL_ARB_texture_float GL_ARB_texture_gather GL_ARB_texture_mirror_clamp_to_edge GL_ARB_texture_mirrored_repeat GL_ARB_texture_multisample GL_ARB_texture_non_power_of_two GL_ARB_texture_query_levels GL_ARB_texture_query_lod GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_texture_rgb10_a2ui GL_ARB_texture_stencil8 GL_ARB_texture_storage GL_ARB_texture_storage_multisample GL_ARB_texture_swizzle GL_ARB_texture_view GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_transform_feedback_instanced GL_ARB_transform_feedback_overflow_query GL_ARB_transpose_matrix GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra GL_ARB_vertex_array_object GL_ARB_vertex_attrib_64bit GL_ARB_vertex_attrib_binding GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_vertex_type_10f_11f_11f_rev GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_ARB_window_pos GL_ATI_draw_buffers GL_ATI_texture_float GL_ATI_texture_mirror_once GL_S3_s3tc GL_EXT_texture_env_add 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_Cg_shader GL_EXT_depth_bounds_test 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_EXTX_framebuffer_mixed_formats GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_framebuffer_object GL_EXT_framebuffer_sRGB GL_EXT_geometry_shader4 GL_EXT_gpu_program_parameters GL_EXT_gpu_shader4 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_polygon_offset_clamp GL_EXT_post_depth_coverage GL_EXT_provoking_vertex GL_EXT_raster_multisample GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_shader_objects GL_EXT_separate_specular_color GL_EXT_shader_image_load_formatted GL_EXT_shader_image_load_store GL_EXT_shader_integer_mix GL_EXT_shadow_funcs GL_EXT_sparse_texture2 GL_EXT_stencil_two_side GL_EXT_stencil_wrap GL_EXT_texture3D GL_EXT_texture_array GL_EXT_texture_buffer_object GL_EXT_texture_compression_dxt1 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_combine GL_EXT_texture_env_dot3 GL_EXT_texture_filter_anisotropic GL_EXT_texture_filter_minmax 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_shared_exponent GL_EXT_texture_sRGB GL_EXT_texture_sRGB_R8 GL_EXT_texture_sRGB_decode GL_EXT_texture_storage GL_EXT_texture_swizzle GL_EXT_timer_query GL_EXT_transform_feedback2 GL_EXT_vertex_array GL_EXT_vertex_array_bgra GL_EXT_vertex_attrib_64bit GL_EXT_window_rectangles GL_EXT_x11_sync_object GL_EXT_import_sync_object GL_NV_robustness_video_memory_purge GL_IBM_rasterpos_clip GL_IBM_texture_mirrored_repeat GL_KHR_context_flush_control GL_KHR_debug GL_EXT_memory_object GL_EXT_memory_object_fd GL_KHR_parallel_shader_compile GL_KHR_no_error GL_KHR_robust_buffer_access_behavior GL_KHR_robustness GL_EXT_semaphore GL_EXT_semaphore_fd GL_KTX_buffer_region GL_NV_alpha_to_coverage_dither_control GL_NV_bindless_multi_draw_indirect GL_NV_bindless_multi_draw_indirect_count GL_NV_bindless_texture GL_NV_blend_equation_advanced GL_NV_blend_equation_advanced_coherent GL_NVX_blend_equation_advanced_multi_draw_buffers GL_NV_blend_minmax_factor GL_NV_blend_square GL_NV_clip_space_w_scaling GL_NV_command_list GL_NV_compute_program5 GL_NV_compute_shader_derivatives GL_NV_conditional_render GL_NV_conservative_raster GL_NV_conservative_raster_dilate GL_NV_conservative_raster_pre_snap GL_NV_conservative_raster_pre_snap_triangles GL_NV_conservative_raster_underestimation GL_NV_copy_depth_to_color GL_NV_copy_image GL_NV_depth_buffer_float GL_NV_depth_clamp GL_NV_draw_texture GL_NV_draw_vulkan_image GL_NV_ES1_1_compatibility GL_NV_ES3_1_compatibility GL_NV_explicit_multisample GL_NV_feature_query GL_NV_fence GL_NV_fill_rectangle GL_NV_float_buffer GL_NV_fog_distance GL_NV_fragment_coverage_to_color GL_NV_fragment_program GL_NV_fragment_program_option GL_NV_fragment_program2 GL_NV_fragment_shader_barycentric GL_NV_fragment_shader_interlock GL_NV_framebuffer_mixed_samples GL_NV_framebuffer_multisample_coverage GL_NV_geometry_shader4 GL_NV_geometry_shader_passthrough GL_NV_gpu_program4 GL_NV_internalformat_sample_query GL_NV_gpu_program4_1 GL_NV_gpu_program5 GL_NV_gpu_program5_mem_extendedGL_NV_gpu_program_fp64 GL_NV_gpu_shader5 GL_NV_half_float GL_NV_light_max_exponent GL_NV_memory_attachment GL_NV_mesh_shader GL_NV_multisample_coverage GL_NV_multisample_filter_hint GL_NV_occlusion_query GL_NV_packed_depth_stencil GL_NV_parameter_buffer_object GL_NV_parameter_buffer_object2 GL_NV_path_rendering GL_NV_path_rendering_shared_edge GL_NV_pixel_data_range GL_NV_point_sprite GL_NV_primitive_restart GL_NV_query_resource GL_NV_query_resource_tag GL_NV_register_combiners GL_NV_register_combiners2 GL_NV_representative_fragment_test GL_NV_sample_locations GL_NV_sample_mask_override_coverage GL_NV_scissor_exclusive GL_NV_shader_atomic_counters GL_NV_shader_atomic_float GL_NV_shader_atomic_float64 GL_NV_shader_atomic_fp16_vector GL_NV_shader_atomic_int64 GL_NV_shader_buffer_load GL_NV_shader_storage_buffer_object GL_NV_shader_texture_footprint GL_NV_shading_rate_image GL_NV_stereo_view_rendering GL_NV_texgen_reflection GL_NV_texture_barrier GL_NV_texture_compression_vtc GL_NV_texture_env_combine4 GL_NV_texture_multisample GL_NV_texture_rectangle GL_NV_texture_rectangle_compressed GL_NV_texture_shader GL_NV_texture_shader2 GL_NV_texture_shader3 GL_NV_transform_feedback GL_NV_transform_feedback2 GL_NV_uniform_buffer_unified_memory GL_NV_vdpau_interop GL_NV_vdpau_interop2 GL_NV_vertex_array_range GL_NV_vertex_array_range2 GL_NV_vertex_attrib_integer_64bit GL_NV_vertex_buffer_unified_memory GL_NV_vertex_program GL_NV_vertex_program1_1 GL_NV_vertex_program2 GL_NV_vertex_program2_option GL_NV_vertex_program3 GL_NV_viewport_array2 GL_NV_viewport_swizzle GL_NVX_conditional_render GL_NVX_gpu_memory_info GL_NVX_nvenc_interop GL_NV_shader_thread_group GL_NV_shader_thread_shuffle GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_OVR_multiview GL_OVR_multiview2 GL_SGIS_generate_mipmap GL_SGIS_texture_lod GL_SGIX_depth_texture GL_SGIX_shadow GL_SUN_slice_accum

PTB-DEBUG: Not running on Mesa graphics library.
PTB-DEBUG: NVidia GPU with G-Sync support detected. VRR requested by usercode? No
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 NVIDIA Corporation, Renderer GeForce GTX 1650/PCIe/SSE2.
Indicator variables: maxcolorattachments = 8, maxrectangletexturesize = 32768, maxnativealuinstructions = 65536.
GPU supports non-power-of-two textures.
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.
Framebuffer objects support single-pass multisample resolve blits and image rescaling.
Hardware supports floating point textures of 16bpc and 32bpc float format.
Assuming NV30 core or later...
Assuming NV40 core or later (maxcolattachments=8): Hardware supports floating point blending and filtering on 16bpc float format.
Hardware also supports floating point framebuffers of 16bpc and 32bpc float format.
Hardware supports full 32 bit floating point precision shading.
Assuming G80 core or later (maxtexsize=32768): Hardware supports full floating point blending and filtering on 16bpc and 32bpc float format.
Assuming hardware supports native OpenGL primitive smoothing (points, lines).
Float color value 0.5 -> fixed point reads back as 127 ==> Truncates.
PTB-Info: Running on 'The X.Org Foundation' XServer, Vendor release 12008000.
OML_sync_control indicators: glXGetSyncValuesOML=(nil) , glXWaitForMscOML=(nil), glXWaitForSbcOML=(nil), glXSwapBuffersMscOML=(nil)
OML_sync_control indicators: glxewIsSupported() says 0.
OML_sync_control indicators: glXQueryExtensionsString() says 0.
No support for OpenML OML_sync_control extension.
System supports backbuffer age queries.
PTB-DEBUG: Interrogation done.

RandR: 1920x1080 (0x364)  148.5MHz
        h: width  1920 start 2008 end 2052 total 2200 skew    0
        v: height 1080 start 1084 end 1089 total 1125
RandR: 1920x1080 (0x364)  148.5MHz
        h: width  1920 start 2008 end 2052 total 2200 skew    0
        v: height 1080 start 1084 end 1089 total 1125
PTB-DEBUG: glClear splash image top-left reference pixel: 255 255 255
PTB-INFO: Threshold Settings for successfull video refresh calibration are: maxStdDev = 0.200000 msecs, maxDeviation = 10.000000 %, minSamples = 50, maxDuration = 5.000000 secs.
PTB-DEBUG: Screen 1 [head 1]: vbl_start = 1120  vbl_end = 40.
PTB-INFO: Screen 1 [head 1]: Applying beamposition corrective offsets: vblbias = 41, vbltotal = 1125.


PTB-DEBUG: Output of all acquired samples of calibration run follows:
PTB-DEBUG: Sample 0: 0.000000
PTB-DEBUG: Sample 1: 0.016657
PTB-DEBUG: Sample 2: 0.016294
PTB-DEBUG: Sample 3: 0.016659
PTB-DEBUG: Sample 4: 0.017054
PTB-DEBUG: Sample 5: 0.016663
PTB-DEBUG: Sample 6: 0.016286
PTB-DEBUG: Sample 7: 0.016672
PTB-DEBUG: Sample 8: 0.017044
PTB-DEBUG: Sample 9: 0.016666
PTB-DEBUG: Sample 10: 0.017664
PTB-DEBUG: Sample 11: 0.015671
PTB-DEBUG: Sample 12: 0.016670
PTB-DEBUG: Sample 13: 0.016661
PTB-DEBUG: Sample 14: 0.016289
PTB-DEBUG: Sample 15: 0.016670
PTB-DEBUG: Sample 16: 0.017048
PTB-DEBUG: Sample 17: 0.016281
PTB-DEBUG: Sample 18: 0.016675
PTB-DEBUG: Sample 19: 0.016665
PTB-DEBUG: Sample 20: 0.017047
PTB-DEBUG: Sample 21: 0.016667
PTB-DEBUG: Sample 22: 0.016289
PTB-DEBUG: Sample 23: 0.016663
PTB-DEBUG: Sample 24: 0.017054
PTB-DEBUG: Sample 25: 0.016661
PTB-DEBUG: Sample 26: 0.016290
PTB-DEBUG: Sample 27: 0.016666
PTB-DEBUG: Sample 28: 0.017050
PTB-DEBUG: Sample 29: 0.016663
PTB-DEBUG: Sample 30: 0.016297
PTB-DEBUG: Sample 31: 0.016661
PTB-DEBUG: Sample 32: 0.017048
PTB-DEBUG: Sample 33: 0.016281
PTB-DEBUG: Sample 34: 0.016672
PTB-DEBUG: Sample 35: 0.016664
PTB-DEBUG: Sample 36: 0.017051
PTB-DEBUG: Sample 37: 0.016661
PTB-DEBUG: Sample 38: 0.016292
PTB-DEBUG: Sample 39: 0.017051
PTB-DEBUG: Sample 40: 0.016663
PTB-DEBUG: Sample 41: 0.016664
PTB-DEBUG: Sample 42: 0.016288
PTB-DEBUG: Sample 43: 0.016671
PTB-DEBUG: Sample 44: 0.017046
PTB-DEBUG: Sample 45: 0.016666
PTB-DEBUG: Sample 46: 0.016284
PTB-DEBUG: Sample 47: 0.016673
PTB-DEBUG: Sample 48: 0.017045
PTB-DEBUG: Sample 49: 0.016670
PTB-DEBUG: Sample 50: 0.016294
PTB-DEBUG: Sample 51: 0.016656
PTB-DEBUG: Sample 52: 0.017047
PTB-DEBUG: Sample 53: 0.016294
PTB-DEBUG: Sample 54: 0.016663
PTB-DEBUG: Sample 55: 0.016669
PTB-DEBUG: Sample 56: 0.017054
PTB-DEBUG: Sample 57: 0.016652
PTB-DEBUG: Sample 58: 0.016302
PTB-DEBUG: Sample 59: 0.016662
PTB-DEBUG: End of calibration data for this run...



PTB-INFO: OpenGL-Renderer is NVIDIA Corporation :: GeForce GTX 1650/PCIe/SSE2 :: 4.6.0 NVIDIA 418.152.00
PTB-INFO: VBL startline = 1080 , VBL Endline = 1124
PTB-INFO: Measured monitor refresh interval from beamposition = 16.667201 ms [59.998078 Hz].
PTB-INFO: Will use beamposition query for accurate Flip time stamping.
PTB-INFO: Measured monitor refresh interval from VBLsync = 16.660678 ms [60.021566 Hz]. (59 valid samples taken, stddev=0.318204 ms.)
PTB-INFO: Reported monitor refresh interval from operating system = 16.666667 ms [60.000000 Hz].
PTB-INFO: Small deviations between reported values are normal and no reason to worry.

WARNING: Couldn't compute a reliable estimate of monitor refresh interval! Trouble with VBL syncing?!?


----- ! PTB - ERROR: SYNCHRONIZATION FAILURE ! -----

One or more internal checks (see Warnings above) indicate that synchronization
of Psychtoolbox to the vertical retrace (VBL) is not working on your setup.

This will seriously impair proper stimulus presentation and stimulus presentation timing!
Please read 'help SyncTrouble' for information about how to solve or work-around the problem.
You can force Psychtoolbox to continue, despite the severe problems, by adding the command
Screen('Preference', 'SkipSyncTests', 1); at the top of your script, if you really know what you are doing.


PTB-INFO: Support for fast OffscreenWindows enabled.
PTB-DEBUG: GLX_BACK_BUFFER_AGE_EXT == 2 after swap completion.
PTB-DEBUG: Swaprequest too close to last swap vbl (0.000474 secs) or between forbidden scanline 1 and 50. Delaying...
PTB-DEBUG: GLX_BACK_BUFFER_AGE_EXT == 2 after swap completion.
PTB-DEBUG: Swaprequest too close to last swap vbl (0.000472 secs) or between forbidden scanline 1 and 50. Delaying...
PTB-DEBUG: GLX_BACK_BUFFER_AGE_EXT == 2 after swap completion.
PTB-DEBUG: Swaprequest too close to last swap vbl (0.000731 secs) or between forbidden scanline 1 and 50. Delaying...
PTB-DEBUG: GLX_BACK_BUFFER_AGE_EXT == 2 after swap completion.
PTB-DEBUG: Swaprequest too close to last swap vbl (0.000509 secs) or between forbidden scanline 1 and 50. Delaying...
PTB-DEBUG: GLX_BACK_BUFFER_AGE_EXT == 2 after swap completion.
PTB-DEBUG: GLX_BACK_BUFFER_AGE_EXT == 2 after swap completion.
PTB-DEBUG: Swaprequest too close to last swap vbl (0.000343 secs) or between forbidden scanline 1 and 50. Delaying...
PTB-DEBUG: GLX_BACK_BUFFER_AGE_EXT == 2 after swap completion.
PTB-INFO: Gamemode optimizations enable requested. Current/Old status: Disabled
PTB-INFO: New status: Active
RandR: 1920x1080 (0x364)  148.5MHz
        h: width  1920 start 2008 end 2052 total 2200 skew    0
        v: height 1080 start 1084 end 1089 total 1125
The refresh interval reported by the operating system is 16.66667 ms.
PTB-DEBUG: Allocated unicode string: 77.000000 101.000000 97.000000 115.000000 117.000000 114.000000 105.000000 110.000000 103.000000 32.000000 109.000000 111.000000 110.000000 105.000000 116.000000 111.000000 114.000000 32.000000 114.000000 101.000000 102.000000 114.000000 101.000000 115.000000 104.000000 32.000000 105.000000 110.000000 116.000000 101.000000 114.000000 118.000000 97.000000 108.000000 46.000000 46.000000 46.000000 32.000000 84.000000 104.000000 105.000000 115.000000 32.000000 99.000000 97.000000 110.000000 32.000000 116.000000 97.000000 107.000000 101.000000 32.000000 117.000000 112.000000 32.000000 116.000000 111.000000 32.000000 50.000000 48.000000 32.000000 115.000000 101.000000 99.000000 111.000000 110.000000 100.000000 115.000000 46.000000 46.000000 46.000000
PTB-DEBUG: DrawText: Trying to load external text renderer plugin from following file: [ /usr/share/octave/site/m/psychtoolbox-3/PsychBasic/PsychPlugins/libptbdrawtext_ftgl.so.1 ]
libptbdrawtext_ftgl: External 'DrawText' text rendering plugin initialized.
libptbdrawtext_ftgl: Maximum number of cacheable fonts is 40, minimum number of supported concurrent windows is 10.
libptbdrawtext_ftgl: This plugin uses multiple excellent free software libraries to do its work:
libptbdrawtext_ftgl: OGLFT (http://oglft.sourceforge.net/) the OpenGL-FreeType library.
libptbdrawtext_ftgl: The FreeType-2 (http://freetype.sourceforge.net/) library.
libptbdrawtext_ftgl: The FontConfig (http://www.fontconfig.org) library.
libptbdrawtext_ftgl: Thanks!

libptbdrawtext_ftgl: Trying to find font that closely matches following specification:
Pattern has 27 elts (size 32)
        family: "Arial"(s) "Arimo"(s) "Liberation Sans"(s) "Albany"(s) "Albany AMT"(s) "Helvetica"(w) "Nimbus Sans"(w) "Nimbus Sans L"(w) "TeX Gyre Heros"(w) "Nimbus Sans"(w) "DejaVu Sans"(w) "DejaVu LGC Sans"(w) "DejaVu LGC Sans"(w) "DejaVu Sans"(w) "Bitstream Vera Sans"(w) "Verdana"(w) "Arial"(w) "Albany AMT"(w) "Luxi Sans"(w) "Nimbus Sans L"(w) "Nimbus Sans"(w) "Nimbus Sans"(w) "Helvetica"(w) "Lucida Sans Unicode"(w) "BPG Glaho International"(w) "Tahoma"(w) "URW Gothic"(w) "Nimbus Sans"(w) "Nimbus Sans Narrow"(w) "Loma"(w) "Waree"(w) "Garuda"(w) "Umpush"(w) "Laksaman"(w) "Noto Sans CJK JP"(w) "Noto Sans CJK KR"(w) "Noto Sans CJK SC"(w) "Noto Sans CJK TC"(w) "Noto Sans CJK HK"(w) "Lohit Devanagari"(w) "Droid Sans Fallback"(w) "Khmer OS"(w) "Nachlieli"(w) "Lucida Sans Unicode"(w) "Yudit Unicode"(w) "Kerkis"(w) "ArmNet Helvetica"(w) "Artsounk"(w) "BPG UTF8 M"(w) "Waree"(w) "Loma"(w) "Garuda"(w) "Umpush"(w) "Saysettha Unicode"(w) "JG Lao Old Arial"(w) "GF Zemen Unicode"(w) "Pigiarniq"(w) "B Davat"(w) "B Compset"(w) "Kacst-Qr"(w) "Urdu Nastaliq Unicode"(w) "Raghindi"(w) "Mukti Narrow"(w) "padmaa"(w) "Hapax Berbère"(w) "MS Gothic"(w) "UmePlus P Gothic"(w) "Microsoft YaHei"(w) "Microsoft JhengHei"(w) "WenQuanYi Zen Hei"(w) "WenQuanYi Bitmap Song"(w) "AR PL ShanHeiSun Uni"(w) "AR PL New Sung"(w) "MgOpen Moderna"(w) "MgOpen Modata"(w) "MgOpen Cosmetica"(w) "VL Gothic"(w) "IPAMonaGothic"(w) "IPAGothic"(w) "Sazanami Gothic"(w) "Kochi Gothic"(w) "AR PL KaitiM GB"(w) "AR PL KaitiM Big5"(w) "AR PL ShanHeiSun Uni"(w) "AR PL SungtiL GB"(w) "AR PL Mingti2L Big5"(w) "M
>> IsWayland()
ans = 0

As far as I know i installed the normal Ubuntu desktop using “sudo apt-get install ubuntu desktop”

no

pennartz04:~$ tail -f /var/log/syslog
Sep 28 14:21:54 pennartz04 gnome-shell[1961]: gdk_window_get_screen: assertion 'GDK_IS_WINDOW (window)' failed
Sep 28 14:21:54 pennartz04 gnome-shell[1961]: gdk_screen_get_root_window: assertion 'GDK_IS_SCREEN (screen)' failed
Sep 28 14:21:54 pennartz04 gnome-shell[1961]: gdk_device_get_state: assertion 'GDK_IS_WINDOW (window)' failed
Sep 28 14:21:54 pennartz04 gnome-shell[1961]: gdk_window_get_screen: assertion 'GDK_IS_WINDOW (window)' failed
Sep 28 14:21:54 pennartz04 gnome-shell[1961]: gdk_screen_get_root_window: assertion 'GDK_IS_SCREEN (screen)' failed
Sep 28 14:21:54 pennartz04 gnome-shell[1961]: gdk_device_get_state: assertion 'GDK_IS_WINDOW (window)' failed
Sep 28 14:22:05 pennartz04 gamemoded[3464]: ERROR: glob failed for RAPL paths: (No such file or directory)
Sep 28 14:22:05 pennartz04 gamemoded[3464]: ERROR: Skipping ioprio on client [21703,21703]: ioprio was (0) but we expected (4)
Sep 28 14:22:20 pennartz04 tracker-store[21695]: OK
Sep 28 14:22:20 pennartz04 systemd[1735]: tracker-store.service: Succeeded.

Sorry for the long message and thanks for helping again! If we can’t find a solution we will probably change to AMD cards.

Best,

Lilian

All output looks fine, no apparent issues, everything well configured.

You could put Priority(1) before the ‘OpenWindow’ call, maybe gives it another nudge. Other than that, i’m out of ideas.

On your specific system setup, using the ‘SkipSyncTests’ preference setting 1 might be ok’ish to let the sync tests pass, as on Linux we have some additional safeguards to detect timing problems on NVidia at runtime and spill tons of warnings into your Octave/Matlab console if so.

But the clean and best solution would be to switch to AMD.
-mario

Hi Mario,

I would prefer to run my task with the best timing possible and without warnings, so I think I would like to buy an AMD graphics card. Which AMD card would you recommend that is compatible with Linux Ubuntu 20.04 and PTB version 3.0.16 from the neurodebian package? I’ve read that the AMD RADEON RX 500 series have been tested extensively with Linux and PTB, but I’m not sure if they are compatible with the latest version of PTB.

Best,

Lilian

Good decision.

The “Polaris” gpu family is well tested, and RX500 cards are the consumer variants of that family, so should work fine. The “Radeon Pro” variants are tested by myself (WX4100 infrequently, Radeon Pro 560 in a MacBookPro 2017 frequently), and used successfully quite a lot by various labs and Ian Andolina @iandol, as described in multiple posts here. I also test frequently with a built-in onboard Raven Ridge gpu as part of a PC with AMD Ryzen 5 2400G processor.

My friend Natalia uses a WX 3100 with great success, after experiencing the same problems as yours with a NVidia:

In principle all AMD and Intel gpu’s under Linux are supposed to be compatible with all Psychtoolbox versions, as long as there are no driver bugs in your Linux distribution itself, and historically there haven’t been nearly as many bugs with the Linux open-source drivers than as on Windows or on Apples trainwreck. Also the Linux OSS drivers are most frequently tested by myself and i’m contributing to driver development and debugging myself, to make sure the quality standard on Linux stays as high as possible.

In practice, ofc. i can only frequently test a small subset of gpu’s which i have available in my machines, and atm. these are Intel chips from the Skylake/Kabylake series, and AMD gpu’s from the Polaris and Raven Ridge series. In the past, gpu’s from the Sea Islands series and HD-4000/5000 series all the way back to the year 2006 were successfully tested and should still work fine, but that seems less relevant to buying decisions in 2020.

What is different wrt. PTB is how well special features like high color precision framebuffers or (sub-)millisecond fine-grained visual timing is supported, if squeezing out more precision relies on special PTB low-level hardware tricks, or on hardware improvements in the graphics cards themselves. Here the Polaris gpu’s are most well tested atm. Their successors from the Vega gpu family should be even better for fine-grained timing by use of FreeSync when using PTBs ‘UseFineGrainedTiming’ support on such setups, due to hardware improvements, and should still work with PTB’s special bag of tricks, but i never had the chance to access a Vega for testing.

The latest generation of AMD gpu’s, the integrated chips in AMD Ryzen processors and later, and the discrete “Navi” gpu family is not supported by PTB’s bag of low-level tricks and tweaks at the moment, but that is mostly because those tricks are generally not needed anymore, as the standard open-source drivers already do the same job, so i try to spare myself the maintenance overhead for that functionality. The hardware of the latest generations does contain other improvements over Polaris and Vega though, which can be useful for some scenarios.

-mario