Skip to content
Merged
Show file tree
Hide file tree
Changes from 61 commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
a341363
Compositor: Mesa add preflight checks
bramoosterhuis Jul 22, 2025
e199ee9
Add westeros environment configuration for compositor
bramoosterhuis Jul 23, 2025
40e5f44
Add README for Wayland Compositor Library
bramoosterhuis Jul 23, 2025
7074f9d
Update IOutput.h documentation for clarity and consistency
bramoosterhuis Jul 23, 2025
d4ce017
Compositor: Fix memory leak in DRM node
bramoosterhuis Jul 23, 2025
006f8af
Compositor: Enhance DRM handling with mode selection and adjustments
bramoosterhuis Jul 24, 2025
5940089
Compositor: Update SelectBestMode and ScanConnector to include reques…
bramoosterhuis Jul 26, 2025
17073cc
Compositor: Add refreshRate parameter to buffer creation functions an…
bramoosterhuis Jul 26, 2025
620881b
Compositor: Improve error handling in configuration parsing and add t…
bramoosterhuis Jul 26, 2025
fe28706
Compositor: Add refresh rate parameter to buffer creation in test files
bramoosterhuis Jul 26, 2025
d797507
Compositor: Fix compile issues
bramoosterhuis Aug 4, 2025
7fdd7f5
Compositor: EGL we need EGL_KHR_no_config_context or EGL_MESA_configl…
bramoosterhuis Aug 4, 2025
94756bd
Refactor PixelFormat class: streamline constructors, add IsValid meth…
bramoosterhuis Aug 7, 2025
1929cf6
Add CompositorUtils header with PixelFormat string conversion and int…
bramoosterhuis Aug 7, 2025
c161fe1
Refactor Connector class: update format handling and improve framebuf…
bramoosterhuis Aug 7, 2025
b3e9855
Compositor: add a property value and a blob getter.
bramoosterhuis Aug 7, 2025
a989403
Compositor: Add a function to extract pixel formats from drm properties.
bramoosterhuis Aug 7, 2025
5dd71a2
Compositor: Let the hardware select what modifier it prefers.
bramoosterhuis Aug 7, 2025
961b4fd
Compositor Rename CreateBuffer to Buffer.
bramoosterhuis Aug 7, 2025
31e37b6
Compositor: Replace Wayland format and modifier types with PixelForma…
bramoosterhuis Aug 7, 2025
377efeb
Compositor: Add SHM format handling and logging in Wayland implementa…
bramoosterhuis Aug 7, 2025
6aef1c2
Compositor: Refactor egl pixel format handling to separate render and…
bramoosterhuis Aug 7, 2025
52a608d
Compositor: Update buffer creation to use default pixel format
bramoosterhuis Aug 7, 2025
84aeb21
Compositor: Improve GLESFrameBuffer handling and error logging for EG…
bramoosterhuis Aug 7, 2025
85b8d41
Compositor: Update format and modifier handling to auto-select values…
bramoosterhuis Aug 7, 2025
187b819
Compositor: Update Presented method signatures to use uint64_t for se…
bramoosterhuis Aug 7, 2025
41b2492
Compositor: Also report a failed presentation
bramoosterhuis Aug 7, 2025
47845b4
Compositor: Implement output termination handling and exit requests i…
bramoosterhuis Aug 7, 2025
891afa7
Compositor: Factored GELS debugging
bramoosterhuis Aug 7, 2025
b42fb5d
Compositor: Mark unused parameter in Terminated method across multipl…
bramoosterhuis Aug 7, 2025
0805b25
Compositor: Wayland add damage buffer and presentation feedback handling
bramoosterhuis Aug 7, 2025
408862a
Compositor: fix FPS calculation in HandleVSync to prevent division by…
bramoosterhuis Aug 7, 2025
1dba3c8
Compositor: refactor WaylandOutput to decouple window size and rende…
bramoosterhuis Aug 8, 2025
4c133c4
Compositor: add viewport support and configure viewport scaling in Wa…
bramoosterhuis Aug 8, 2025
960f838
Compositor: add libdecor basics
bramoosterhuis Aug 11, 2025
d13232a
Compositor: Remove serverside decoration
bramoosterhuis Aug 11, 2025
e6aed68
Add support for libdecor integration and enhance Wayland output handling
bramoosterhuis Aug 29, 2025
04b7374
Enhance GLES2 debug scope management and improve error handling
bramoosterhuis Aug 29, 2025
c0520b6
Refactor EGL display management and enhance context handling
bramoosterhuis Aug 29, 2025
2246373
Reset EGL context in DmaBuffer destructor to ensure proper resource c…
bramoosterhuis Aug 29, 2025
cd113c8
Refactor RenderTest classes to inherit from BaseTest and improve stru…
bramoosterhuis Aug 29, 2025
d7eeed6
Implement shared memory buffer in PixelBuffer and SHMMapper classes
bramoosterhuis Sep 2, 2025
6ac149e
Adjust frame rate handling in WaylandOutput and update RenderTest ini…
bramoosterhuis Sep 3, 2025
515b14b
Compositor: GLES Render set egl context current on unbind
bramoosterhuis Sep 18, 2025
49a459b
Compositor: Fix render tests
bramoosterhuis Sep 18, 2025
0937fe0
Compositor: Add DRM name wrappers
bramoosterhuis Sep 18, 2025
bbd8202
Adjust VSyncTimer refresh rate default to 60000 microseconds
bramoosterhuis Sep 19, 2025
c60b312
Compositor: Fix dmabuf test
bramoosterhuis Sep 19, 2025
7ff6370
Compositor: mimic wayland feedback with theVSyncTimer
bramoosterhuis Sep 19, 2025
fcd1e9c
Compositor: Proper window resizing and damage tracking
bramoosterhuis Sep 20, 2025
1895fe0
Compositor: Add atomic terminated flag to WaylandOutput
bramoosterhuis Sep 20, 2025
d1849af
Compositor: Add Atomic FIFO
bramoosterhuis Sep 26, 2025
cf6a798
Compositor: Implement Stop method to safely halt rendering and clean …
bramoosterhuis Sep 26, 2025
c9401a7
Compositor: Refactor Client and add PrivilegedRequestCallback for buf…
bramoosterhuis Sep 26, 2025
484a191
Compositor: Add rendering statistics tracking and reporting
bramoosterhuis Sep 26, 2025
a52f45c
Compositor: Add Stats tracing category
bramoosterhuis Sep 26, 2025
d61a80b
Compositor: Remove std::cout for buffer logging
bramoosterhuis Sep 26, 2025
6f1c05a
Compositor: Remove redundant assertion for render descriptor
bramoosterhuis Sep 26, 2025
d6be4a3
Compositor: Simplify DisplayDispatcher constructor and destructor by …
bramoosterhuis Sep 26, 2025
cddd338
Merge branch 'master' into development/compositor-enhancements
bramoosterhuis Sep 26, 2025
6329074
Compositor: Forgot to change copyright when I used findEGL.cmake as a…
bramoosterhuis Sep 29, 2025
186eaed
Update DRMTypes.cpp
pwielders Oct 8, 2025
bc79101
Merge branch 'master' into development/compositor-enhancements
pwielders Oct 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions Compositor/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,9 @@ option(PLUGIN_COMPOSITOR_TEST "Build a compositor test client" OFF)
option(PLUGIN_COMPOSITOR_NXSERVER "Include a nexus server (Used in Wayland)" OFF)

