diff --git a/src/media/video/v4l2/vaapi.cpp b/src/media/video/v4l2/vaapi.cpp
index 414da2342e36fef98f2bf8688982e04e9f560253..b222e8959a6ff9acc367f04f2588419a1880f1af 100644
--- a/src/media/video/v4l2/vaapi.cpp
+++ b/src/media/video/v4l2/vaapi.cpp
@@ -79,9 +79,11 @@ VaapiAccel::checkAvailability()
 {
     AVBufferRef* hardwareDeviceCtx = nullptr;
 #ifdef HAVE_VAAPI_ACCEL_DRM
-    // try all possible devices, use first one that works
     const std::string path = "/dev/dri/";
-    for (auto& entry : ring::fileutils::readDirectory(path)) {
+    auto files = ring::fileutils::readDirectory(path);
+    // renderD* is preferred over card*
+    std::sort(files.rbegin(), files.rend());
+    for (auto& entry : files) {
         std::string deviceName = path + entry;
         if (av_hwdevice_ctx_create(&hardwareDeviceCtx, AV_HWDEVICE_TYPE_VAAPI, deviceName.c_str(), nullptr, 0) >= 0) {
             deviceName_ = deviceName;