[Mesa-dev] [PATCH v3 4/4] st/omx: add headless support
Emil Velikov
emil.l.velikov at gmail.com
Mon Nov 9 01:20:46 PST 2015
Hi Leo,
I'm glad that you've caught the places where I was day dreaming but
again, please don't just ignore suggestions. If you believe there is
something wrong with them just say so (as you did with
debug_get_options).
On 6 November 2015 at 18:43, Leo Liu <leo.liu at amd.com> wrote:
> This will allow dec/enc/transcode without X
>
> v2: -use env override even with X,
> -use loader_open_device instead of open
> v3: -cleanup
>
> Signed-off-by: Leo Liu <leo.liu at amd.com>
> Reviewed-by: Christian König <christian.koenig at amd.com>
> ---
> src/gallium/state_trackers/omx/entrypoint.c | 45 ++++++++++++++++++++++-------
> 1 file changed, 35 insertions(+), 10 deletions(-)
>
> diff --git a/src/gallium/state_trackers/omx/entrypoint.c b/src/gallium/state_trackers/omx/entrypoint.c
> index a765666..7df90b1 100644
> --- a/src/gallium/state_trackers/omx/entrypoint.c
> +++ b/src/gallium/state_trackers/omx/entrypoint.c
> @@ -38,6 +38,7 @@
>
> #include "os/os_thread.h"
> #include "util/u_memory.h"
> +#include "loader/loader.h"
>
> #include "entrypoint.h"
> #include "vid_dec.h"
> @@ -47,6 +48,8 @@ pipe_static_mutex(omx_lock);
> static Display *omx_display = NULL;
> static struct vl_screen *omx_screen = NULL;
> static unsigned omx_usecount = 0;
> +static const char *omx_render_node = NULL;
> +static int drm_fd;
>
> int omx_component_library_Setup(stLoaderComponentType **stComponents)
> {
> @@ -73,18 +76,30 @@ struct vl_screen *omx_get_screen(void)
> pipe_mutex_lock(omx_lock);
>
> if (!omx_display) {
> - omx_display = XOpenDisplay(NULL);
> - if (!omx_display) {
> - pipe_mutex_unlock(omx_lock);
> - return NULL;
> + omx_render_node = debug_get_option("OMX_RENDER_NODE", NULL);
> + if (!omx_render_node) {
> + omx_display = XOpenDisplay(NULL);
> + if (!omx_display)
> + goto error;
> }
> }
>
> if (!omx_screen) {
> - omx_screen = vl_screen_create(omx_display, 0);
> - if (!omx_screen) {
> - pipe_mutex_unlock(omx_lock);
> - return NULL;
> + if (omx_render_node) {
> + drm_fd = loader_open_device(omx_render_node);
> + if (drm_fd < 0)
> + goto error;
> + omx_screen = vl_drm_screen_create(drm_fd);
> + if (!omx_screen) {
> + close(drm_fd);
> + goto error;
> + }
> + } else {
> + omx_screen = vl_screen_create(omx_display, 0);
> + if (!omx_screen) {
> + XCloseDisplay(omx_display);
> + goto error;
> + }
> }
> }
>
This whole hunk is backwards in so many ways, that I've decided to
respin your patch ... yet you didn't really wait :-\
I'll send the fixes as a separate patch.
-Emil
P.S. Patience is a virtue.
More information about the mesa-dev
mailing list