aboutsummaryrefslogtreecommitdiff
path: root/multimedia/cmrtlib
diff options
context:
space:
mode:
Diffstat (limited to 'multimedia/cmrtlib')
-rw-r--r--multimedia/cmrtlib/Makefile5
-rw-r--r--multimedia/cmrtlib/distinfo6
-rw-r--r--multimedia/cmrtlib/files/patch-static-render-node224
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");