From 24af97a7d106c1ba7cd1fe607e427f728ab9cf9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Manuel=20J=C3=A1quez=20Leal?= Date: Thu, 8 Dec 2016 18:51:54 +0100 Subject: [PATCH] plugins: enable direct rendering with envvar Direct rendering (use vaDeriveImage rather than vaPutImage) has better performance in some Intel platforms (Haswell, for example) but in others (Skylake) is the opposite. In order to have some control, the patch enables the direct rendering through the environment variable GST_VAAPI_ENABLE_DIRECT_RENDERING. Also it seems to generating some problems with gallium/radeon backend. See bug #779642. https://bugzilla.gnome.org/show_bug.cgi?id=775848 --- gst/vaapi/gstvaapipluginbase.c | 5 ++++- gst/vaapi/gstvaapipluginbase.h | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/gst/vaapi/gstvaapipluginbase.c b/gst/vaapi/gstvaapipluginbase.c index a60498df4f..8c2b84aa50 100644 --- a/gst/vaapi/gstvaapipluginbase.c +++ b/gst/vaapi/gstvaapipluginbase.c @@ -247,6 +247,9 @@ gst_vaapi_plugin_base_init (GstVaapiPluginBase * plugin, if (!(GST_OBJECT_FLAGS (plugin) & GST_ELEMENT_FLAG_SINK)) plugin->srcpad = gst_element_get_static_pad (GST_ELEMENT (plugin), "src"); gst_video_info_init (&plugin->srcpad_info); + + plugin->enable_direct_rendering = + (g_getenv ("GST_VAAPI_ENABLE_DIRECT_RENDERING") != NULL); } void @@ -592,7 +595,7 @@ ensure_srcpad_allocator (GstVaapiPluginBase * plugin, GstVideoInfo * vinfo, gst_vaapi_dmabuf_allocator_new (plugin->display, vinfo, get_dmabuf_surface_allocation_flags (), GST_PAD_SRC); } - } else { + } else if (plugin->enable_direct_rendering) { usage_flag = GST_VAAPI_IMAGE_USAGE_FLAG_DIRECT_RENDER; GST_INFO_OBJECT (plugin, "enabling direct rendering in source allocator"); } diff --git a/gst/vaapi/gstvaapipluginbase.h b/gst/vaapi/gstvaapipluginbase.h index bfeeb1078e..3346ed40ae 100644 --- a/gst/vaapi/gstvaapipluginbase.h +++ b/gst/vaapi/gstvaapipluginbase.h @@ -149,6 +149,8 @@ struct _GstVaapiPluginBase GstAllocator *sinkpad_allocator; GstAllocator *srcpad_allocator; gboolean srcpad_can_dmabuf; + + gboolean enable_direct_rendering; }; struct _GstVaapiPluginBaseClass