Skip to content

Commit

Permalink
Update version to 0.7.2
Browse files Browse the repository at this point in the history
  • Loading branch information
ehopperdietzel committed Sep 7, 2024
1 parent 6ed5c42 commit c207315
Show file tree
Hide file tree
Showing 7 changed files with 63 additions and 44 deletions.
20 changes: 20 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
@@ -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 <[email protected]> Sat, 07 Sep 2024 16:51:58 -0400


SRM (0.7.1-1)

# Bug Fixes
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="SRM is released under the MIT license." />
</a>
<a href="https://github.com/CuarzoSoftware/SRM">
<img src="https://img.shields.io/badge/version-0.7.1-brightgreen" alt="Current SRM version." />
<img src="https://img.shields.io/badge/version-0.7.2-brightgreen" alt="Current SRM version." />
</a>
</p>

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.7.1
0.7.2
25 changes: 10 additions & 15 deletions doxygen/md/Downloads.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand All @@ -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
Expand Down
42 changes: 23 additions & 19 deletions doxygen/md/Envs.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,46 +2,50 @@

## 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<br>
Use the Atomic DRM API if available.
* **SRM_NVIDIA_CURSOR**=0<br>
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)<br>
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)<br>
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)<br>
This setting can be used to disable cursor planes for all drivers.

## Device Blacklisting

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

Expand All @@ -57,12 +61,12 @@ 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

Scanning out custom buffers is allowed by default (see `srmConnectorSetCustomScanoutBuffer()`). This allows, for example, compositors to directly present fullscreen application windows without needing to render them using OpenGL.

To disable it, set:

**SRM_DISABLE_CUSTOM_SCANOUT**=1
**SRM_DISABLE_CUSTOM_SCANOUT**=1 (default = 0)
2 changes: 1 addition & 1 deletion src/lib/SRMCore.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
14 changes: 7 additions & 7 deletions src/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -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')

Expand Down Expand Up @@ -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')
Expand Down

0 comments on commit c207315

Please sign in to comment.