diff --git a/.travis.yml b/.travis.yml index 311177b25cd..4821b52e49a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -111,3 +111,31 @@ script: make -j8 - ccache -s - ccache -z + +jobs: + include: + - os: linux + - os: freebsd + compiler: clang + before_install: + - sudo pkg install -y meson pkgconf libdrm libXext libXfixes wayland + - sudo pkg install -y -x '^mesa($|-libs)' + install: + - sudo ln -sf /usr/local/libdata/pkgconfig /usr/local/lib/ + - git clone https://github.com/intel/gmmlib.git + - | # Workaround until https://github.com/intel/gmmlib/pull/68 is merged + if ! fgrep -q freebsd gmmlib/.travis.yml; then + (cd gmmlib && git fetch origin pull/68/head:freebsd && git checkout freebsd) + fi + - (cd gmmlib && cmake -B _build -G Ninja && cmake --build _build && sudo cmake --install _build) + - git clone https://github.com/intel/libva.git + - (cd libva && meson _build && meson compile -C _build && sudo meson install -C _build) + script: + - ccache -s + - ccache -z + - cmake -B _build -G Ninja + -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache + -DBUILD_TYPE=Release -DBUILD_CMRTLIB=OFF -DMEDIA_RUN_TEST_SUITE=OFF + - cmake --build _build + - ccache -s + - ccache -z diff --git a/cmrtlib/linux/CMakeLists.txt b/cmrtlib/linux/CMakeLists.txt index b066138d9df..c8f7e74f87f 100644 --- a/cmrtlib/linux/CMakeLists.txt +++ b/cmrtlib/linux/CMakeLists.txt @@ -101,7 +101,7 @@ set(CMRT_VERSION ${CMRT_VERSION_MAJOR}.${CMRT_VERSION_MINOR}.${CMRT_VERSION_PATC set_target_properties(igfxcmrt PROPERTIES VERSION ${CMRT_VERSION}) set_target_properties(igfxcmrt PROPERTIES SOVERSION ${CMRT_VERSION_MAJOR}) -target_link_libraries( igfxcmrt dl va rt ${GCC_SECURE_LINK_FLAGS}) +target_link_libraries( igfxcmrt ${CMAKE_DL_LIBS} va rt ${GCC_SECURE_LINK_FLAGS}) include(GNUInstallDirs) diff --git a/cmrtlib/linux/hardware/drm_device.h b/cmrtlib/linux/hardware/drm_device.h index 99f330e6743..16ff435764f 100644 --- a/cmrtlib/linux/hardware/drm_device.h +++ b/cmrtlib/linux/hardware/drm_device.h @@ -39,21 +39,20 @@ #include #include #include -#include // +#include #include #define stat_t struct stat #include #include #include -#ifdef MAJOR_IN_MKDEV +#ifdef __sun //#ifdef MAJOR_IN_MKDEV #include #endif -#ifdef MAJOR_IN_SYSMACROS +#if defined(__GLIBC__) || defined(__linux__) //#ifdef MAJOR_IN_SYSMACROS #include #endif #include #include -#include #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) @@ -125,7 +124,7 @@ typedef void *drmAddress, **drmAddressPtr; /**< For mapped regions */ #define MAX3( A, B, C ) ((A) > (B) ? MAX2(A, C) : MAX2(B, C)) #define __align_mask(value, mask) (((value) + (mask)) & ~(mask)) -#define ALIGN_CEIL(value, alignment) __align_mask(value, (__typeof__(value))((alignment) - 1)) +#define ALIGN(value, alignment) __align_mask(value, (__typeof__(value))((alignment) - 1)) #define DRM_PLATFORM_DEVICE_NAME_LEN 512 typedef struct _drmPciBusInfo { @@ -231,21 +230,6 @@ drm_device_validate_flags(uint32_t flags) return (flags & ~DRM_DEVICE_GET_PCI_REVISION); } -static bool -drm_device_has_rdev(drmDevicePtr device, dev_t find_rdev) -{ - struct stat sbuf; - - for (int i = 0; i < DRM_NODE_MAX; i++) { - if (device->available_nodes & 1 << i) { - if (stat(device->nodes[i], &sbuf) == 0 && - sbuf.st_rdev == find_rdev) - return true; - } - } - return false; -} - static int drmGetMaxNodeName(void) { return sizeof(DRM_DIR_NAME) + @@ -305,7 +289,7 @@ static drmDevicePtr drmDeviceAlloc(unsigned int type, const char *node, unsigned int i; char *ptr; - max_node_length = ALIGN_CEIL(drmGetMaxNodeName(), sizeof(void *)); + max_node_length = ALIGN(drmGetMaxNodeName(), sizeof(void *)); extra = DRM_NODE_MAX * (sizeof(void *) + max_node_length); @@ -1205,105 +1189,6 @@ int drmGetDevices(drmDevicePtr devices[], int max_devices) return drmGetDevices2(DRM_DEVICE_GET_PCI_REVISION, devices, max_devices); } -/** - * Get information about the opened drm device - * - * \param fd file descriptor of the drm device - * \param flags feature/behaviour bitmask - * \param device the address of a drmDevicePtr where the information - * will be allocated in stored - * - * \return zero on success, negative error code otherwise. - * - * \note Unlike drmGetDevice it does not retrieve the pci device revision field - * unless the DRM_DEVICE_GET_PCI_REVISION \p flag is set. - */ -int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr *device) -{ - drmDevicePtr local_devices[MAX_DRM_NODES]; - drmDevicePtr d; - DIR *sysdir; - struct dirent *dent; - struct stat sbuf; - int subsystem_type; - int maj, min; - int ret, i, node_count; - dev_t find_rdev; - - if (drm_device_validate_flags(flags)) - return -EINVAL; - - if (fd == -1 || device == NULL) - return -EINVAL; - - if (fstat(fd, &sbuf)) - return -errno; - - find_rdev = sbuf.st_rdev; - maj = major(sbuf.st_rdev); - min = minor(sbuf.st_rdev); - - if (!drmNodeIsDRM(maj, min) || !S_ISCHR(sbuf.st_mode)) - return -EINVAL; - - subsystem_type = drmParseSubsystemType(maj, min); - if (subsystem_type < 0) - return subsystem_type; - - sysdir = opendir(DRM_DIR_NAME); - if (!sysdir) - return -errno; - - i = 0; - while ((dent = readdir(sysdir))) { - ret = process_device(&d, dent->d_name, subsystem_type, true, flags); - if (ret) - continue; - - if (i >= MAX_DRM_NODES) { - fprintf(stderr, "More than %d drm nodes detected. " - "Please report a bug - that should not happen.\n" - "Skipping extra nodes\n", MAX_DRM_NODES); - break; - } - local_devices[i] = d; - i++; - } - node_count = i; - - drmFoldDuplicatedDevices(local_devices, node_count); - - *device = NULL; - - for (i = 0; i < node_count; i++) { - if (!local_devices[i]) - continue; - - if (drm_device_has_rdev(local_devices[i], find_rdev)) - *device = local_devices[i]; - else - drmFreeDevice(&local_devices[i]); - } - - closedir(sysdir); - if (*device == NULL) - return -ENODEV; - return 0; -} - -/** - * Get information about the opened drm device - * - * \param fd file descriptor of the drm device - * \param device the address of a drmDevicePtr where the information - * will be allocated in stored - * - * \return zero on success, negative error code otherwise. - */ -int drmGetDevice(int fd, drmDevicePtr *device) -{ - return drmGetDevice2(fd, DRM_DEVICE_GET_PCI_REVISION, device); -} static int32_t GetRendererFileDescriptor(char * drm_node) { diff --git a/cmrtlib/linux/share/cm_def_os.h b/cmrtlib/linux/share/cm_def_os.h index 9fe41bc33cc..eae77df943b 100644 --- a/cmrtlib/linux/share/cm_def_os.h +++ b/cmrtlib/linux/share/cm_def_os.h @@ -32,15 +32,15 @@ #define Display unsigned int #endif +#include #include #include "pthread.h" -#include //////////////////////////////////////////////////////////////////////////////////// // MS-specific defines/typedefs, which are absent under Linux but still used //////////////////////////////////////////////////////////////////////////////////// -#define _aligned_malloc(size, alignment) memalign(alignment, size) +#define _aligned_malloc(size, alignment) aligned_alloc(alignment, size) #define _aligned_free(ptr) free(ptr) typedef uint8_t BOOLEAN, *PBOOLEAN; //////////////////////////////////////////////////////////////////////////////////// @@ -101,7 +101,7 @@ typedef enum _VACMTEXTUREFILTERTYPE { inline void * CM_ALIGNED_MALLOC(size_t size, size_t alignment) { - return memalign(alignment, size); + return aligned_alloc(alignment, size); } inline void CM_ALIGNED_FREE(void * memory) diff --git a/cmrtlib/linux/share/cm_rt_def_os.h b/cmrtlib/linux/share/cm_rt_def_os.h index b9f15f4bb86..8d6baee49c4 100644 --- a/cmrtlib/linux/share/cm_rt_def_os.h +++ b/cmrtlib/linux/share/cm_rt_def_os.h @@ -36,7 +36,6 @@ #include #include #include -#include #include #include #include @@ -175,7 +174,7 @@ template<> inline const char * CM_TYPE_NAME_UNMANGLED() { return "double inline void * CM_ALIGNED_MALLOC(size_t size, size_t alignment) { - return memalign(alignment, size); + return aligned_alloc(alignment, size); } inline void CM_ALIGNED_FREE(void * memory) diff --git a/media_driver/agnostic/ult/cm/buffer_up_test.cpp b/media_driver/agnostic/ult/cm/buffer_up_test.cpp index 67982c2d467..515bc115110 100644 --- a/media_driver/agnostic/ult/cm/buffer_up_test.cpp +++ b/media_driver/agnostic/ult/cm/buffer_up_test.cpp @@ -21,7 +21,6 @@ */ #include "cm_test.h" -#include class BufferUPTest: public CmTest { diff --git a/media_driver/cmake/linux/media_compile_flags_linux.cmake b/media_driver/cmake/linux/media_compile_flags_linux.cmake index 0a211fdc7ea..e307317aeef 100755 --- a/media_driver/cmake/linux/media_compile_flags_linux.cmake +++ b/media_driver/cmake/linux/media_compile_flags_linux.cmake @@ -91,7 +91,6 @@ endif() if(NOT ${PLATFORM} STREQUAL "android") set(MEDIA_COMPILER_FLAGS_COMMON ${MEDIA_COMPILER_FLAGS_COMMON} - -D__linux__ -fno-tree-pre -fPIC -Wl,--no-as-needed diff --git a/media_driver/linux/common/cm/hal/cm_innerdef_os.h b/media_driver/linux/common/cm/hal/cm_innerdef_os.h index ecc5f7aef15..03a55246967 100644 --- a/media_driver/linux/common/cm/hal/cm_innerdef_os.h +++ b/media_driver/linux/common/cm/hal/cm_innerdef_os.h @@ -36,7 +36,15 @@ #include "mos_os.h" #include "media_libva_common.h" #include +#if defined(__linux__) #include +#elif defined(__DragonFly__) || defined(__FreeBSD__) +#include +#elif defined(__NetBSD__) +#include +#elif defined(__sun) +#include +#endif #include @@ -86,5 +94,18 @@ inline void GetLocalTime(PSYSTEMTIME psystime) #endif #define CmGetCurProcessId() getpid() +#if defined(__linux__) #define CmGetCurThreadId() syscall(SYS_gettid) +#elif defined(__DragonFly__) || defined(__FreeBSD__) +#define CmGetCurThreadId() pthread_getthreadid_np() +#elif defined(__NetBSD__) +#define CmGetCurThreadId() _lwp_self() +#elif defined(__OpenBSD__) +#define CmGetCurThreadId() getthrid() +#elif defined(__sun) +#define CmGetCurThreadId() thr_self() +#else +#warning "Cannot get kernel thread identifier on this platform." +#define CmGetCurThreadId() (uintptr_t)pthread_self() +#endif diff --git a/media_driver/linux/common/cm/hal/osservice/cm_mem_os.h b/media_driver/linux/common/cm/hal/osservice/cm_mem_os.h index e911e4e7e40..fb95bf299c8 100644 --- a/media_driver/linux/common/cm/hal/osservice/cm_mem_os.h +++ b/media_driver/linux/common/cm/hal/osservice/cm_mem_os.h @@ -30,6 +30,9 @@ #include typedef uintptr_t UINT_PTR; +#ifdef __fastcall + #undef __fastcall +#endif #define __fastcall #define __noop 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 f6dba1902f3..d26deabd246 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; @@ -64,8 +97,8 @@ static int32_t DdiDecode_GetDisplayInfo(VADriverContextP ctx) vsinfo.xres = 0; vsinfo.yres = 0; - fd = open("/dev/graphics/fb0",O_RDONLY); - if(fd >= 0) + 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 f52c6e65c2c..f706b0cda2e 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" diff --git a/media_driver/linux/ult/libdrm_mock/xf86drm_mock.c b/media_driver/linux/ult/libdrm_mock/xf86drm_mock.c index 49d68b7cdba..5b97603a621 100644 --- a/media_driver/linux/ult/libdrm_mock/xf86drm_mock.c +++ b/media_driver/linux/ult/libdrm_mock/xf86drm_mock.c @@ -47,16 +47,17 @@ #include #include #include -#include #include #define stat_t struct stat #include #include #include -#ifdef HAVE_SYS_MKDEV_H +#ifdef __sun //#ifdef MAJOR_IN_MKDEV # include /* defines major(), minor(), and makedev() on Solaris */ #endif -#include +#if defined(__GLIBC__) || defined(__linux__) //#ifdef MAJOR_IN_SYSMACROS +# include +#endif /* Not all systems have MAP_FAILED defined */ #ifndef MAP_FAILED diff --git a/media_driver/linux/ult/ult_app/CMakeLists.txt b/media_driver/linux/ult/ult_app/CMakeLists.txt index 1b24fed7fc5..c5884120490 100644 --- a/media_driver/linux/ult/ult_app/CMakeLists.txt +++ b/media_driver/linux/ult/ult_app/CMakeLists.txt @@ -59,7 +59,7 @@ else () endif () add_executable(devult ${SOURCES}) -target_link_libraries(devult libgtest libdl.so) +target_link_libraries(devult libgtest ${CMAKE_DL_LIBS}) target_include_directories(devult BEFORE PRIVATE ${SOFTLET_MOS_PREPEND_INCLUDE_DIRS_} ${MOS_PUBLIC_INCLUDE_DIRS_} ${SOFTLET_MOS_PUBLIC_INCLUDE_DIRS_} @@ -68,6 +68,7 @@ target_include_directories(devult BEFORE PRIVATE ${COMMON_CP_DIRECTORIES_} ${SOFTLET_DDI_PUBLIC_INCLUDE_DIRS_} ${SOFTLET_MHW_PRIVATE_INCLUDE_DIRS_} ) + if (DEFINED BYPASS_MEDIA_ULT AND "${BYPASS_MEDIA_ULT}" STREQUAL "yes") # must explictly pass along BYPASS_MEDIA_ULT as yes then could bypass the running of media ult message("-- media -- BYPASS_MEDIA_ULT = ${BYPASS_MEDIA_ULT}") diff --git a/media_driver/linux/ult/ult_app/cm/cm_test.h b/media_driver/linux/ult/ult_app/cm/cm_test.h index b6ab1784953..e05ffdab138 100644 --- a/media_driver/linux/ult/ult_app/cm/cm_test.h +++ b/media_driver/linux/ult/ult_app/cm/cm_test.h @@ -23,7 +23,6 @@ #ifndef MEDIADRIVER_LINUX_CODECHAL_ULT_ULTAPP_CMTEST_H_ #define MEDIADRIVER_LINUX_CODECHAL_ULT_ULTAPP_CMTEST_H_ -#include #include "gtest/gtest.h" #include "mock_device.h" #include "../memory_leak_detector.h" @@ -34,7 +33,7 @@ class CmTest: public testing::Test { public: static void* AllocateAlignedMemory(size_t size, size_t alignment) - { return memalign(alignment, size); } + { return aligned_alloc(alignment, size); } static void FreeAlignedMemory(void *memory) { free(memory); } diff --git a/media_driver/media_top_cmake.cmake b/media_driver/media_top_cmake.cmake index 7a26445715a..f21de79931a 100755 --- a/media_driver/media_top_cmake.cmake +++ b/media_driver/media_top_cmake.cmake @@ -672,7 +672,7 @@ if (NOT DEFINED INCLUDED_LIBS OR "${INCLUDED_LIBS}" STREQUAL "") endif() target_compile_options( ${LIB_NAME} PUBLIC ${LIBGMM_CFLAGS_OTHER}) - target_link_libraries ( ${LIB_NAME} ${LIBGMM_LIBRARIES}) + target_link_libraries ( ${LIB_NAME} ${LIBGMM_LIBRARIES} drm) include(${MEDIA_EXT_CMAKE}/ext/media_feature_include_ext.cmake OPTIONAL) diff --git a/media_softlet/agnostic/common/os/mos_utilities_next.cpp b/media_softlet/agnostic/common/os/mos_utilities_next.cpp index ec780d9c713..91e7846173a 100644 --- a/media_softlet/agnostic/common/os/mos_utilities_next.cpp +++ b/media_softlet/agnostic/common/os/mos_utilities_next.cpp @@ -958,4 +958,4 @@ std::string PerfUtility::getDashString(uint32_t num) ss.fill('-'); ss << std::left << "" << std::endl; return ss.str(); -} \ No newline at end of file +} diff --git a/media_softlet/linux/common/codec/ddi/dec/ddi_decode_functions.cpp b/media_softlet/linux/common/codec/ddi/dec/ddi_decode_functions.cpp index 4455111a7ae..1d9be4b2257 100644 --- a/media_softlet/linux/common/codec/ddi/dec/ddi_decode_functions.cpp +++ b/media_softlet/linux/common/codec/ddi/dec/ddi_decode_functions.cpp @@ -26,7 +26,39 @@ #include #include +#if defined(__linux__) #include +#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 #include "ddi_decode_functions.h" #include "media_libva_util_next.h" diff --git a/media_softlet/linux/common/os/i915/include/mos_bufmgr_priv.h b/media_softlet/linux/common/os/i915/include/mos_bufmgr_priv.h index 04f543946b6..fb4a4ab500e 100644 --- a/media_softlet/linux/common/os/i915/include/mos_bufmgr_priv.h +++ b/media_softlet/linux/common/os/i915/include/mos_bufmgr_priv.h @@ -425,6 +425,10 @@ struct mos_bufmgr { uint64_t platform_information = 0; }; +#ifdef ALIGN +/* via on FreeBSD also defines ALIGN */ +#undef ALIGN +#endif #define ALIGN(value, alignment) ((value + alignment - 1) & ~(alignment - 1)) #define ROUND_UP_TO(x, y) (((x) + (y) - 1) / (y) * (y)) #define ROUND_UP_TO_MB(x) ROUND_UP_TO((x), 1024*1024) diff --git a/media_softlet/linux/common/os/i915/include/xf86drm.h b/media_softlet/linux/common/os/i915/include/xf86drm.h index 1a27858a497..6ff1ba8a000 100644 --- a/media_softlet/linux/common/os/i915/include/xf86drm.h +++ b/media_softlet/linux/common/os/i915/include/xf86drm.h @@ -713,6 +713,39 @@ extern char *drmGetRenderDeviceNameFromFd(int fd); #define DRM_BUS_PCI 0 +typedef struct _drmPciBusInfo { + uint16_t domain; + uint8_t bus; + uint8_t dev; + uint8_t func; +} drmPciBusInfo, *drmPciBusInfoPtr; + +typedef struct _drmPciDeviceInfo { + uint16_t vendor_id; + uint16_t device_id; + uint16_t subvendor_id; + uint16_t subdevice_id; + uint8_t revision_id; +} drmPciDeviceInfo, *drmPciDeviceInfoPtr; + +typedef struct _drmDevice { + char **nodes; /* DRM_NODE_MAX sized array */ + int available_nodes; /* DRM_NODE_* bitmask */ + int bustype; + union { + drmPciBusInfoPtr pci; + } businfo; + union { + drmPciDeviceInfoPtr pci; + } deviceinfo; +} drmDevice, *drmDevicePtr; + +extern int drmGetDevice(int fd, drmDevicePtr *device); +extern void drmFreeDevice(drmDevicePtr *device); + +extern int drmGetDevices(drmDevicePtr devices[], int max_devices); +extern void drmFreeDevices(drmDevicePtr devices[], int count); + #if defined(__cplusplus) } #endif diff --git a/media_softlet/linux/common/os/i915/xf86drm.c b/media_softlet/linux/common/os/i915/xf86drm.c index 9b2412c2d9d..996126e4ac8 100644 --- a/media_softlet/linux/common/os/i915/xf86drm.c +++ b/media_softlet/linux/common/os/i915/xf86drm.c @@ -47,15 +47,17 @@ #include #include #include -#include #include #define stat_t struct stat #include #include #include -#ifdef HAVE_SYS_MKDEV_H +#ifdef __sun //#ifdef MAJOR_IN_MKDEV # include /* defines major(), minor(), and makedev() on Solaris */ #endif +#if defined(__GLIBC__) || defined(__linux__) //#ifdef MAJOR_IN_SYSMACROS +# include +#endif /* Not all systems have MAP_FAILED defined */ #ifndef MAP_FAILED diff --git a/media_softlet/linux/common/os/linux_skuwa_debug.h b/media_softlet/linux/common/os/linux_skuwa_debug.h index 39c1676e2b2..e64b90bb4d4 100644 --- a/media_softlet/linux/common/os/linux_skuwa_debug.h +++ b/media_softlet/linux/common/os/linux_skuwa_debug.h @@ -35,7 +35,7 @@ #define DEVINFO_WARNING(msg) ALOGW(msg) #define DEVINFO_ERROR(msg) ALOGE(msg) -#elif defined(__linux__) // Linux libskuwa +#elif !defined(_WIN32) // Linux libskuwa #include #include diff --git a/media_softlet/linux/common/os/mos_interface.cpp b/media_softlet/linux/common/os/mos_interface.cpp index 65bdb699266..64abfd66be3 100644 --- a/media_softlet/linux/common/os/mos_interface.cpp +++ b/media_softlet/linux/common/os/mos_interface.cpp @@ -34,7 +34,7 @@ #include "mos_os_virtualengine_scalability_specific_next.h" #include "mos_graphicsresource_specific_next.h" #include "mos_bufmgr_priv.h" -#include "drm_device.h" +#include "xf86drm.h" #include "media_fourcc.h" #include "mos_oca_rtlog_mgr.h" diff --git a/media_softlet/linux/common/os/osservice/mos_utilities_specific.cpp b/media_softlet/linux/common/os/osservice/mos_utilities_specific.cpp index 96785e21ec1..1c207c5033f 100644 --- a/media_softlet/linux/common/os/osservice/mos_utilities_specific.cpp +++ b/media_softlet/linux/common/os/osservice/mos_utilities_specific.cpp @@ -2170,7 +2170,7 @@ uint32_t MosUtilities::MosGetThreadId( uint32_t MosUtilities::MosGetCurrentThreadId() { - return (uint32_t)pthread_self(); + return (uintptr_t)pthread_self(); } MOS_STATUS MosUtilities::MosWaitThread( diff --git a/media_softlet/linux/common/os/osservice/mos_utilities_specific.h b/media_softlet/linux/common/os/osservice/mos_utilities_specific.h index 946fc178bbe..5fa831c5958 100644 --- a/media_softlet/linux/common/os/osservice/mos_utilities_specific.h +++ b/media_softlet/linux/common/os/osservice/mos_utilities_specific.h @@ -27,7 +27,6 @@ #define __MOS_UTILITIES_SPECIFIC_H__ #include -#include #include "mos_defs.h" #include "media_class_trace.h" @@ -35,7 +34,7 @@ #define NOT_FOUND -1 -#define _aligned_malloc(size, alignment) memalign(alignment, size) +#define _aligned_malloc(size, alignment) aligned_alloc(alignment, size) #define _aligned_free(ptr) free(ptr) typedef void (*MOS_UserFeatureCallback)( void*, bool); diff --git a/media_softlet/media_top_cmake.cmake b/media_softlet/media_top_cmake.cmake index 3bf958235ae..3afe290d8a7 100644 --- a/media_softlet/media_top_cmake.cmake +++ b/media_softlet/media_top_cmake.cmake @@ -29,6 +29,15 @@ option (MEDIA_RUN_TEST_SUITE "run google test module after install" ON) include(${MEDIA_SOFTLET_CMAKE}/media_gen_flags.cmake) include(${MEDIA_SOFTLET_CMAKE}/media_feature_flags.cmake) +check_include_file_cxx("execinfo.h" HAVE_EXECINFO_H) +if(HAVE_EXECINFO_H) + target_compile_definitions(${LIB_NAME} PRIVATE HAVE_EXECINFO_H) +endif() + +check_library_exists(execinfo backtrace "" HAVE_LIBEXECINFO) +if(HAVE_LIBEXECINFO) + target_link_libraries (${LIB_NAME} PRIVATE execinfo) +endif() if(NOT DEFINED SKIP_GMM_CHECK) # checking dependencies