View Bug Details

IDProjectCategoryView StatusLast Update
0002754DCP-o-maticMajor featurespublic2024-03-22 22:22
Reportercarl Assigned Tocarl  
PrioritynormalSeverityminorReproducibilityN/A
Status confirmedResolutionopen 
Target Version2.18.x 
Summary0002754: Use Metal on macOS to display the video
Description

[]

TagsNo tags attached.
Branchmetal
Estimated weeks required
Estimated work requiredMajor

Activities

carl

2024-02-05 10:11

administrator   ~0006309

Last edited: 2024-02-22 23:21

This seems to be much easier with Apple's metal-cpp library: https://developer.apple.com/metal/cpp/

This requires C++17, which appears to mean we have to upgrade libxml++ to its v4 API (2.6 uses auto_ptr which was removed in C++17 [though GCC seems to allow it, but clang not]) which requires a newer glibmm, which pulls in cairomm, sigc++ updates.

carl

2024-02-05 10:14

administrator   ~0006310

libxml++ v4 is API breaking, most notably Node::add_child is gone and now must be Element::add_child_element.

carl

2024-02-05 10:16

administrator   ~0006311

The question is whether we can use C++17 for macOS in v2.17.x without breaking everything else. Or use C++17 for everything? After 30/6/2024 Centos 7 Is EOL (that's keeping us on C++11) but it seems unlikely that everything else would be happy to go to libxml++-4/C++17.

carl

2024-02-21 23:25

administrator   ~0006329

Last edited: 2024-02-24 22:01

  • Fix libdcp not to call add_child (no-add-child)
  • Fix DoM master to not call add_child (no-add-child)
  • Update osx-environment and build DoM with c++17 and the no-add-child branches on macOS - combined branch of DoM is c++17, osx-environment branch is also c++17
  • See if it still builds on everything else - I'm guessing not because libxml++-4.0 does not seem to be included with Debian, so we'd have to build half the world.
  • If so closely eyeball the libdcp/DoM changes, commit, profit.

macOS dep updates are:

  • sigc++ -> 3.6.0
  • glibmm -> 2.68.2
  • libxml++ -> 4.0.3
  • cairomm -> 1.18.0

carl

2024-02-25 00:56

administrator   ~0006330

Ubuntu 18.04 seems tricky because something (I think) needs meson 1.2.0 but that needs Python >= 3.7.0.

carl

2024-02-25 18:44

administrator   ~0006331

Bottom line though is it seems possible, but will need some ifdeffing. The changes are on

  • libcxml - c++17 branch (libxml++ 4.0)
  • libdcp - c++17 branch (libxml++ 4.0)
  • dcpomatic - c++17 branch (libxml++ 4.0, Cairo / Pango namespace changes)
  • osx-environment - c++17 branch

carl

2024-03-21 21:27

administrator   ~0006356

Once C++17 branches are merged I guess this can be bumped from 2.18.0.

Bug History

Date Modified Username Field Change
2024-02-05 10:09 carl New Bug
2024-02-05 10:09 carl Branch => metal
2024-02-05 10:09 carl Estimated work required => Major
2024-02-05 10:10 carl Assigned To => carl
2024-02-05 10:10 carl Status new => confirmed
2024-02-05 10:11 carl Note Added: 0006309
2024-02-05 10:13 carl Note Edited: 0006309
2024-02-05 10:14 carl Note Added: 0006310
2024-02-05 10:16 carl Note Added: 0006311
2024-02-05 10:16 carl Note Edited: 0006309
2024-02-21 23:25 carl Note Added: 0006329
2024-02-21 23:25 carl Note Edited: 0006329
2024-02-21 23:28 carl Note Edited: 0006329
2024-02-21 23:28 carl Note Edited: 0006329
2024-02-21 23:29 carl Note Edited: 0006329
2024-02-22 21:47 carl Note Edited: 0006329
2024-02-22 23:21 carl Note Edited: 0006309
2024-02-22 23:22 carl Note Edited: 0006329
2024-02-22 23:38 carl Note Edited: 0006329
2024-02-22 23:59 carl Note Edited: 0006329
2024-02-23 19:26 carl Note Edited: 0006329
2024-02-23 22:25 carl Note Edited: 0006329
2024-02-24 22:01 carl Note Edited: 0006329
2024-02-25 00:56 carl Note Added: 0006330
2024-02-25 18:44 carl Note Added: 0006331
2024-03-21 21:27 carl Note Added: 0006356
2024-03-22 22:22 carl Category Features => Major features
2024-03-22 22:22 carl Target Version 2.18.0 => 2.18.x