SRM (0.8.0-2)

  # Packaging

  * Added official Fedora COPR link to the downloads page.

-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Wed, 30 Oct 2024 21:21:08 -0300


SRM (0.8.0-1)

  # API Additions

  * srmDeviceMakeCurrent: Makes the EGL display and context associated with a device current for the calling thread, or creates a new shared one if it doesn't exist.
  * srmDeviceSyncWait: Forces pending rendering commands to finish using fences, with glFinish() as a fallback.
  * srmBufferGetEGLImage: Retrieves an EGLImage of an SRMBuffer for a specific SRMDevice.
  * srmBufferCreateGLTextureWrapper: Creates SRMBuffers from existing OpenGL textures.
  * srmConnectorGetFramebufferID: Retrieves the ID of the currently bound OpenGL framebuffer.
  * srmConnectorGetContext: Retrieves the EGLContext associated with the connector's rendering thread.
  * srmSaveContext: Saves the current EGL context.
  * srmRestoreContext: Restores the context previously saved with srmSaveContext().

  # Internal Changes

  * All rendering modes now use renderbuffers instead of EGLSurfaces to prevent buffer ordering issues.
  * Fences are used to synchronize buffer updates and access, providing better performance and ensuring no partial updates occur.
  * IN_FENCE_FD and sync files are now used when available to wait for rendering commands to finish instead of using glFinish(), improving performance.

  # Bug Fixes

  * Fixed buffer allocation issues, particularly on NVIDIA proprietary drivers, which resulted in black textures.
  * Corrected framebuffer rendering order in proprietary NVIDIA drivers.
  * Resolved the issue of partial buffer updates by implementing fences.
  * Fixed a bug preventing the use of DRM framebuffers with explicit modifiers.

  Special thanks to @renhiyama, @kingdomkind, and @Fox2Code for their invaluable help!

-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Wed, 30 Oct 2024 21:21:08 -0300


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 <ehopperdietzel@gmail.com>  Sat, 07 Sep 2024 16:51:58 -0400


SRM (0.7.1-1)

  # Bug Fixes

  * Resolved a crash on certain EGL implementations when obtaining a GBM EGLDisplay through eglGetDisplay(). This was fixed by using eglGetPlatformDisplay() instead. Credits to @burgerindividual.

  # Downloads

  * Added link to Fedora package. Credits to @Conan-Kudo.

  # Dependencies

  * Updated EGL dependency to version 1.5 or higher.

-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Wed, 14 Aug 2024 22:06:30 -0400


SRM (0.7.0-1)

  # API Additions

  * Added srmConnectorSetCustomScanoutBuffer() function to override the primary plane framebuffer for specific frames.
  * Introduced srmFormatGetAlphaSubstitute() function to retrieve the translucent or opaque version of DRM formats.

  # Examples

  * Added srm-direct-scanout example.

  # Internal Changes

  * Integrated legacy plane supported formats into SRMPlane with DRM_FORMAT_MOD_INVALID.
  * Implemented internal EGL Image creation for CPU buffers allocated through OpenGL.
  * Incorporated an internal reference counter to SRMBuffer.

  # Environment

  * Added SRM_DISABLE_CUSTOM_SCANOUT env to enforce disabling srmConnectorSetCustomScanoutBuffer().

-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Mon, 22 Jul 2024 21:53:53 -0400


SRM (0.6.3-1)

  # Bug Fixes

  * Fallback to using implicit framebuffer modifiers in all rendering modes if drmModeAddFB2WithModifiers() fails. Thanks to @RogerDavenport for reporting the issue.

-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Wed, 10 Jul 2024 12:44:04 -0400


SRM (0.6.2-1)

  # Bug Fixes

  * Fixed incorrect default linear gamma table calculation in atomic API.
  * Added mutex to prevent racing conditions with external threads when updating the atomic changes flags.

-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Mon, 08 Jul 2024 00:13:05 -0400


SRM (0.6.1-1)

  # Performance

  * Added new PRIME rendering mode to enhance performance in multi-GPU setups with few common DMA formats/modifiers.
  * Integrated GPUs are now set as the default allocator device (primary device), promoting lower power consumption and improved performance.

  # Bug Fixes

  * Added small validation tests to ensure proper selection of main-memory buffer allocation APIs, preventing texture glitches on drivers that do not fully support GBM APIs.

  # Environment

  * All rendering modes now default to double buffering, with optional support for triple buffering, while the single buffering option has been deprecated.

  # Examples

  * Added link to example that uses Skia as renderer.

-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Sat, 06 Jul 2024 23:28:04 -0400


