Releases: elFarto/nvidia-vaapi-driver
Releases · elFarto/nvidia-vaapi-driver
v0.0.13
This release is mainly just to fix the issue with newer versions of FFmpeg passing a single surface rather than the actual amount.
What's Changed
- Fix memory issues by @akorb in #303
- vabackend: Treat surfaceCount == 1 the same as surfaceCount == 0 by @philipl in #295
- Unbreak build on FreeBSD < 14 by @jbeich in #291
- Update default backend in README.md by @nerijus in #290
- Update README.md - recent MPV versions can be used by @nerijus in #294
- Fix typo, add HEVC support description, add open gpu kernel info by @EiPiFun in #324
New Contributors
Full Changelog: v0.0.12...v0.0.13
v0.0.12
What's Changed
- Single buffer export by @elFarto in #262
- direct: Fix drm index loop condition by @antkir in #269
- Fix building with musl by @winterheart in #273
- Unbreak build on FreeBSD by @jbeich in #220
- src: Increase num_render_targets to 32 for Chromium by @antkir in #270
- Fix undefined reference to 'gettid' on CentOS 8 by @nerijus in #286
New Contributors
- @antkir made their first contribution in #269
- @jbeich made their first contribution in #220
- @nerijus made their first contribution in #286
Full Changelog: v0.0.11...v0.0.12
v0.0.11
What's Changed
- Fixed incompatibility with NVIDIA's 545.29.02 drivers.
- Use libva's driverdir path instead hardcoded by @winterheart in #221
- fix wrong slice params struct in func copyHEVCSliceData by @jrglinux in #230
- Fix check method for ffmpeg vaapi support by @q234rty in #232
- [README.md] Packaging status by @begin-theadventure in #238
- Bump actions/checkout from 3 to 4 by @dependabot in #242
- readme: update egl regression info by @crimist in #246
- Fix YUV444 10 and 12 bits by @thesword53 in #225
New Contributors
- @winterheart made their first contribution in #221
- @jrglinux made their first contribution in #230
- @q234rty made their first contribution in #232
- @begin-theadventure made their first contribution in #238
- @dependabot made their first contribution in #242
Full Changelog: v0.0.10...v0.0.11
v0.0.10
What's Changed
- Fix compatibility issue with direct backend and v535 beta drivers.
- Fix build on i686 using a cast by @kwizart in #189
- meson: Use pkgconfig to find the EGL dependency by @Conan-Kudo in #191
- Fix CUDA_ERROR_INVALID_CONTEXT from cuMemcpy2D by @thesword53 in #208
- Update README.md, AUR VCS package name by @Neurognostic in #203 and #204
- Update README.md, remind about ffmpeg by @lucasmr in #212
New Contributors
- @Conan-Kudo made their first contribution in #191
- @Neurognostic made their first contribution in #203
- @lucasmr made their first contribution in #212
Full Changelog: v0.0.9...v0.0.10
v0.0.9
What's Changed
- Support YUV444 on direct-backend by @thesword53 in #134
- docs: update yuv444 support and direct backend support table by @crimist in #144
- README: fix debian package link by @Fantu in #153
- Update README for vp9 support with apt by @lengau in #152
- Add fedora/rhel package location by @kwizart in #156
- AV-1 10bit fix in #157
- meson: properly check for libva, add libdrm dependency by @evelikov in #165
- av1: increment picParams->nNumSlices by @evelikov in #166
- Fix a bunch of warnings, add initial Github CI by @evelikov in #167
- Correct installable candidate package for
nv-codec-headers
package … by @Brainiarc7 in #172
New Contributors
- @thesword53 made their first contribution in #134
- @Fantu made their first contribution in #153
- @lengau made their first contribution in #152
- @kwizart made their first contribution in #156
- @evelikov made their first contribution in #165
- @Brainiarc7 made their first contribution in #172
Full Changelog: v0.0.8...v0.0.9
v0.0.8
What's New
- Direct Backend
The direct backend is a new selectable backend (via the NVD_BACKEND env. var) that that uses the NVIDIA kernel driver directly to allocate and export buffers, rather than using EGL. The EGL backend (which is still the default) was broken in the 525 driver series, so the use of the direct backend is necessary for decoding to work.
However, due to the use of the undocumented and unsupported NVIDIA API the kernel driver provides, it's likely that the direct backend could be broken by driver updates (with that said, the EGL backend has also just been broken by a driver update so... 🤷).
What's Changed
- Improved error checking. Previously we'd just exit when detecting a CUDA error, now we'll attempt to return an appropriate error code. This resolves the issue that unrelated applications that happen to init this library where crashing at start-up due to the aforementioned EGL backend breaking.
- Support 10/12 bit formats by @philipl in #120
- Use NVD_GPU to control which DRM node to open in direct backend mode by @philipl in #137
- Update documentation by @crimist in #133 and #140
New Contributors
Full Changelog: v0.0.7...v0.0.8
v0.0.7
What's Changed
- Fix for test.sh by @multiflexi in #94
- meson: Make gst-codecparser optional by @philipl in #100
- Added missing initialisation calls for mutexattr to fix random crash
- Check if surface has been used in a different context before use
New Contributors
- @multiflexi made their first contribution in #94
Full Changelog: v0.0.6...v0.0.7
v0.0.6
What's Changed
- Multi-threaded decode. In previous versions the final steps of decoding a frame would only be started when vaExportSurfaceHandle was called. This wasn't correct, and only worked because ffmpeg based applications (such as Firefox) call it every frame, however that isn't required by VA-API. This change moves the final steps to a separate thread that begins when vaEndPicture is called.
- Reworked GPU selection. We now use the the passed-in DRM fd to attempt to select the correct GPU to use. This can be overridden with the
NVD_GPU
environment variable which you can set to the id of the GPU you want to use. You can use thenvidia-smi
tool to find the id. - Added option to limit the maximum instances per process using the
NVD_MAX_INSTANCES
environment variable. This setting limits how many concurrent contexts are allow, which can limit the amount of memory that's used. Useful for GPUs with limited VRAM on video heavy websites. - Added missing libva dependency to build, and set the minimum required version to 2.8.0.
- Set EGL_SUPPORT_REUSE_NV to false when creating the EGLStream. This prevents NVIDIA's EGL library from buffering one of the frames, which could lead to the driver leaking that frame.
- Update README.md to remove mention of FF96 being in beta. by @AdamSzopa in #55
- meson: Add a wrap file for ff-nvcodec-headers by @nirbheek in #59
- Add alignment and remove static by @pobrn in #67
- vabackend: fix alignment of codecs by @pobrn in #72
- vabackend: retain section from linker garbage collection by @pobrn in #81
New Contributors
- @AdamSzopa made their first contribution in #55
- @nirbheek made their first contribution in #59
Full Changelog: v0.0.5...v0.0.6
v0.0.5
What's Changed
- AV1 support! This release adds support for decoding AV1 videos on 30-series NVIDIA cards. For use in Firefox, version 98+ is required. Thanks to @johnjohnlin, @Draghtnod, @struq, @philipl and @gageberz for all the testing they did.
- Reworked modeset check to ensure we always use the DRI render node, rather than the master node. Opening the master node causes a message to be logged to dmesg, which we want to avoid.
Full Changelog: v0.0.4...v0.0.5
v0.0.4
What's Changed
- Reworked surface export process. The previous surface export method (the key piece of code that made this library possible) only used two EGLImages to export finished frames to the client. Unfortunately this led to some weird artifacts where the wrong frame would end up in the EGLImage before the client used it. The export process has now been changed to have as many EGLImages as the client needs. This uses more memory, but fixes all the know visual glitches and has slightly less per-frame overhead.
- Better clean-up on terminate. Some EGLImages were being left in memory causing a memory leak.
- Improved surface allocation. Some clients don't provide a list of surfaces on context creation, so we need to take a guess at how many decode surfaces we need.
- Improved device checking. Check the DRM render node if available instead of the master node, as that can generate an error message in the kernel log.
- Added check for 16-bit surface support. We now check the driver to see if it has 16-bit surface support. Hopefully this will be added in a future NVIDIA driver version.
Full Changelog: v0.0.3...v0.0.4