diff options
Diffstat (limited to 'multimedia/cmrtlib')
-rw-r--r-- | multimedia/cmrtlib/Makefile | 5 | ||||
-rw-r--r-- | multimedia/cmrtlib/distinfo | 6 | ||||
-rw-r--r-- | multimedia/cmrtlib/files/patch-static-render-node | 224 |
3 files changed, 229 insertions, 6 deletions
diff --git a/multimedia/cmrtlib/Makefile b/multimedia/cmrtlib/Makefile index dc6787f479ec..5c078adfbcf0 100644 --- a/multimedia/cmrtlib/Makefile +++ b/multimedia/cmrtlib/Makefile @@ -2,8 +2,7 @@ PORTNAME= cmrtlib DISTVERSIONPREFIX= intel-media- -DISTVERSION= 19.4.0 -PORTREVISION= 1 +DISTVERSION= 20.1.pre4 CATEGORIES= multimedia MAINTAINER= jbeich@FreeBSD.org @@ -17,7 +16,7 @@ ONLY_FOR_ARCHS_REASON= Only Intel GPUs on x86 are supported LIB_DEPENDS= libva.so:multimedia/libva -USES= cmake compiler:c++11-lib pkgconfig +USES= cmake compiler:c++17-lang pkgconfig USE_GITHUB= yes USE_LDCONFIG= yes GH_ACCOUNT= intel diff --git a/multimedia/cmrtlib/distinfo b/multimedia/cmrtlib/distinfo index 5cc238ae0bc1..37c8d09e2abb 100644 --- a/multimedia/cmrtlib/distinfo +++ b/multimedia/cmrtlib/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1575968040 -SHA256 (intel-media-driver-intel-media-19.4.0_GH0.tar.gz) = 977b43242ccbd397a31b92f11ac9e2bae319b3099dd01c4e9f507883c62084a5 -SIZE (intel-media-driver-intel-media-19.4.0_GH0.tar.gz) = 20822884 +TIMESTAMP = 1582874008 +SHA256 (intel-media-driver-intel-media-20.1.pre4_GH0.tar.gz) = 66936da3798c53b000c306c785f4fec42711c602cae3bb214a6a694780e73a44 +SIZE (intel-media-driver-intel-media-20.1.pre4_GH0.tar.gz) = 21753515 diff --git a/multimedia/cmrtlib/files/patch-static-render-node b/multimedia/cmrtlib/files/patch-static-render-node new file mode 100644 index 000000000000..da70f7944448 --- /dev/null +++ b/multimedia/cmrtlib/files/patch-static-render-node @@ -0,0 +1,224 @@ +Revert https://github.com/intel/media-driver/commit/6cafa0bf2aa1 due +to incomplete BSD support in bundled libdrm. + +--- linux/hardware/cm_device.h.orig 2020-02-28 07:13:28 UTC ++++ linux/hardware/cm_device.h +@@ -33,7 +33,6 @@ class CmSurfaceManager; + class CmDevice_RT : public CmDevice + { + public: +- static int32_t GetSupportedRenderer(uint32_t &count); + static int32_t Create( CmDevice_RT* &device, uint32_t createOption ); + static int32_t Destroy( CmDevice_RT* &device ); + static int32_t Create(VADisplay &vaDisplay, CmDevice_RT* &device,uint32_t createOption ); +@@ -176,7 +175,7 @@ class CmDevice_RT : public CmDevice (protected) + void *m_deviceInUmd; //CmDevice pointer in UMD + bool m_cmCreated; + +- int32_t Initialize(bool isCmCreated, uint32_t Index = 0); ++ int32_t Initialize(bool isCmCreated); + int32_t FreeResources(); + #if USE_EXTENSION_CODE + int32_t EnableGtpin( void ); +@@ -190,9 +189,8 @@ class CmDevice_RT : public CmDevice (protected) + int32_t GetLibvaDisplayDrm(VADisplay & vaDisplay); + #endif + +- int32_t InitializeLibvaDisplay(uint32_t Index = 0); ++ int32_t InitializeLibvaDisplay(void); + VADisplay m_vaDisplay; +- uint32_t m_drmIndex; + pvaCmExtSendReqMsg m_fvaCmExtSendReqMsg; + + #if !defined(ANDROID) +--- linux/hardware/cm_device_os.cpp.orig 2020-02-28 07:13:28 UTC ++++ linux/hardware/cm_device_os.cpp +@@ -21,7 +21,6 @@ + */ + + #include "cm_device.h" +-#include "drm_device.h" + #include <dlfcn.h> + #include <cstdio> + +@@ -39,13 +38,6 @@ + #include <unistd.h> + #include <fcntl.h> + +-#define INTEL_VENDOR_ID 0x8086 +- +-// hold up to 32 GPU adapters +-drmDevicePtr g_AdapterList[32]; +-int32_t g_AdapterCount = 0; +-int32_t g_supportedAdapterCount = 0; +- + #ifndef ANDROID + uint32_t CmDevice_RT::m_vaReferenceCount = 0; + CSync CmDevice_RT::m_vaReferenceCountCriticalSection; +@@ -58,90 +50,27 @@ volatile static char cmrtCurrentVersion[] = "cmrt_curr + "6.0.0.9010\0"; + CSync gDeviceCreationCriticalSection; + +- +-int32_t CmDevice_RT::GetSupportedRenderer(uint32_t& count) +-{ +- INSERT_PROFILER_RECORD(); +- int32_t result = CM_SUCCESS; +- uint32_t i = 0; +- uint32_t k = 0; +- char* driver_name; +- +- if (g_AdapterCount == 0) +- { +- int max_dev = 256; +- drmDevicePtr devices[max_dev]; +- int nodes = drmGetDevices(devices, max_dev); +- int i = 0; +- for (int k = 0; k < nodes; k++) +- { +- driver_name = strrchr(devices[k]->nodes[0], '/'); +- driver_name++; +- int len = strlen(devices[k]->deviceinfo.pci->driverInfo); +- if (len > 0) +- devices[k]->deviceinfo.pci->driverInfo[len - 1] = ' '; +- +- snprintf(devices[k]->deviceinfo.pci->driverInfo + len, (sizeof devices[k]->deviceinfo.pci->driverInfo) - len, " %s", driver_name); +- driver_name = strrchr(devices[k]->nodes[2], '/'); +- driver_name++; +- len = strlen(devices[k]->deviceinfo.pci->driverInfo); +- snprintf(devices[k]->deviceinfo.pci->driverInfo + len, (sizeof devices[k]->deviceinfo.pci->driverInfo) - len, " %s", driver_name); +- if (devices[k]->deviceinfo.pci->vendor_id == INTEL_VENDOR_ID) +- { +- g_AdapterList[i] = devices[k]; +- i++; +- } +- } +- if (nodes == 0) +- result = CM_NO_SUPPORTED_ADAPTER; +- +- g_AdapterCount = k; +- g_supportedAdapterCount = i; +- } +- count = g_supportedAdapterCount; +- return result; +-} +- +- + int32_t CmDevice_RT::Create(CmDevice_RT* &device, uint32_t createOption) + { + INSERT_PROFILER_RECORD(); + + int32_t result = CM_SUCCESS; +- uint32_t count = 0; + +- if (g_AdapterCount == 0 ) ++ device = new CmDevice_RT(nullptr, createOption); ++ if( device ) + { +- result = GetSupportedRenderer(count); +- } +- +- if (g_supportedAdapterCount > 0) +- { +- // start from first supported GPU +- uint32_t Index = 0; +- device = new CmDevice_RT(nullptr, createOption); +- +- if (CM_DEVICE_CREATE_OPTION_DEFAULT != createOption) +- // select last supported GPU +- Index = g_supportedAdapterCount - 1; +- +- if (device) ++ result = device->Initialize(true); ++ if(result != CM_SUCCESS) + { +- result = device->Initialize(true, Index); +- if (result != CM_SUCCESS) +- { +- CmAssert(0); +- Destroy(device); +- } +- } +- else +- { + CmAssert(0); +- result = CM_OUT_OF_HOST_MEMORY; ++ Destroy(device); + } + } + else +- result = CM_NO_SUPPORTED_ADAPTER; ++ { ++ CmAssert(0); ++ result = CM_OUT_OF_HOST_MEMORY; ++ } + + return result; + } +@@ -209,7 +138,6 @@ CmDevice_RT::CmDevice_RT( + #ifdef ANDROID + m_display(nullptr), + #endif +- m_drmIndex(0), + m_fvaCmExtSendReqMsg(nullptr), + m_gtpinEnabled(false), + m_gtpinBufferUP0(nullptr), +@@ -295,7 +223,7 @@ static int32_t CmrtVaSurfaceRelease(void *vaDisplay, v + return vaStatus; + } + +-int32_t CmDevice_RT::Initialize(bool isCmCreated, uint32_t Index) ++int32_t CmDevice_RT::Initialize(bool isCmCreated) + { + int32_t result = CM_SUCCESS; + +@@ -303,7 +231,7 @@ int32_t CmDevice_RT::Initialize(bool isCmCreated, uint + + CLock locker(gDeviceCreationCriticalSection); + +- CHK_RET(InitializeLibvaDisplay(Index)); ++ CHK_RET(InitializeLibvaDisplay()); + + CHK_RET(CreateDeviceInUmd()); + +@@ -427,14 +355,13 @@ int32_t CmDevice_RT::OSALExtensionExecute(uint32_t fun + return hr; + } + +-//Initalize LibVA's VADisplay by supported dri device list index +-int32_t CmDevice_RT::InitializeLibvaDisplay(uint32_t Index) ++//Initalize LibVA's VADisplay ++int32_t CmDevice_RT::InitializeLibvaDisplay() + { + if (m_cmCreated) + { + VAStatus vaStatus = VA_STATUS_SUCCESS; + int vaMajorVersion, vaMinorVersion; +- m_drmIndex = Index; + + #ifndef ANDROID + int32_t ret = GetLibvaDisplayDrm(m_vaDisplay); +@@ -528,22 +455,7 @@ int32_t CmDevice_RT::GetLibvaDisplayDrm(VADisplay & va + } + + // open the GPU device +- if (g_supportedAdapterCount < 1) +- { +- fprintf(stderr, "No supported Intel GPU device file node detected\n"); +- return CM_INVALID_LIBVA_INITIALIZE; +- } +- +- if (m_drmIndex < g_supportedAdapterCount) +- { +- m_driFileDescriptor = GetRendererFileDescriptor(g_AdapterList[m_drmIndex]->nodes[2]); +- } +- else +- { +- fprintf(stderr, "Invalid drm list index used\n"); +- return CM_INVALID_LIBVA_INITIALIZE; +- } +- ++ m_driFileDescriptor = open("/dev/dri/renderD128", O_RDWR); + if (m_driFileDescriptor < 0) + { + fprintf(stderr, "Failed to open GPU device file node\n"); |