SRM (0.6.0-1)

  # New APIs

  * Introduced srmConnectorSetContentType() and srmConnectorGetContentType() functions to optimize display hardware for the type of content being displayed.

  # Bug Fixes

  * Ensured connector properties are re-synchronized after session switching to resolve issues with cursor visibility, position, and other related errors.

  # Internal Changes

  * Replaced custom connector name IDs with connector_type_id (e.g., HDMI-A-1, HDMI-A-2, etc.).
  * Maintained a copy of gamma tables in the legacy API to ensure proper restoration during session switching.

-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Sat, 29 Jun 2024 18:46:15 -0400


SRM (0.5.7-1)

  # Bug Fixes

  * Fix bug when using the atomic API that prevents cursor planes from being displayed when the first commit fails.

-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Mon, 17 Jun 2024 15:50:52 -0400


SRM (0.5.6-2)

  # Building

  * Add DRM headers dependency to all examples to resolve issues locating the drm_fourcc.h header, thanks to @EBADBEEF.
  * Remove unnecessary header include checks in meson.build.

-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Thu, 30 May 2024 21:39:15 -0400


SRM (0.5.6-1)

  # Bug Fixes

  * Implemented GL and EGL extension checks to prevent SRMBuffers creation when conditions to use them are not met.
  * Replaced the device used to retrieve the OpenGL texture ID of a framebuffer used in DUMB mode, resolving segfaults with nvidia-drm drivers. Special thanks to @dranull and @JaanDev for reporting and testing.

  # Environment

  * Added the SRM_DEVICES_BLACKLIST environment variable for disabling specific DRM devices.
  * By default, disabled cursor planes on Nvidia proprietary drivers, which were causing significant FPS drops when the cursor was updated. Also, added the SRM_NVIDIA_CURSOR environment variable to enable it if desired.
  
  # Documentation

  * Added Nvidia drivers section on the Environment page with recommended configurations.

-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Sat, 13 Apr 2024 12:37:03 -0400


SRM (0.5.5-1)

  # Bug Fixes

  * Corrected automatic allocator device selection on multi-GPU setups. Thanks to @rafalz1978 for reporting and testing.
  * Resolved atomic hardware cursor bug on connector initialization, ensuring the cursor pixmap update.

  # Environment

  * Introduced SRM_FORCE_GL_ALLOCATION environment variable to enforce main memory buffer allocation with OpenGL instead of GBM.
  * Added SRM_ALLOCATOR_DEVICE environment variable to allow manual override of the automatic allocator device chosen by SRM.
  
-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Sat, 16 Mar 2024 17:26:14 -0300


SRM (0.5.4-1)

  # Bug Fixes

  * Introduced glFinish() calls after initializeGL() and resizeGL(), and glFlush() before eglSwapBuffers() to resolve an AMDGPU bug causing issues with buffer allocation and rendering command processing. Gratitude to @2xsaiko for reporting the problem and testing the applied fixes.
  
-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Fri, 08 Mar 2024 23:00:21 -0300


SRM (0.5.3-1)

  # Bug Fixes

  * Addressed Nouveau bug failing to allocate buffers with GBM, thanks to @okcomput3 for reporting the issue.

  # Building

  * Replaced `<sys/poll.h>` include with `<poll.h>` to eliminate warning when building on musl-based distros.

  # Internal Changes

  * Removed unused and experimental code for parallelized buffer copy.
  * EGL and OpenGL extensions are now printed when using logging level >= 4.
  
-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Sat, 24 Feb 2024 08:10:50 -0300


SRM (0.5.2-1)

  # Bug Fixes

  * Addressed bug in the atomic API causing issues with the refresh rate and hardware cursor plane updates, thanks to @2xsaiko for reporting the issue.
  
-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Sun, 11 Feb 2024 00:36:48 -0300


SRM (0.5.1-1)

  # Bug Fixes

  * Correct debugging message that incorrectly announces the absence of gamma correction support when, in fact, it is supported.
  * Fix segmentation fault occurring during the uninitialization of multiple connectors using the DUMB rendering mode. This issue arises from the handling of a pending page flip event after the connectors have been uninitialized.
  
-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Thu, 08 Feb 2024 12:23:21 -0300


SRM (0.5.0-1)

  # New Features

  * Introduced srmConnectorGetSubPixel() to retrieve the subpixel layout of a connected display.
  * Added support for gamma correction through srmConnectorGetGammaSize() and srmConnectorSetGamma().
  * Introduced srmConnectorSetBufferDamageBoxes() to set connector damage using Pixman-style boxes.
  * Introduced new functions for vsync control: srmConnectorHasVSyncControlSupport(), srmConnectorIsVSyncEnabled(), and srmConnectorEnableVSync().
    Note: Support for the atomic DRM API requires Linux >= 6.8.
  * Added srmConnectorGetRefreshRateLimit() and srmConnectorSetRefreshRateLimit() functions to get and set the refresh rate limit of a connector when vsync is disabled.
  * Added srmConnectorGetPresentationClock() and srmConnectorGetPresentationTime() functions for querying presentation time information of framebuffers.

  # Security Improvements

  * Fixed a security vulnerability where the hardware cursor plane pointer reference used by a connector was set to NULL
    before the connector was completely uninitialized. This could have caused crashes due to racing conditions between threads.
  * Enabled compiler warning messages for SRMLog functions to alert when the value types to print do not match the specified string format.
  * Addressed a memory leak issue by ensuring the proper release of the connector mode blob ID after modifying a connector's mode.

  # Documentation

  * Enhanced the Doxygen layout to showcase member declarations at the top of each page, accompanied by brief descriptions for improved readability.
  * Added a "Pre-built Binaries" section on the Downloads page.

  # Building

  * Transformed the SRMTypes.h header into a configuration file, including macros to access the library version statically during compilation.
  