set(PLUGIN_COMPOSITOR_IMPLEMENTATION_LIB "lib${PLATFORM_COMPOSITOR}.so" CACHE STRING "Specify a library with a compositor implementation." )
set(PLUGIN_COMPOSITOR_RESOLUTION "720p" CACHE STRING "Specify the startup resolution")
set(PLUGIN_COMPOSITOR_RESOLUTION "Unknown" CACHE STRING "Specify the startup resolution")

set(PLUGIN_COMPOSITOR_OUTPUT "HDMI-A-1" CACHE STRING "Specify the output (name1;h;w) that the compositor should use." )
set(PLUGIN_COMPOSITOR_CANVAS_HEIGHT "1080" CACHE STRING "Specify the height of the canvas that the compositor uses for drawing." )
set(PLUGIN_COMPOSITOR_CANVAS_WIDTH "1920" CACHE STRING "Specify the width of the canvas that the compositor uses for drawing." )
set(PLUGIN_COMPOSITOR_RENDER_NODE "" CACHE STRING "Manually specify the render node to use (e.g. /dev/dri/renderDxxx or /dev/dri/cardx)." )

set(PLUGIN_COMPOSITOR_WESTON_TTY_LIST "1;2;3;4" CACHE STRING "TTY ids for weston drm backend")
Expand Down
5 changes: 1 addition & 4 deletions Compositor/Compositor.conf.in
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,7 @@ if "@PLUGIN_COMPOSITOR_IMPLEMENTATION@" == "Wayland":
output_configs_list.append(output_config_dict)
configuration.add("outputs", output_configs_list)

