|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: Psychtoolbox updated |
| 4 | +categories: news |
| 5 | +author: kleinerm |
| 6 | +--- |
| 7 | + |
| 8 | +Psychtoolbox 3.0.19 update "Last free lunch" was released at 3rd November 2024. |
| 9 | +The complete development history can be found in our GitHub repository. |
| 10 | +The release tag is “3.0.19.15”, with the full tree and commit logs under the URL: |
| 11 | + |
| 12 | +<https://github.com/Psychtoolbox-3/Psychtoolbox-3/tree/3.0.19.15> |
| 13 | + |
| 14 | + |
| 15 | +### Compatibility changes wrt. Psychtoolbox 3.0.19.14: |
| 16 | + |
| 17 | +- None. |
| 18 | + |
| 19 | +### Highlights: |
| 20 | + |
| 21 | +- None. Only bug fixes for various 3rd party components, and small improvements. |
| 22 | + |
| 23 | +### All: |
| 24 | + |
| 25 | +- Change enumeration order of video capture devices. This should avoid |
| 26 | + selection of suboptimal capture devices by preferring more optimal ones, |
| 27 | + especially on modern Ubuntu 22.04-LTS and later Linux distributions, which |
| 28 | + often choose the new but immature pipewiresrc as video source plugin for a |
| 29 | + camera instead of the old and proven/mature more optimal v4l2src as video |
| 30 | + source. Specifically we hope to avoid VideoRecordingDemo.m problems like |
| 31 | + the ones encountered in the following thread: |
| 32 | + |
| 33 | + https://psychtoolbox.discourse.group/t/codecs-in-videorecordingdemo-not-working-on-linux/5441 |
| 34 | + |
| 35 | +- PsychImaging: Fix HDR mode with types of PsychColorCorrection() that involve |
| 36 | + lookup tables and only use one color correction operation in total. E.g, |
| 37 | + standard LUT based correction, 3D LUT based correction or application of |
| 38 | + per-pixel gain matrices. See: |
| 39 | + |
| 40 | + https://psychtoolbox.discourse.group/t/best-approach-for-gamma-correction-in-hdr10/5515 |
| 41 | + |
| 42 | +- CI release scripts: Disable building of .mltbx files for releases for now. |
| 43 | + |
| 44 | + The current approach contributed by Mathworks team is broken. It includes the |
| 45 | + whole Psychtoolbox-3 tree for some utterly unclear reason, although the project |
| 46 | + file only specified the Psychtoolbox/ subfolder. Worse, it adds toolbox folders |
| 47 | + to the Matlab path in randomized (!?!) order, so our carefully selected ordering |
| 48 | + of MatlabWindowsFilesR2007a/ folder wrt. PsychBasic folder gets screwed up and mex |
| 49 | + files can't be found on MS-Windows anymore. Even worse, if SetupPsychtoolbox() fixes |
| 50 | + it, then the Matlab Add-On Manager undos the fix every single time Matlab restarts! |
| 51 | + This leads to issues like the following linked one: |
| 52 | + |
| 53 | + https://psychtoolbox.discourse.group/t/problem-with-screen-function-ptb-just-installed/5451/9 |
| 54 | + |
| 55 | + Apart from that, the Add On manager doesn't allow toolbox updates, and doesn't |
| 56 | + set things like the Matlab Java path, doesn't deal with GStreamer etc. It has |
| 57 | + zero benefit for our users, but is a source of hazarads and extra support overhead. |
| 58 | + Drop it. |
| 59 | + |
| 60 | +- Add Psychtoolbox/PsychBasic/PsychPlugins/ to the search path for dynamic shared |
| 61 | + libraries for all operating systems, so PTB specific plugin libraries can be found |
| 62 | + during mex file load time. |
| 63 | + |
| 64 | +### Linux: |
| 65 | + |
| 66 | +- Psychtoolbox was built and tested against Matlab R2024a and Octave 5.2 and later. |
| 67 | + |
| 68 | +- PsychImaging: Update 'EnableNative16BitFramebuffer' help text for year 2024. |
| 69 | + |
| 70 | +- Screen: Fix Vulkan display backend support with Mesa versions 23.3 and later |
| 71 | + and thereby for Ubuntu 24.04-LTS and later. The same problem that affected the |
| 72 | + Broadcom VideoCore 6 of the RaspberryPi 4 and later under Mesa 23.3 now affects |
| 73 | + at least Intel and AMD under Mesa 24.0 with Ubuntu 24.04.0-LTS. |
| 74 | + |
| 75 | + It appears a slightly broken GL_EXT_direct_state_access implementation |
| 76 | + in Mesa was introduced in Mesa 23.3 and later. Work around this in an effective |
| 77 | + and safe way. |
| 78 | + |
| 79 | +- PsychVulkan: Add workaround against an AMDVLK bug that causes crash if the used |
| 80 | + Vulkan display monitor has more than 64 video modes. A proper fix, especially |
| 81 | + for multi-display setups, can only be done in a future AMDVLK driver from AMD's |
| 82 | + Vulkan team, but for single display stimulation this workaround should prevent |
| 83 | + crashes and problems, and on some multi-display setups things may still work |
| 84 | + with a sprinkle of dumb luck - no guarantees for multi-display though! |
| 85 | + Note that the AMDVLK driver is only used on AMD gpu's if a color depth of more |
| 86 | + than standard 8 bpc (aka "deep color") or HDR-10 display mode is requested. For |
| 87 | + other Vulkan use cases, the high quality Mesa radv Vulkan driver is used, which |
| 88 | + does not suffer such a problem. For context see: |
| 89 | + |
| 90 | + https://psychtoolbox.discourse.group/t/vulkan-breaks-with-stack-smashing-detected-terminated/5501 |
| 91 | + |
| 92 | +- XOrgConfCreator: Adapt to Ubuntu 24.04-LTS changes in /dev/dri/card enumeration. |
| 93 | + This broke hybrid graphics laptop detection, at least on three single gpu |
| 94 | + laptops with AMD gpu's. It reported a dual-gpu config when there was not any. |
| 95 | + Since Ubuntu 24.04-LTS, or more likely with a recent Linux 6.8 kernel shipping |
| 96 | + in both Ubuntu 24.04-LTS and in Ubuntu 22.04.5-LTS with HWE stack, the first |
| 97 | + (and only) gpu on a single gpu machine now has a /dev/dri/card1 device file, |
| 98 | + instead of a /dev/dri/card0 device file, ie. device file indexing now starts |
| 99 | + at 1 instead of 0. On multi-gpu machines, the second gpu is now associated |
| 100 | + with /dev/dri/card2 and so on. This broke some hard-coded assumptions about |
| 101 | + 0-based device numbering. We now use a more robust detection logic for hybrid |
| 102 | + gpu detection. The fix was successfully tested on single-gpu AMD and Intel |
| 103 | + graphics machines, and on a dual-gpu Intel + AMD laptop for each gpu and in |
| 104 | + prime render offload mode. |
| 105 | + |
| 106 | +- Add braces for NetWM reporting to make compiler happier. It caused a weird |
| 107 | + problem in the Screen mex build for Matlab, in which the "PTB-INFO: ..." lines |
| 108 | + about the used flip timestamping mechanism are not printed! No clue why, looks |
| 109 | + like some compiler bug, but adding the - technically not needed - braces fixes |
| 110 | + it. |
| 111 | + |
| 112 | +### Windows: |
| 113 | + |
| 114 | +- Psychtoolbox was built and lightly tested against Matlab R2024a and Octave 7.3. |
| 115 | + |
| 116 | +- VideoRecordingDemo.m: Remove special case MS-Windows path. It does not seem to |
| 117 | + be as necessary anymore with the future default MediaFoundation path for capture |
| 118 | + and recording. Also added some cleanups and ability to specify video capture |
| 119 | + device as argument. |
| 120 | + |
| 121 | +### macOS: |
| 122 | + |
| 123 | +- Psychtoolbox was built and tested against Matlab R2024a and against Octave 9.2 |
| 124 | + from HomeBrew. |
| 125 | + |
| 126 | +Enjoy! |
0 commit comments