From acf5314930d3d95aafb76e49fa7791ff8d4b9088 Mon Sep 17 00:00:00 2001 From: Jan Beich Date: Sat, 11 Jan 2020 21:28:37 +0000 Subject: [PATCH] Get framebuffer resolution on more platforms media_driver/linux/common/codec/ddi/media_libva_decoder.cpp:48:10: fatal error: 'linux/fb.h' file not found #include ^~~~~~~~~~~~ media_driver/linux/common/codec/ddi/media_libva_decoder.cpp:55:43: error: variable has incomplete type 'struct fb_var_screeninfo' struct fb_var_screeninfo vsinfo; ^ media_driver/linux/common/codec/ddi/media_libva_decoder.cpp:62:22: error: use of undeclared identifier 'FBIOGET_VSCREENINFO' if(ioctl(fd, FBIOGET_VSCREENINFO, &vsinfo) < 0) ^ media_driver/linux/common/ddi/media_libva.cpp:39:10: fatal error: 'linux/fb.h' file not found #include ^~~~~~~~~~~~ --- .../common/codec/ddi/media_libva_decoder.cpp | 35 ++++++++++++++++++- media_driver/linux/common/ddi/media_libva.cpp | 2 -- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/media_driver/linux/common/codec/ddi/media_libva_decoder.cpp b/media_driver/linux/common/codec/ddi/media_libva_decoder.cpp index 07defcedf0..aee7a213ba 100755 --- a/media_driver/linux/common/codec/ddi/media_libva_decoder.cpp +++ b/media_driver/linux/common/codec/ddi/media_libva_decoder.cpp @@ -47,7 +47,40 @@ #include #endif +#if defined(__linux__) #include +#define DEFAULT_FBDEV "/dev/graphics/fb0" +#elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__sun) +#include +# if defined(__sun) +#define DEFAULT_FBDEV "/dev/fb" +# else +#define DEFAULT_FBDEV "/dev/ttyv0" +# endif +#define FBIOGET_VSCREENINFO FBIOGTYPE +#define fb_var_screeninfo fbtype +#define xres fb_width +#define yres fb_height +#elif defined(__NetBSD__) || defined(__OpenBSD__) +#include +# if defined(__OpenBSD__) +#define DEFAULT_FBDEV "/dev/ttyC0" +# else +#define DEFAULT_FBDEV "/dev/ttyE0" +# endif +#define FBIOGET_VSCREENINFO WSDISPLAYIO_GINFO +#define fb_var_screeninfo wsdisplay_fbinfo +#define xres width +#define yres height +#else +#warning "Cannot query framebuffer properties on this platform." +#define DEFAULT_FBDEV "/dev/fb0" +#define FBIOGET_VSCREENINFO 0 +struct fb_var_screeninfo { + uint32_t xres; + uint32_t yres; +}; +#endif typedef MediaDdiFactory DdiDecodeFactory; @@ -800,7 +833,7 @@ static int32_t DdiDecode_GetDisplayInfo(VADriverContextP ctx) vsinfo.xres = 0; vsinfo.yres = 0; - fd = open("/dev/graphics/fb0",O_RDONLY); + fd = open(DEFAULT_FBDEV,O_RDONLY); if(fd > 0) { if(ioctl(fd, FBIOGET_VSCREENINFO, &vsinfo) < 0) diff --git a/media_driver/linux/common/ddi/media_libva.cpp b/media_driver/linux/common/ddi/media_libva.cpp index 631e1751b6..50d3b39d08 100755 --- a/media_driver/linux/common/ddi/media_libva.cpp +++ b/media_driver/linux/common/ddi/media_libva.cpp @@ -36,8 +36,6 @@ #include #endif -#include - #include "media_libva.h" #include "media_libva_util.h"