Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge pull request #850 from Psychtoolbox-3/master #279

Merged
merged 1 commit into from
Nov 3, 2024

Conversation

kleinerm
Copy link
Owner

@kleinerm kleinerm commented Nov 3, 2024

Psychtoolbox 3.0.19 update "Last free lunch"

Compatibility changes wrt. Psychtoolbox 3.0.19.14:

  • None.

Highlights:

  • None. Only bug fixes for various 3rd party components, and small improvements.

All:

  • Change enumeration order of video capture devices. This should avoid selection of suboptimal capture devices by preferring more optimal ones, especially on modern Ubuntu 22.04-LTS and later Linux distributions, which often choose the new but immature pipewiresrc as video source plugin for a camera instead of the old and proven/mature more optimal v4l2src as video source. Specifically we hope to avoid VideoRecordingDemo.m problems like the ones encountered in the following thread:

    https://psychtoolbox.discourse.group/t/codecs-in-videorecordingdemo-not-working-on-linux/5441

  • PsychImaging: Fix HDR mode with types of PsychColorCorrection() that involve lookup tables and only use one color correction operation in total. E.g, standard LUT based correction, 3D LUT based correction or application of per-pixel gain matrices. See:

    https://psychtoolbox.discourse.group/t/best-approach-for-gamma-correction-in-hdr10/5515

  • CI release scripts: Disable building of .mltbx files for releases for now.

    The current approach contributed by Mathworks team is broken. It includes the whole Psychtoolbox-3 tree for some utterly unclear reason, although the project file only specified the Psychtoolbox/ subfolder. Worse, it adds toolbox folders to the Matlab path in randomized (!?!) order, so our carefully selected ordering of MatlabWindowsFilesR2007a/ folder wrt. PsychBasic folder gets screwed up and mex files can't be found on MS-Windows anymore. Even worse, if SetupPsychtoolbox() fixes it, then the Matlab Add-On Manager undos the fix every single time Matlab restarts! This leads to issues like the following linked one:

    https://psychtoolbox.discourse.group/t/problem-with-screen-function-ptb-just-installed/5451/9

    Apart from that, the Add On manager doesn't allow toolbox updates, and doesn't set things like the Matlab Java path, doesn't deal with GStreamer etc. It has zero benefit for our users, but is a source of hazarads and extra support overhead. Drop it.

  • Add Psychtoolbox/PsychBasic/PsychPlugins/ to the search path for dynamic shared libraries for all operating systems, so PTB specific plugin libraries can be found during mex file load time.

Linux:

  • Psychtoolbox was built and tested against Matlab R2024a and Octave 5.2 and later.

  • PsychImaging: Update 'EnableNative16BitFramebuffer' help text for year 2024.

  • Screen: Fix Vulkan display backend support with Mesa versions 23.3 and later and thereby for Ubuntu 24.04-LTS and later. The same problem that affected the Broadcom VideoCore 6 of the RaspberryPi 4 and later under Mesa 23.3 now affects at least Intel and AMD under Mesa 24.0 with Ubuntu 24.04.0-LTS.

    It appears a slightly broken GL_EXT_direct_state_access implementation in Mesa was introduced in Mesa 23.3 and later. Work around this in an effective and safe way.

  • PsychVulkan: Add workaround against an AMDVLK bug that causes crash if the used Vulkan display monitor has more than 64 video modes. A proper fix, especially for multi-display setups, can only be done in a future AMDVLK driver from AMD's Vulkan team, but for single display stimulation this workaround should prevent crashes and problems, and on some multi-display setups things may still work with a sprinkle of dumb luck - no guarantees for multi-display though! Note that the AMDVLK driver is only used on AMD gpu's if a color depth of more than standard 8 bpc (aka "deep color") or HDR-10 display mode is requested. For other Vulkan use cases, the high quality Mesa radv Vulkan driver is used, which does not suffer such a problem. For context see:

    https://psychtoolbox.discourse.group/t/vulkan-breaks-with-stack-smashing-detected-terminated/5501

  • XOrgConfCreator: Adapt to Ubuntu 24.04-LTS changes in /dev/dri/card enumeration. This broke hybrid graphics laptop detection, at least on three single gpu laptops with AMD gpu's. It reported a dual-gpu config when there was not any. Since Ubuntu 24.04-LTS, or more likely with a recent Linux 6.8 kernel shipping in both Ubuntu 24.04-LTS and in Ubuntu 22.04.5-LTS with HWE stack, the first (and only) gpu on a single gpu machine now has a /dev/dri/card1 device file, instead of a /dev/dri/card0 device file, ie. device file indexing now starts at 1 instead of 0. On multi-gpu machines, the second gpu is now associated with /dev/dri/card2 and so on. This broke some hard-coded assumptions about 0-based device numbering. We now use a more robust detection logic for hybrid gpu detection. The fix was successfully tested on single-gpu AMD and Intel graphics machines, and on a dual-gpu Intel + AMD laptop for each gpu and in prime render offload mode.

  • Add braces for NetWM reporting to make compiler happier. It caused a weird problem in the Screen mex build for Matlab, in which the "PTB-INFO: ..." lines about the used flip timestamping mechanism are not printed! No clue why, looks like some compiler bug, but adding the - technically not needed - braces fixes it.

Windows:

  • Psychtoolbox was built and lightly tested against Matlab R2024a and Octave 7.3.

  • VideoRecordingDemo.m: Remove special case MS-Windows path. It does not seem to be as necessary anymore with the future default MediaFoundation path for capture and recording. Also added some cleanups and ability to specify video capture device as argument.

macOS:

  • Psychtoolbox was built and tested against Matlab R2024a and against Octave 9.2 from HomeBrew.

Psychtoolbox 3.0.19 update "Last free lunch"

