diff options
author | Emil Velikov <[email protected]> | 2017-05-02 17:53:17 +0100 |
---|---|---|
committer | Juan A. Suarez Romero <[email protected]> | 2017-05-31 22:32:03 +0200 |
commit | 1e8e12e09c228ce7471a99c85f1df6bbb0976fac (patch) | |
tree | 4a8e19ca491933a4dd52a36c69a33e2218a13bc4 /src/gallium | |
parent | 023b1da8c0ce8b399e94edf57734f1ce5b2623fc (diff) |
auxiliary/vl: use vl_*_screen_create stubs when building w/o platform
Provide a dummy stub when the user has opted w/o said platform, thus
we can build the binaries without unnecessarily requiring X11/other
headers.
In order to avoid build and link-time issues, we remove the HAVE_DRI3
guards in the VA and VDPAU state-trackers.
With this change st/va will return VA_STATUS_ERROR_ALLOCATION_FAILED
instead of VA_STATUS_ERROR_UNIMPLEMENTED. That is fine since upstream
users of libva such as vlc and mpv do little error checking, let
alone distinguish between the two.
Cc: Leo Liu <[email protected]>
Cc: Guttula, Suresh <[email protected]>
Cc: [email protected]
Cc: Christian König <[email protected]>
Signed-off-by: Emil Velikov <[email protected]>
(cherry picked from commit 369e5dd939b4af6c653d6cbbe9be257a9c2c950e)
Signed-off-by: Juan A. Suarez Romero <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/auxiliary/Makefile.am | 19 | ||||
-rw-r--r-- | src/gallium/auxiliary/Makefile.sources | 10 | ||||
-rw-r--r-- | src/gallium/auxiliary/vl/vl_winsys.h | 21 | ||||
-rw-r--r-- | src/gallium/state_trackers/va/context.c | 2 | ||||
-rw-r--r-- | src/gallium/state_trackers/vdpau/device.c | 2 |
5 files changed, 35 insertions, 19 deletions
diff --git a/src/gallium/auxiliary/Makefile.am b/src/gallium/auxiliary/Makefile.am index e25e31b89ea..a64ead28e32 100644 --- a/src/gallium/auxiliary/Makefile.am +++ b/src/gallium/auxiliary/Makefile.am @@ -88,23 +88,24 @@ if NEED_GALLIUM_VL_WINSYS noinst_LTLIBRARIES += libgalliumvlwinsys.la -libgalliumvlwinsys_la_CFLAGS = \ - $(COMMON_VL_CFLAGS) +libgalliumvlwinsys_la_CFLAGS = $(COMMON_VL_CFLAGS) +libgalliumvlwinsys_la_SOURCES = $(VL_WINSYS_SOURCES) -libgalliumvlwinsys_la_SOURCES = \ - $(VL_WINSYS_SOURCES) +if HAVE_PLATFORM_X11 +libgalliumvlwinsys_la_SOURCES += $(VL_WINSYS_DRI2_SOURCES) if HAVE_DRI3 - -libgalliumvlwinsys_la_SOURCES += \ - $(VL_WINSYS_DRI3_SOURCES) - +libgalliumvlwinsys_la_SOURCES += $(VL_WINSYS_DRI3_SOURCES) endif - endif +if HAVE_PLATFORM_DRM +libgalliumvlwinsys_la_SOURCES += $(VL_WINSYS_DRM_SOURCES) endif +endif # NEED_GALLIUM_VL_WINSYS +endif # NEED_GALLIUM_VL + EXTRA_DIST = \ SConscript \ indices/u_indices.c \ diff --git a/src/gallium/auxiliary/Makefile.sources b/src/gallium/auxiliary/Makefile.sources index c3a3af9fbca..192f8b3d164 100644 --- a/src/gallium/auxiliary/Makefile.sources +++ b/src/gallium/auxiliary/Makefile.sources @@ -345,18 +345,22 @@ VL_SOURCES := \ vl/vl_video_buffer.c \ vl/vl_video_buffer.h \ vl/vl_vlc.h \ - vl/vl_winsys.h \ vl/vl_zscan.c \ vl/vl_zscan.h # XXX: Nuke this as our dri targets no longer depend on VL. VL_WINSYS_SOURCES := \ - vl/vl_winsys_dri.c \ - vl/vl_winsys_drm.c + vl/vl_winsys.h + +VL_WINSYS_DRI2_SOURCES := \ + vl/vl_winsys_dri.c VL_WINSYS_DRI3_SOURCES := \ vl/vl_winsys_dri3.c +VL_WINSYS_DRM_SOURCES := \ + vl/vl_winsys_drm.c + VL_STUB_SOURCES := \ vl/vl_stubs.c diff --git a/src/gallium/auxiliary/vl/vl_winsys.h b/src/gallium/auxiliary/vl/vl_winsys.h index e1f9b274fcc..77277cefe8b 100644 --- a/src/gallium/auxiliary/vl/vl_winsys.h +++ b/src/gallium/auxiliary/vl/vl_winsys.h @@ -32,7 +32,9 @@ #ifndef vl_winsys_h #define vl_winsys_h +#ifdef HAVE_X11_PLATFORM #include <X11/Xlib.h> +#endif #include "pipe/p_defines.h" #include "pipe/p_format.h" @@ -68,15 +70,28 @@ struct vl_screen struct pipe_loader_device *dev; }; +#ifdef HAVE_X11_PLATFORM struct vl_screen * vl_dri2_screen_create(Display *display, int screen); +#else +static inline struct vl_screen * +vl_dri2_screen_create(void *display, int screen) { return NULL; }; +#endif +#if defined(HAVE_X11_PLATFORM) && defined(HAVE_DRI3) struct vl_screen * -vl_drm_screen_create(int fd); +vl_dri3_screen_create(Display *display, int screen); +#else +static inline struct vl_screen * +vl_dri3_screen_create(void *display, int screen) { return NULL; }; +#endif -#if defined(HAVE_DRI3) +#ifdef HAVE_DRM_PLATFORM struct vl_screen * -vl_dri3_screen_create(Display *display, int screen); +vl_drm_screen_create(int fd); +#else +static inline struct vl_screen * +vl_drm_screen_create(int fd) { return NULL; }; #endif #endif diff --git a/src/gallium/state_trackers/va/context.c b/src/gallium/state_trackers/va/context.c index 4224ed7f048..5159fceac91 100644 --- a/src/gallium/state_trackers/va/context.c +++ b/src/gallium/state_trackers/va/context.c @@ -118,9 +118,7 @@ VA_DRIVER_INIT_FUNC(VADriverContextP ctx) return VA_STATUS_ERROR_UNIMPLEMENTED; case VA_DISPLAY_GLX: case VA_DISPLAY_X11: -#if defined(HAVE_DRI3) drv->vscreen = vl_dri3_screen_create(ctx->native_dpy, ctx->x11_screen); -#endif if (!drv->vscreen) drv->vscreen = vl_dri2_screen_create(ctx->native_dpy, ctx->x11_screen); if (!drv->vscreen) diff --git a/src/gallium/state_trackers/vdpau/device.c b/src/gallium/state_trackers/vdpau/device.c index 3ae3da3be1d..eae9f04ee10 100644 --- a/src/gallium/state_trackers/vdpau/device.c +++ b/src/gallium/state_trackers/vdpau/device.c @@ -63,9 +63,7 @@ vdp_imp_device_create_x11(Display *display, int screen, VdpDevice *device, pipe_reference_init(&dev->reference, 1); -#if defined(HAVE_DRI3) dev->vscreen = vl_dri3_screen_create(display, screen); -#endif if (!dev->vscreen) dev->vscreen = vl_dri2_screen_create(display, screen); if (!dev->vscreen) { |