Skip to content

render/color: Invert ownership model of color_transform types.

Alexander Orzechowski requested to merge Nefsen402/wlroots:typesafe-3dlut into master

Color transform can have multiple types and these different types want to store different metadata. We previously stored this metadata directly on wlr_color_transform even for transforms that don't use it.

Instead, let's take the prior art from wlr_scene where each scene node is built on a base node. Notice how wlr_color_transform_lut3d now has a struct wlr_color_transform base. This is advantageous in multiple ways:

  1. We don't allocate memory for metadata that will never be used.
  2. This is more type safe: Compositors can pass around a struct wlr_color_transform_lut3d if they know they only want to use a 3d_lut.
  3. This is more scalable. As we add more transform types, we don't have to keep growing a monolithic struct.

Merge request reports