### Compatibility changes wrt. Psychtoolbox 3.0.19.14:

- None.

### Highlights:

- None. Only bug fixes for various 3rd party components, and small improvements.

### All:

- Change enumeration order of video capture devices. This should avoid
  selection of suboptimal capture devices by preferring more optimal ones,
  especially on modern Ubuntu 22.04-LTS and later Linux distributions, which
  often choose the new but immature pipewiresrc as video source plugin for a
  camera instead of the old and proven/mature more optimal v4l2src as video
  source. Specifically we hope to avoid VideoRecordingDemo.m problems like
  the ones encountered in the following thread:

  https://psychtoolbox.discourse.group/t/codecs-in-videorecordingdemo-not-working-on-linux/5441

- PsychImaging: Fix HDR mode with types of PsychColorCorrection() that involve
  lookup tables and only use one color correction operation in total. E.g,
  standard LUT based correction, 3D LUT based correction or application of
  per-pixel gain matrices. See:

  https://psychtoolbox.discourse.group/t/best-approach-for-gamma-correction-in-hdr10/5515

- CI release scripts: Disable building of .mltbx files for releases for now.

  The current approach contributed by Mathworks team is broken. It includes the
  whole Psychtoolbox-3 tree for some utterly unclear reason, although the project
  file only specified the Psychtoolbox/ subfolder. Worse, it adds toolbox folders
  to the Matlab path in randomized (!?!) order, so our carefully selected ordering
  of MatlabWindowsFilesR2007a/ folder wrt. PsychBasic folder gets screwed up and mex
  files can't be found on MS-Windows anymore. Even worse, if SetupPsychtoolbox() fixes
  it, then the Matlab Add-On Manager undos the fix every single time Matlab restarts!
  This leads to issues like the following linked one:

  https://psychtoolbox.discourse.group/t/problem-with-screen-function-ptb-just-installed/5451/9
  
  Apart from that, the Add On manager doesn't allow toolbox updates, and doesn't
  set things like the Matlab Java path, doesn't deal with GStreamer etc. It has
  zero benefit for our users, but is a source of hazarads and extra support overhead.
  Drop it.

- Add Psychtoolbox/PsychBasic/PsychPlugins/ to the search path for dynamic shared
  libraries for all operating systems, so PTB specific plugin libraries can be found
  during mex file load time.

### Linux:

- Psychtoolbox was built and tested against Matlab R2024a and Octave 5.2 and later.

- PsychImaging: Update 'EnableNative16BitFramebuffer' help text for year 2024.

- Screen: Fix Vulkan display backend support with Mesa versions 23.3 and later
  and thereby for Ubuntu 24.04-LTS and later. The same problem that affected the
  Broadcom VideoCore 6 of the RaspberryPi 4 and later under Mesa 23.3 now affects
  at least Intel and AMD under Mesa 24.0 with Ubuntu 24.04.0-LTS.

  It appears a slightly broken GL_EXT_direct_state_access implementation
  in Mesa was introduced in Mesa 23.3 and later. Work around this in an effective
  and safe way.

- PsychVulkan: Add workaround against an AMDVLK bug that causes crash if the used
  Vulkan display monitor has more than 64 video modes. A proper fix, especially
  for multi-display setups, can only be done in a future AMDVLK driver from AMD's
  Vulkan team, but for single display stimulation this workaround should prevent
  crashes and problems, and on some multi-display setups things may still work
  with a sprinkle of dumb luck - no guarantees for multi-display though!
  Note that the AMDVLK driver is only used on AMD gpu's if a color depth of more
  than standard 8 bpc (aka "deep color") or HDR-10 display mode is requested. For
  other Vulkan use cases, the high quality Mesa radv Vulkan driver is used, which
  does not suffer such a problem. For context see:

  https://psychtoolbox.discourse.group/t/vulkan-breaks-with-stack-smashing-detected-terminated/5501 

- XOrgConfCreator: Adapt to Ubuntu 24.04-LTS changes in /dev/dri/card enumeration.
  This broke hybrid graphics laptop detection, at least on three single gpu
  laptops with AMD gpu's. It reported a dual-gpu config when there was not any.
  Since Ubuntu 24.04-LTS, or more likely with a recent Linux 6.8 kernel shipping
  in both Ubuntu 24.04-LTS and in Ubuntu 22.04.5-LTS with HWE stack, the first
  (and only) gpu on a single gpu machine now has a /dev/dri/card1 device file,
  instead of a /dev/dri/card0 device file, ie. device file indexing now starts
  at 1 instead of 0. On multi-gpu machines, the second gpu is now associated
  with /dev/dri/card2 and so on. This broke some hard-coded assumptions about
  0-based device numbering. We now use a more robust detection logic for hybrid
  gpu detection. The fix was successfully tested on single-gpu AMD and Intel
  graphics machines, and on a dual-gpu Intel + AMD laptop for each gpu and in
  prime render offload mode.

- Add braces for NetWM reporting to make compiler happier. It caused a weird
  problem in the Screen mex build for Matlab, in which the "PTB-INFO: ..." lines
  about the used flip timestamping mechanism are not printed! No clue why, looks
  like some compiler bug, but adding the - technically not needed - braces fixes
  it.

### Windows:

- Psychtoolbox was built and lightly tested against Matlab R2024a and Octave 7.3.

- VideoRecordingDemo.m: Remove special case MS-Windows path. It does not seem to
  be as necessary anymore with the future default MediaFoundation path for capture
  and recording. Also added some cleanups and ability to specify video capture
  device as argument.

### macOS:

- Psychtoolbox was built and tested against Matlab R2024a and against Octave 9.2
  from HomeBrew.
@kleinerm kleinerm merged commit 2f9c01c into kleinerm:master Nov 3, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant