From c207315d1acfe9a9dcf6cb84a6d89e6c1008c86c Mon Sep 17 00:00:00 2001 From: Eduardo Hopperdietzel Date: Sat, 7 Sep 2024 17:29:28 -0400 Subject: [PATCH] Update version to 0.7.2 --- CHANGES | 20 ++++++++++++++++++++ README.md | 2 +- VERSION | 2 +- doxygen/md/Downloads.md | 25 ++++++++++-------------- doxygen/md/Envs.md | 42 ++++++++++++++++++++++------------------- src/lib/SRMCore.c | 2 +- src/meson.build | 14 +++++++------- 7 files changed, 63 insertions(+), 44 deletions(-) diff --git a/CHANGES b/CHANGES index 82f02ca..fe62560 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,23 @@ +SRM (0.7.2-1) + + # New Environment Variables + + * SRM_FORCE_LEGACY_CURSOR: Allows forcing the use of legacy DRM cursor IOCTLs + * SRM_DISABLE_CURSOR: Allows disabling cursor planes for all drivers. + * SRM_ENABLE_WRITEBACK_CONNECTORS: Allows toggling the writeback DRM client capability. + + # Internal Changes + + * Legacy cursor IOCTLs are now used by default, even when using the atomic API, unless SRM_FORCE_LEGACY_CURSOR is set to 0. This is because legacy IOCTLs are asynchronous and provide a much smoother experience. + * Cursor planes are now disabled by default for NVIDIA proprietary drivers unless SRM_NVIDIA_CURSOR is set to 1. This is because updating cursors occasionally causes screen stuttering. + + # Dependencies + + * Specify the minimum required version of dependencies. + +-- Eduardo Hopperdietzel Sat, 07 Sep 2024 16:51:58 -0400 + + SRM (0.7.1-1) # Bug Fixes diff --git a/README.md b/README.md index 7819bdb..bd0b90e 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ SRM is released under the MIT license. - Current SRM version. + Current SRM version.

diff --git a/VERSION b/VERSION index 7deb86f..d5cc44d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.7.1 \ No newline at end of file +0.7.2 \ No newline at end of file diff --git a/doxygen/md/Downloads.md b/doxygen/md/Downloads.md index a053737..a5dc7de 100644 --- a/doxygen/md/Downloads.md +++ b/doxygen/md/Downloads.md @@ -13,18 +13,19 @@ Pre-built binaries are provided for the following distributions. Please be aware SRM depends on the following libraries: -* [hwinfo](https://github.com/vcrhonek/hwdata) -* [libdisplay-info](https://gitlab.freedesktop.org/emersion/libdisplay-info) -* libudev -* libdrm -* libgbm -* libEGL >= 1.5 -* libGLESv2 +* libudev >= 249 +* libdrm >= 2.4.113 +* gbm >= 23.2.1 +* egl >= 1.5 +* gl >= 1.2 +* glesv2 >= 3.2 +* hwinfo +* libdisplay-info The **srm-multi-session** example also require: -* libseat -* libinput +* libseat >= 0.6.4 +* libinput >= 1.20.0 ### Debian (Ubuntu, Linux Mint, etc) @@ -34,12 +35,6 @@ To build SRM from a Debian based distribution please install the following packa $ sudo apt install build-essential meson libseat-dev libinput-dev libudev-dev libdrm-dev libgbm-dev libegl1-mesa-dev libgles2-mesa-dev hwinfo libdisplay-info-dev ``` -If the [hwinfo](https://github.com/vcrhonek/hwdata) or [libdisplay-info](https://gitlab.freedesktop.org/emersion/libdisplay-info) packages are not available in your distribution, please download and install them manually in the specified order: - -1. [hwinfo](https://packages.ubuntu.com/focal/hwdata) -2. [libdisplay-info0](https://packages.ubuntu.com/lunar/libdisplay-info0) -3. [libdisplay-info-dev](https://packages.ubuntu.com/lunar/libdisplay-info-dev) - Next, execute the following commands: ```bash diff --git a/doxygen/md/Envs.md b/doxygen/md/Envs.md index 38cfbf5..fd959e4 100644 --- a/doxygen/md/Envs.md +++ b/doxygen/md/Envs.md @@ -2,28 +2,34 @@ ## Debugging -To adjust the logging message level, configure the following environment variables: +To adjust the logging verbosity level, configure the following environment variables: -**SRM_DEBUG**=N +**SRM_DEBUG**=N (default = 0) -**SRM_EGL_DEBUG**=N +**SRM_EGL_DEBUG**=N (default = 0) Where N can be 0 = Disabled, 1 = Fatal, 2 = Error, 3 = Warning or 4 = Debug. -## Nvidia Configuration +## DRM API -Nvidia cards often work out of the box with nouveau, but this isn't always the case with proprietary drivers. A recommended configuration for proprietary drivers is: +SRM defaults to using the Atomic DRM API for all devices (when avaliable). To enforce the use of the legacy API set the following variable to 1. -* **SRM_FORCE_LEGACY_API**=0
-Use the Atomic DRM API if available. -* **SRM_NVIDIA_CURSOR**=0
-Disable cursor planes for nvidia_drm only, which often cause FPS drops when updated. +* **SRM_FORCE_LEGACY_API**=[0,1] (default = 0) -## DRM API +Writeback connectors are specialized virtual connectors designed to access pixel data from offscreen plane compositions. They are particularly useful for capturing and processing the final output of the display pipeline. + +* **SRM_ENABLE_WRITEBACK_CONNECTORS**=[0,1] (default = 0) -SRM defaults to using the Atomic DRM API for all devices (when avaliable), which may occasionally result in delayed hardware cursor updates. To enforce the use of the legacy API for all devices, simply set the following variable to 1. +## Cursor Planes -**SRM_FORCE_LEGACY_API**=1 +* **SRM_FORCE_LEGACY_CURSOR**=[0,1] (default = 1)
+The legacy cursor IOCTLs are used by default, even when the atomic API is enabled, as they allow the cursor to be updated asynchronously, providing a much smoother experience. + +* **SRM_NVIDIA_CURSOR**=[0,1] (default = 0)
+Cursor planes are disabled by default for proprietary NVIDIA drivers, as updating the cursor can sometimes cause screen stutter. Nouveau drivers are not affected by this option. + +* **SRM_DISABLE_CURSOR**=[0,1] (default = 0)
+This setting can be used to disable cursor planes for all drivers. ## Device Blacklisting @@ -31,17 +37,15 @@ To disable specific DRM devices, list the devices separated by ":", for example: **SRM_DEVICES_BLACKLIST**=/dev/dri/card0:/dev/dri/card1 -## Allocator Device +## Buffer Allocation By default, SRM automatically selects the integrated GPU for buffer allocation. To override the default allocator, use: **SRM_ALLOCATOR_DEVICE**=/dev/dri/card[N] -## Main Memory Buffers - -SRM uses GBM for buffer allocation from main memory, resorting to OpenGL if GBM fails. To enforce the use of OpenGL employ: +SRM uses GBM for buffer allocation from main memory, resorting to OpenGL when the former fails. To enforce the use of OpenGL employ: -**SRM_FORCE_GL_ALLOCATION**=1 +**SRM_FORCE_GL_ALLOCATION**=1 (default = 0) ## Render Buffering @@ -57,7 +61,7 @@ All connectors use double buffering by default. You can customize the number of Where N can be 2 = Double or 3 = Triple buffering. -> Using triple buffering can offer a smoother experience by allowing a new frame to be rendered while a page flip is pending, however, it does require more resources. +> Triple buffering can provide a smoother experience by allowing a new frame to be rendered while a page flip is pending. However, it consumes more memory and power and can introduce some latency. ## Direct Scanout @@ -65,4 +69,4 @@ Scanning out custom buffers is allowed by default (see `srmConnectorSetCustomSca To disable it, set: -**SRM_DISABLE_CUSTOM_SCANOUT**=1 +**SRM_DISABLE_CUSTOM_SCANOUT**=1 (default = 0) diff --git a/src/lib/SRMCore.c b/src/lib/SRMCore.c index c7d815e..1e11e0c 100644 --- a/src/lib/SRMCore.c +++ b/src/lib/SRMCore.c @@ -47,7 +47,7 @@ SRMCore *srmCoreCreate(SRMInterface *interface, void *userData) setenv("SRM_ENABLE_WRITEBACK_CONNECTORS", "0", 0); setenv("SRM_DISABLE_CUSTOM_SCANOUT", "0", 0); setenv("SRM_DISABLE_CURSOR", "0", 0); - setenv("SRM_NVIDIA_CURSOR", "1", 0); + setenv("SRM_NVIDIA_CURSOR", "0", 0); const char *env = getenv("SRM_DISABLE_CUSTOM_SCANOUT"); core->customBufferScanoutIsDisabled = env && atoi(env) == 1; diff --git a/src/meson.build b/src/meson.build index 97d6810..f13ba29 100644 --- a/src/meson.build +++ b/src/meson.build @@ -60,12 +60,12 @@ include_paths = ['./lib', conf_file_inc] # ------------ DEPENDENCIES ------------ pkg = import('pkgconfig') -gl_dep = dependency('gl') +gl_dep = dependency('gl', version: '>= 1.2') egl_dep = dependency('egl', version: '>= 1.5') -glesv2_dep = dependency('glesv2') -udev_dep = dependency('libudev') -drm_dep = dependency('libdrm') -gbm_dep = dependency('gbm') +glesv2_dep = dependency('glesv2', version: '>= 3.2') +udev_dep = dependency('libudev', version: '>= 249') +drm_dep = dependency('libdrm', version: '>= 2.4.113') +gbm_dep = dependency('gbm', version: '>= 23.2.1') display_info_dep = dependency('libdisplay-info') pthread_dep = c.find_library('pthread') @@ -109,8 +109,8 @@ if get_option('build_examples') or get_option('build_tests') endif if get_option('build_examples') - libinput_dep = dependency('libinput') - libseat_dep = dependency('libseat') + libinput_dep = dependency('libinput', version: '>= 1.20.0') + libseat_dep = dependency('libseat', version: '>= 0.6.4') m_dep = c.find_library('m') subdir('examples/srm-basic')