-
-
Notifications
You must be signed in to change notification settings - Fork 5
/
CHANGES
446 lines (238 loc) · 16.4 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
SRM (0.11.0-1)
# License
* Updated license to LGPLv2.1.
# API Additions
* srmConnectorGetCurrentBufferAge: Retrieves the age of the current buffer according to the [EGL_EXT_buffer_age](https://registry.khronos.org/EGL/extensions/EXT/EGL_EXT_buffer_age.txt) extension specification.
* srmBufferWrite2(Begin/Update/End): An alternative to srmBufferWrite() that allows multiple texture updates without issuing an immediate internal synchronization.
-- Eduardo Hopperdietzel <[email protected]> Sun, 08 Dec 2024 20:12:27 -0300
SRM (0.10.0-1)
# API Additions
* srmConnectorGetSerial: Retrieves the serial number of a connected display.
-- Eduardo Hopperdietzel <[email protected]> Mon, 11 Nov 2024 10:47:07 -0300
SRM (0.9.0-1)
# API Additions
* srmConnectorIsNonDesktop: Checks if a connector is not intended for desktop usage such as VR headsets.
* srmDeviceSetUserData and srmDeviceGetUserData.
# Packaging
* Added a new Arch AUR (devel branch) to the downloads page. Thanks @kingdomkind!
-- Eduardo Hopperdietzel <[email protected]> Thu, 07 Nov 2024 00:28:01 -0300
SRM (0.8.0-2)
# Packaging
* Added official Fedora COPR link to the downloads page.
-- Eduardo Hopperdietzel <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> Sun, 24 Sep 2023 12:25:07 -0300
SRM (0.1.0-1)
* First release.
-- Eduardo Hopperdietzel <[email protected]> Tue, 05 Sep 2023 23:41:13 -0300