Port to Fuchsia Change-Id: Iad476ecfa574215546cbaaa40673c97659bfbfeb
diff --git a/README.fuchsia b/README.fuchsia new file mode 100644 index 0000000..c2fd7dd --- /dev/null +++ b/README.fuchsia
@@ -0,0 +1,6 @@ +Name: gmmlib +URL: n/a +License: MIT +License File: LICENSE.md +Upstream Git: https://github.com/intel/gmmlib +Description: The Intel(R) Graphics Memory Management Library provides device specific and buffer management for the Intel(R) Graphics Compute Runtime for OpenCL(TM) and the Intel(R) Media Driver for VAAPI.
diff --git a/Source/GmmLib/CMakeLists.txt b/Source/GmmLib/CMakeLists.txt index 69938db..5e97c09 100644 --- a/Source/GmmLib/CMakeLists.txt +++ b/Source/GmmLib/CMakeLists.txt
@@ -510,7 +510,7 @@ set(CMAKE_INSTALL_SYSCONFDIR "usr/share/defaults/etc") endif() -if(UNIX) +if(UNIX OR ${CMAKE_SYSTEM_NAME} STREQUAL "Fuchsia") include(GNUInstallDirs) configure_file(${BS_DIR_GMMLIB}/igdgmm.h.in ${CMAKE_BINARY_DIR}/igdgmm.h)
diff --git a/Source/GmmLib/Platform/GmmPlatforms.h b/Source/GmmLib/Platform/GmmPlatforms.h index 0659c33..92cb737 100644 --- a/Source/GmmLib/Platform/GmmPlatforms.h +++ b/Source/GmmLib/Platform/GmmPlatforms.h
@@ -86,7 +86,7 @@ { #if defined(__GMM_KMD__) || _WIN32 InterlockedIncrement((LONG *)&RefCount); -#elif defined(__linux__) +#elif defined(__linux__) || defined(__Fuchsia__) __sync_fetch_and_add(&RefCount, 1); #endif //TODO[Android] @@ -96,7 +96,7 @@ { #if defined(__GMM_KMD__) || _WIN32 return(InterlockedDecrement((LONG *)&RefCount)); -#elif defined(__linux__) +#elif defined(__linux__) || defined(__Fuchsia__) return(__sync_sub_and_fetch(&RefCount, 1)); #endif //TODO[Android]
diff --git a/Source/GmmLib/Resource/Linux/GmmResourceInfoLinCWrapper.cpp b/Source/GmmLib/Resource/Linux/GmmResourceInfoLinCWrapper.cpp index 546815f..cd60e15 100644 --- a/Source/GmmLib/Resource/Linux/GmmResourceInfoLinCWrapper.cpp +++ b/Source/GmmLib/Resource/Linux/GmmResourceInfoLinCWrapper.cpp
@@ -22,7 +22,7 @@ #include "Internal/Common/GmmLibInc.h" -#if defined(__linux__) && !LHDM +#if (defined(__linux__) || defined(__Fuchsia__)) && !LHDM #include "Internal/Linux/GmmResourceInfoLinInt.h" /////////////////////////////////////////////////////////////////////////////////////
diff --git a/Source/GmmLib/TranslationTable/GmmPageTableMgr.cpp b/Source/GmmLib/TranslationTable/GmmPageTableMgr.cpp index d7fefce..43ec121 100644 --- a/Source/GmmLib/TranslationTable/GmmPageTableMgr.cpp +++ b/Source/GmmLib/TranslationTable/GmmPageTableMgr.cpp
@@ -28,7 +28,7 @@ #include "../TranslationTable/GmmUmdTranslationTable.h" #include "External/Common/GmmClientContext.h" -#if defined(__linux__) +#if defined(__linux__) || defined(__Fuchsia__) #include "Internal/Linux/GmmResourceInfoLinInt.h" #endif @@ -44,7 +44,7 @@ LeaveCriticalSection(&PoolLock); \ } -#if defined(__linux__) +#if defined(__linux__) || defined(__Fuchsia__) GMM_STATUS GmmLib::__GmmDeviceAlloc(GmmClientContext * pClientContext, GMM_DEVICE_CALLBACKS_INT *pDeviceCbInt, GMM_DEVICE_ALLOC * pAlloc) @@ -607,7 +607,7 @@ return GMM_SUCCESS; } -#if defined(__linux__) && !_WIN32 +#if defined(__linux__) || defined(__Fuchsia__) && !_WIN32 ///////////////////////////////////////////////////////////////////////////////////// /// Gets size of PageTable buffer object (BOs) list ///
diff --git a/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.cpp b/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.cpp index 3d94fcc..5588900 100644 --- a/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.cpp +++ b/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.cpp
@@ -31,7 +31,7 @@ #if !defined(__GMM_KMD) -#if defined(__linux__) +#if defined(__linux__) || defined(__Fuchsia__) #include "Internal/Linux/GmmResourceInfoLinInt.h" #define _aligned_free(ptr) free(ptr)
diff --git a/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.h b/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.h index 74de21d..01a5c8b 100644 --- a/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.h +++ b/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.h
@@ -27,7 +27,7 @@ #pragma once #include "External/Common/GmmPageTableMgr.h" -#ifdef __linux__ +#if defined(__linux__) || defined(__Fuchsia__) #include <pthread.h> #include <string.h> @@ -445,7 +445,7 @@ public: #ifdef _WIN32 CRITICAL_SECTION TTLock; //synchronized access of PageTable obj -#elif defined __linux__ +#elif defined __linux__ || defined(__Fuchsia__) pthread_mutex_t TTLock; #endif
diff --git a/Source/GmmLib/inc/External/Common/GmmCachePolicyCommon.h b/Source/GmmLib/inc/External/Common/GmmCachePolicyCommon.h index 43fc980..cea5b1f 100644 --- a/Source/GmmLib/inc/External/Common/GmmCachePolicyCommon.h +++ b/Source/GmmLib/inc/External/Common/GmmCachePolicyCommon.h
@@ -58,7 +58,7 @@ { #if defined(__GMM_KMD__) || _WIN32 InterlockedIncrement((LONG *)&RefCount); - #elif defined(__linux__) + #elif defined(__linux__) || defined(__Fuchsia__) __sync_fetch_and_add(&RefCount, 1); #endif //TODO[Android] @@ -68,7 +68,7 @@ { #if defined(__GMM_KMD__) || _WIN32 return(InterlockedDecrement((LONG *)&RefCount)); - #elif defined(__linux__) + #elif defined(__linux__) || defined(__Fuchsia__) return(__sync_sub_and_fetch(&RefCount, 1)); #endif //TODO[Android]
diff --git a/Source/GmmLib/inc/External/Common/GmmCommonExt.h b/Source/GmmLib/inc/External/Common/GmmCommonExt.h index 6c57195..71a5ef3 100644 --- a/Source/GmmLib/inc/External/Common/GmmCommonExt.h +++ b/Source/GmmLib/inc/External/Common/GmmCommonExt.h
@@ -72,7 +72,7 @@ #define GMM_NO_FENCE_REG 0xDEADBEEF #define GMM_MAX_DISPLAYS 3 -#if defined __linux__ +#if defined __linux__ || defined(__Fuchsia__) typedef void* HANDLE; #endif
diff --git a/Source/GmmLib/inc/External/Common/GmmInfo.h b/Source/GmmLib/inc/External/Common/GmmInfo.h index 52cfe5a..10cc17f 100644 --- a/Source/GmmLib/inc/External/Common/GmmInfo.h +++ b/Source/GmmLib/inc/External/Common/GmmInfo.h
@@ -127,7 +127,7 @@ { #if defined(_WIN32) return(InterlockedIncrement((LONG *)&RefCount) - 1); //InterLockedIncrement() returns incremented value -#elif defined(__linux__) +#elif defined(__linux__) || defined(__Fuchsia__) return(__sync_fetch_and_add(&RefCount, 1)); #endif } @@ -149,7 +149,7 @@ } #if defined(_WIN32) } while (!(InterlockedCompareExchange((LONG *)&RefCount, TargetValue, CurrentValue) == CurrentValue)); -#elif defined(__linux__) +#elif defined(__linux__) || defined(__Fuchsia__) } while (!__sync_bool_compare_and_swap(&RefCount, CurrentValue, TargetValue)); #endif
diff --git a/Source/GmmLib/inc/External/Common/GmmPageTableMgr.h b/Source/GmmLib/inc/External/Common/GmmPageTableMgr.h index beaed19..97f0f99 100644 --- a/Source/GmmLib/inc/External/Common/GmmPageTableMgr.h +++ b/Source/GmmLib/inc/External/Common/GmmPageTableMgr.h
@@ -28,7 +28,7 @@ #pragma once #include "GmmHw.h" -#ifdef __linux__ +#if defined(__linux__) || defined(__Fuchsia__) #include <pthread.h> #endif @@ -108,7 +108,7 @@ GmmClientContext *pClientContext; ///< ClientContext of the client creating this Object //OS-specific defn -#if defined __linux__ +#if defined __linux__ || defined(__Fuchsia__) pthread_mutex_t PoolLock; #endif public: @@ -134,7 +134,7 @@ GMM_VIRTUAL GMM_PAGETABLEPool * __GetFreePoolNode(uint32_t * FreePoolNodeIdx, POOL_TYPE PoolType); -#if defined __linux__ +#if defined __linux__ || defined(__Fuchsia__) //returns number of BOs for indicated TTs = NumNodePoolElements+1 BOs for root table and pools GMM_VIRTUAL int GetNumOfPageTableBOs(uint8_t TTFlags); //returns BO* list for indicated TT in client allocated memory
diff --git a/Source/GmmLib/inc/External/Common/GmmResourceInfoExt.h b/Source/GmmLib/inc/External/Common/GmmResourceInfoExt.h index c50ac11..6d590e4 100644 --- a/Source/GmmLib/inc/External/Common/GmmResourceInfoExt.h +++ b/Source/GmmLib/inc/External/Common/GmmResourceInfoExt.h
@@ -181,7 +181,7 @@ // TBD - Place holder for GMM_RESOURCE_FLAG definition. //--------------------------------------------------------------------------- #include "GmmResourceFlags.h" -#if defined __linux__ +#if defined __linux__ || defined(__Fuchsia__) #include "External/Linux/GmmResourceInfoLinExt.h" #endif
diff --git a/Source/GmmLib/inc/External/Linux/GmmResourceInfoLinExt.h b/Source/GmmLib/inc/External/Linux/GmmResourceInfoLinExt.h index 20d3b95..cca8990 100644 --- a/Source/GmmLib/inc/External/Linux/GmmResourceInfoLinExt.h +++ b/Source/GmmLib/inc/External/Linux/GmmResourceInfoLinExt.h
@@ -21,7 +21,7 @@ ============================================================================*/ #pragma once -#ifdef __linux__ +#if defined(__linux__) || defined(__Fuchsia__) #ifdef __cplusplus extern "C" {
diff --git a/Source/GmmLib/inc/Internal/Common/Texture/GmmTextureCalc.h b/Source/GmmLib/inc/Internal/Common/Texture/GmmTextureCalc.h index e29f113..4a52322 100644 --- a/Source/GmmLib/inc/Internal/Common/Texture/GmmTextureCalc.h +++ b/Source/GmmLib/inc/Internal/Common/Texture/GmmTextureCalc.h
@@ -176,7 +176,7 @@ { #if defined(__GMM_KMD__) || _WIN32 InterlockedIncrement((LONG *)&RefCount); - #elif defined(__linux__) + #elif defined(__linux__) || defined(__Fuchsia__) __sync_fetch_and_add(&RefCount, 1); #endif //TODO[Android] @@ -186,7 +186,7 @@ { #if defined(__GMM_KMD__) || _WIN32 return(InterlockedDecrement((LONG *)&RefCount)); - #elif defined(__linux__) + #elif defined(__linux__) || defined(__Fuchsia__) return(__sync_sub_and_fetch(&RefCount, 1)); #endif //TODO[Android]
diff --git a/Source/GmmLib/inc/Internal/Linux/GmmResourceInfoLinInt.h b/Source/GmmLib/inc/Internal/Linux/GmmResourceInfoLinInt.h index 750d537..9545e6c 100644 --- a/Source/GmmLib/inc/Internal/Linux/GmmResourceInfoLinInt.h +++ b/Source/GmmLib/inc/Internal/Linux/GmmResourceInfoLinInt.h
@@ -22,7 +22,7 @@ #pragma once -#if defined(__linux__) && !LHDM +#if (defined(__linux__) || defined(__Fuchsia__)) && !LHDM // GMM Lib Client Exports #include "External/Common/GmmCommonExt.h"