Add option to select render device for VAAPI
This commit is contained in:
@@ -15,6 +15,7 @@ extern "C" {
|
||||
#include <libavutil/hwcontext_vaapi.h>
|
||||
}
|
||||
|
||||
#include "sunshine/config.h"
|
||||
#include "sunshine/main.h"
|
||||
#include "sunshine/platform/common.h"
|
||||
#include "sunshine/utility.h"
|
||||
@@ -347,7 +348,6 @@ private:
|
||||
|
||||
namespace platf {
|
||||
namespace egl {
|
||||
auto constexpr render_device = "/dev/dri/renderD129";
|
||||
|
||||
constexpr auto EGL_LINUX_DMA_BUF_EXT = 0x3270;
|
||||
constexpr auto EGL_LINUX_DRM_FOURCC_EXT = 0x3271;
|
||||
@@ -794,7 +794,9 @@ int vaapi_make_hwdevice_ctx(platf::hwdevice_t *base, AVBufferRef **hw_device_buf
|
||||
|
||||
va::display_t display { vaGetDisplayDRM(egl->file.el) };
|
||||
if(!display) {
|
||||
BOOST_LOG(error) << "Couldn't open a va display from DRM with device: "sv << platf::egl::render_device;
|
||||
auto render_device = config::video.adapter_name.empty() ? "/dev/dri/renderD128" : config::video.adapter_name.c_str();
|
||||
|
||||
BOOST_LOG(error) << "Couldn't open a va display from DRM with device: "sv << render_device;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -832,6 +834,7 @@ int vaapi_make_hwdevice_ctx(platf::hwdevice_t *base, AVBufferRef **hw_device_buf
|
||||
std::shared_ptr<platf::hwdevice_t> make_hwdevice() {
|
||||
auto egl = std::make_shared<egl_t>();
|
||||
|
||||
auto render_device = config::video.adapter_name.empty() ? "/dev/dri/renderD128" : config::video.adapter_name.c_str();
|
||||
if(egl->init(render_device)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
+3
-1
@@ -1486,7 +1486,9 @@ util::Either<buffer_t, int> vaapi_make_hwdevice_ctx(platf::hwdevice_t *base) {
|
||||
return hw_device_buf;
|
||||
}
|
||||
|
||||
auto status = av_hwdevice_ctx_create(&hw_device_buf, AV_HWDEVICE_TYPE_VAAPI, "/dev/dri/renderD129", nullptr, 0);
|
||||
auto render_device = config::video.adapter_name.empty() ? nullptr : config::video.adapter_name.c_str();
|
||||
|
||||
auto status = av_hwdevice_ctx_create(&hw_device_buf, AV_HWDEVICE_TYPE_VAAPI, render_device, nullptr, 0);
|
||||
if(status < 0) {
|
||||
char string[AV_ERROR_MAX_STRING_SIZE];
|
||||
BOOST_LOG(error) << "Failed to create a VAAPI device: "sv << av_make_error_string(string, AV_ERROR_MAX_STRING_SIZE, status);
|
||||
|
||||
Reference in New Issue
Block a user