-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Mon, 29 Jan 2024 19:01:59 -0300


SRM (0.4.0-1)

  # New Features

  * Introduced srmPlaneGetFormats() to retrieve the supported formats/modifiers of an SRMPlane.
  * Implemented srmDeviceGetGLExtensions() for checking the support of common OpenGL extensions.
  * Added srmCoreGetVersion() to retrieve the current SRM version.

  # Building

  * Incorporated soversion in meson.build, special thanks to @sudipm-mukherjee.
  
  # Internal Changes

  * Set rendering OpenGL contexts to high priority.
  * Removed GL_BGRA format dependency in DUMB and CPU render modes.
  * Reduced the frequency of calls to eglMakeCurrent() in all render modes.
  
-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Fri, 15 Dec 2023 20:24:22 -0300


SRM (0.3.2-2)

  # Building

  * Implemented pkgconfig in meson.build to enhance dependency management, with special thanks to @jengelh.
  
  # Documentation Changes

  * Refactored meson.build for clarity in the tutorial.
  * Added the missing math.h header to the tutorial.
  * Added ldconfig command in the build instructions of the downloads page.
  
-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Sat, 18 Nov 2023 22:30:15 -0300


SRM (0.3.2-1)

  # Bug Fixes

  * Fixed build failure on Debian GNU/Linux 11.3 ARM64 caused by incorrect inclusion 
    of drm_fourcc.h in SRMTypes.h, thanks to Thomas Curley - @tomus85.
  
  # Internal Changes

  * Enforced the use of the legacy API in srmRenderModeCommonInitCrtc().

  # Documentation Changes

  * Added the missing libseat-dev dependency to the Debian building instructions.
  * Expanded the tested hardware section to include AMD GPU.
  
-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Fri, 17 Nov 2023 23:59:26 -0300


SRM (0.3.1-1)

  # Internal Changes

  * Implemented caching for frequently used shared DRM formats/modifiers, enhancing access speed.
  * Introduced the O_CLOEXEC flag to DMA, UDEV, and EPOLL file descriptors to prevent unintentional leakage to child processes.

  # Bug Fixes

  * Fixed crash occurring when a connector is hotplugged during a session switch.
  * Rectified a flawed DRM atomic commit that was preventing the configuration of CRTCs during connectors initialization.
  
-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Sun, 12 Nov 2023 21:13:17 -0300


SRM (0.3.0-1)

  # Additions

  * SRMBuffer now supports external OpenGL ES 2.0 textures.
  * Introduce srmBufferGetTextureTarget() for retrieving the OpenGL texture target of an SRMBuffer.

  # Bug Fixes

  * Disabled ITSELF rendering mode on Nouveau in multi-GPU setups to prevent crashes in drivers that do not support multitreading.
  * Fixed tearing of the first rendered frame when triple buffering is enabled.
  
-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Tue, 17 Oct 2023 14:57:31 -0300


SRM (0.2.0-1)

  # Additions

  * Introduce srmCoreSuspend() and srmCoreResume() functions to manage libseat session switching.
  * Add srmConnectorGetRendererDevice() function to simplify the retrieval of SRMBuffer OpenGL texture IDs, 
    reducing the need for repetitive calls to srmDeviceGetRendererDevice(srmConnectorGetDevice(connector)).

  # Internal Changes

  * Transition from using poll to epoll for handling udev monitor events.

  # Bug Fixes

  * Udev hotplugging events are now queued while SRM is suspended and emitted upon restoration. 
    This resolves the issue where connectors failed to initialize when connected while the session was suspended.
  * Fixed the bug where connectors rendering threads did not block when suspended.
  
-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Tue, 03 Oct 2023 20:11:15 -0300


SRM (0.1.0-2)

  * Clean up meson.build, thanks to @godalming123
  * Fix srmCoreProccessMonitor > srmCoreProcessMonitor typo, thanks to @godalming123

-- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Sun, 24 Sep 2023 12:25:07 -0300


SRM (0.1.0-1)

  * First release.

 -- Eduardo Hopperdietzel <ehopperdietzel@gmail.com>  Tue, 05 Sep 2023 23:41:13 -0300