if "@PLUGIN_COMPOSITOR_IMPLEMENTATION@" == "Mesa":
configuration.add("height", "@PLUGIN_COMPOSITOR_CANVAS_HEIGHT@")
configuration.add("width", "@PLUGIN_COMPOSITOR_CANVAS_WIDTH@")

if "@PLUGIN_COMPOSITOR_IMPLEMENTATION@" == "Mesa":
if "@PLUGIN_COMPOSITOR_RENDER_NODE@":
configuration.add("render", "@PLUGIN_COMPOSITOR_RENDER_NODE@")

Expand Down
17 changes: 11 additions & 6 deletions Compositor/Compositor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -208,13 +208,18 @@ namespace Plugin {
} else {
RegisterAll();
_composition->Register(&_notification);
_composition->Configure(_service);

_inputSwitch = _composition->QueryInterface<Exchange::IInputSwitch>();
_inputSwitchCallsign = config.InputSwitch.Value();
_newOnTop = config.NewOnTop.Value();
uint32_t result = _composition->Configure(_service);

_brightness = _composition->QueryInterface<Exchange::IBrightness>();
if (result != Core::ERROR_NONE) {
message = "Instantiating the compositor failed. Could not configure: CompositorImplementation Error: " + std::string(Core::ErrorToString(result));
} else {
_inputSwitch = _composition->QueryInterface<Exchange::IInputSwitch>();
_inputSwitchCallsign = config.InputSwitch.Value();
_newOnTop = config.NewOnTop.Value();

_brightness = _composition->QueryInterface<Exchange::IBrightness>();
}
}

// On success return empty, to indicate there is no error text.
Expand Down Expand Up @@ -247,7 +252,7 @@ namespace Plugin {
// It should have been the last reference we are releasing,
// so it should endup in a DESTRUCTION_SUCCEEDED, if not we
// are leaking...
ASSERT( (result == Core::ERROR_CONNECTION_CLOSED) || (result == Core::ERROR_DESTRUCTION_SUCCEEDED));
ASSERT((result == Core::ERROR_CONNECTION_CLOSED) || (result == Core::ERROR_DESTRUCTION_SUCCEEDED));
// If this was running in a (container) process...
if (connection != nullptr) {
// Lets trigger the cleanup sequence for
Expand Down
29 changes: 29 additions & 0 deletions Compositor/cmake/Findlibdecor.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# If not stated otherwise in this file or this component's LICENSE file the
# following copyright and licenses apply:
#
# Copyright 2025 Metrological
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

if(LIBDECOR_FIND_QUIETLY)
set(_LIBDECOR_MODE QUIET)
elseif(LIBDECOR_FIND_REQUIRED)
set(_LIBDECOR_MODE REQUIRED)
endif()

find_package(PkgConfig)
pkg_check_modules(libdecor ${_LIBDECOR_MODE} IMPORTED_TARGET GLOBAL libdecor-0)

if (libdecor_FOUND)
add_library(libdecor::libdecor ALIAS PkgConfig::libdecor)
endif()
Loading
Loading