Use the new EGL renderer for VAAPI by default

This commit is contained in:
Cameron Gutman 2020-06-13 20:21:54 -07:00
parent a446699c6c
commit 586a93d7aa
2 changed files with 16 additions and 9 deletions

View file

@ -449,6 +449,12 @@ VAAPIRenderer::canExportEGL() {
VASurfaceAttrib attrs[2];
int attributeCount = 0;
if (qgetenv("VAAPI_FORCE_DIRECT") == "1") {
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION,
"Using direct rendering due to environment variable");
return false;
}
// FFmpeg handles setting these quirk flags for us
if (!(vaDeviceContext->driver_quirks & AV_VAAPI_DRIVER_QUIRK_ATTRIB_MEMTYPE)) {
attrs[attributeCount].type = VASurfaceAttribMemoryType;

View file

@ -194,11 +194,6 @@ void FFmpegVideoDecoder::reset()
bool FFmpegVideoDecoder::createFrontendRenderer(PDECODER_PARAMETERS params)
{
if (m_BackendRenderer->isDirectRenderingSupported()) {
// The backend renderer can render to the display
m_FrontendRenderer = m_BackendRenderer;
}
else {
#ifdef HAVE_EGL
if (m_BackendRenderer->canExportEGL()) {
m_FrontendRenderer = new EGLRenderer(m_BackendRenderer);
@ -208,6 +203,12 @@ bool FFmpegVideoDecoder::createFrontendRenderer(PDECODER_PARAMETERS params)
delete m_FrontendRenderer;
}
#endif
if (m_BackendRenderer->isDirectRenderingSupported()) {
// The backend renderer can render to the display
m_FrontendRenderer = m_BackendRenderer;
}
else {
// The backend renderer cannot directly render to the display, so
// we will create an SDL renderer to draw the frames.
m_FrontendRenderer = new SdlRenderer();