diff --git a/Source/Common/AssertTracer/AssertTracer.cpp b/Source/Common/AssertTracer/AssertTracer.cpp index e9f33a4a..cfd95283 100644 --- a/Source/Common/AssertTracer/AssertTracer.cpp +++ b/Source/Common/AssertTracer/AssertTracer.cpp @@ -180,7 +180,7 @@ void __stdcall ReportAssertETW( const unsigned short compId, #endif } -#elif defined( __linux__ ) && defined( _RELEASE_INTERNAL ) && !defined( __ANDROID__ ) +#elif defined( _RELEASE_INTERNAL ) && !defined( _WIN32 ) && !defined( __ANDROID__ ) #include <algorithm> #include <syslog.h> #include <execinfo.h> diff --git a/Source/Common/AssertTracer/AssertTracer.h b/Source/Common/AssertTracer/AssertTracer.h index 5b21afad..64727962 100644 --- a/Source/Common/AssertTracer/AssertTracer.h +++ b/Source/Common/AssertTracer/AssertTracer.h @@ -91,7 +91,7 @@ void __stdcall ReportAssertETW(const unsigned short compId, } #endif -#elif defined( __linux__ ) && defined( _RELEASE_INTERNAL ) && !defined( __ANDROID__ ) +#elif defined( _RELEASE_INTERNAL ) && !defined( _WIN32 ) && !defined( __ANDROID__ ) // do while() is missing ";" at the end and this is intentional // As invoking assert looks like this: assert(expr); So semicolon will // be stuck to do.. while() and that way sorting out possible diff --git a/Source/GmmLib/CachePolicy/GmmGen8CachePolicy.h b/Source/GmmLib/CachePolicy/GmmGen8CachePolicy.h index 112aacfe..24dbe57f 100755 --- a/Source/GmmLib/CachePolicy/GmmGen8CachePolicy.h +++ b/Source/GmmLib/CachePolicy/GmmGen8CachePolicy.h @@ -145,7 +145,7 @@ DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_SURFACE_REF_ENCODE DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_SURFACE_HME_DOWNSAMPLED_ENCODE , 1 , 1 , 1 , 0 , 1); DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_SURFACE_HME_DOWNSAMPLED_ENCODE_DST , 1 , 1 , 0 , 0 , 1); DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_SURFACE_ME_DISTORTION_ENCODE , 1 , 1 , 1 , 0 , 1); -#if defined(__linux__) && !defined(ANDROID) +#if !defined(_WIN32) && !defined(ANDROID) DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_SURFACE_MV_DATA_ENCODE , 1 , 1 , 0 , 0 , 1); DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_SURFACE_BRC_ME_DISTORTION_ENCODE , 1 , 1 , 0 , 0 , 1); DEFINE_CACHE_ELEMENT(GMM_RESOURCE_USAGE_PAK_OBJECT_ENCODE , 1 , 1 , 0 , 0 , 1); diff --git a/Source/GmmLib/GlobalInfo/GmmInfo.cpp b/Source/GmmLib/GlobalInfo/GmmInfo.cpp index 8876890d..cb7b9491 100644 --- a/Source/GmmLib/GlobalInfo/GmmInfo.cpp +++ b/Source/GmmLib/GlobalInfo/GmmInfo.cpp @@ -939,7 +939,7 @@ int32_t GmmLib::Context::IncrementRefCount() { int32_t *Ref = &RefCount; -#if defined(__linux__) +#if defined(__GNUC__) // returns 0 only when registering the first client return (__sync_fetch_and_add(Ref, 1)); #endif @@ -974,7 +974,7 @@ int32_t GmmLib::Context::DecrementRefCount() { break; } -#if defined(__linux__) +#if defined(__GNUC__) } while(!__sync_bool_compare_and_swap(Ref, CurrentValue, TargetValue)); #endif return TargetValue; diff --git a/Source/GmmLib/Resource/Linux/GmmResourceInfoLinCWrapper.cpp b/Source/GmmLib/Resource/Linux/GmmResourceInfoLinCWrapper.cpp index 546815f8..ee41b174 100644 --- a/Source/GmmLib/Resource/Linux/GmmResourceInfoLinCWrapper.cpp +++ b/Source/GmmLib/Resource/Linux/GmmResourceInfoLinCWrapper.cpp @@ -22,7 +22,7 @@ OTHER DEALINGS IN THE SOFTWARE. #include "Internal/Common/GmmLibInc.h" -#if defined(__linux__) && !LHDM +#if !defined(_WIN32) && !LHDM #include "Internal/Linux/GmmResourceInfoLinInt.h" ///////////////////////////////////////////////////////////////////////////////////// @@ -176,4 +176,4 @@ GMM_TRANSLATIONTABLE_CALLBACKS DummyTTCB = { .pfWriteL3Adr = DummyWriteL3Adr, }; -#endif /*__linux__*/ +#endif /*!_WIN32*/ diff --git a/Source/GmmLib/Texture/GmmTextureAlloc.cpp b/Source/GmmLib/Texture/GmmTextureAlloc.cpp index b471cf81..aac150ce 100644 --- a/Source/GmmLib/Texture/GmmTextureAlloc.cpp +++ b/Source/GmmLib/Texture/GmmTextureAlloc.cpp @@ -826,7 +826,7 @@ GMM_STATUS GmmLib::GmmTextureCalc::FillTexPitchAndSize(GMM_TEXTURE_INFO * pTexIn } else { -#if defined(__GMM_KMD__) || defined(__linux__) +#if defined(__GMM_KMD__) || !defined(_WIN32) GMM_ASSERTDPF(0, "Surface too large!"); #endif Status = GMM_ERROR; diff --git a/Source/GmmLib/TranslationTable/GmmPageTableMgr.cpp b/Source/GmmLib/TranslationTable/GmmPageTableMgr.cpp index 041b42ee..6f6129ed 100644 --- a/Source/GmmLib/TranslationTable/GmmPageTableMgr.cpp +++ b/Source/GmmLib/TranslationTable/GmmPageTableMgr.cpp @@ -28,7 +28,7 @@ Description: UMD-TT manager (manages both TR-TT and AUX-TT in user mode space) #include "../TranslationTable/GmmUmdTranslationTable.h" #include "External/Common/GmmClientContext.h" -#if defined(__linux__) +#if !defined(_WIN32) #include "Internal/Linux/GmmResourceInfoLinInt.h" #endif @@ -44,7 +44,7 @@ Description: UMD-TT manager (manages both TR-TT and AUX-TT in user mode space) LeaveCriticalSection(&PoolLock); \ } extern GMM_MA_LIB_CONTEXT *pGmmMALibContext; -#if defined(__linux__) +#if !defined(_WIN32) GMM_STATUS GmmLib::__GmmDeviceAlloc(GmmClientContext * pClientContext, GMM_DEVICE_CALLBACKS_INT *pDeviceCbInt, GMM_DEVICE_ALLOC * pAlloc) @@ -608,7 +608,7 @@ GMM_STATUS GmmLib::GmmPageTableMgr::UpdateAuxTable(const GMM_DDI_UPDATEAUXTABLE return GMM_SUCCESS; } -#if defined(__linux__) && !_WIN32 +#if !defined(_WIN32) ///////////////////////////////////////////////////////////////////////////////////// /// Gets size of PageTable buffer object (BOs) list /// diff --git a/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.cpp b/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.cpp index 0de4dbdc..2117fbda 100644 --- a/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.cpp +++ b/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.cpp @@ -31,7 +31,7 @@ Description: Contains functions of internal classes #if !defined(__GMM_KMD) -#if defined(__linux__) +#if !defined(_WIN32) #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 76ee4554..170ceeff 100644 --- a/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.h +++ b/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.h @@ -27,7 +27,7 @@ Description: This file contains the class definitions for GmmPageTablePool #pragma once #include "External/Common/GmmPageTableMgr.h" -#ifdef __linux__ +#ifndef _WIN32 #include <pthread.h> #include <string.h> @@ -60,12 +60,7 @@ static inline int _BitScanForward(uint32_t *index, uint32_t mask) { int i; -#ifdef __ANDROID__ - i = ffs(mask); -#else - i = ffsl(mask); -#endif - + i = __builtin_ffsl(mask); if(i > 0) { *index = (uint32_t)(i - 1); @@ -448,7 +443,7 @@ namespace GmmLib public: #ifdef _WIN32 CRITICAL_SECTION TTLock; //synchronized access of PageTable obj -#elif defined __linux__ +#else pthread_mutex_t TTLock; #endif diff --git a/Source/GmmLib/ULT/CMakeLists.txt b/Source/GmmLib/ULT/CMakeLists.txt index 6ddd802d..317d3f62 100644 --- a/Source/GmmLib/ULT/CMakeLists.txt +++ b/Source/GmmLib/ULT/CMakeLists.txt @@ -164,7 +164,7 @@ target_link_libraries(${EXE_NAME} igfx_gmmumd_dll) target_link_libraries(${EXE_NAME} pthread - dl + ${CMAKE_DL_LIBS} ) add_custom_target(Run_ULT ALL DEPENDS GMMULT) diff --git a/Source/GmmLib/ULT/GmmAuxTableULT.cpp b/Source/GmmLib/ULT/GmmAuxTableULT.cpp index c6a9b537..567f1f35 100644 --- a/Source/GmmLib/ULT/GmmAuxTableULT.cpp +++ b/Source/GmmLib/ULT/GmmAuxTableULT.cpp @@ -20,7 +20,7 @@ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ============================================================================*/ -#if defined (__linux__) && !defined(__i386__) +#if !defined (_WIN32) && !defined(__i386__) #include "GmmAuxTableULT.h" @@ -262,4 +262,4 @@ TEST_F(CTestAuxTable, TestAuxTableContent) pGmmULTClientContext->DestroyPageTblMgrObject(mgr); } -#endif /* __linux__ */ +#endif /* !_WIN32 */ diff --git a/Source/GmmLib/ULT/GmmAuxTableULT.h b/Source/GmmLib/ULT/GmmAuxTableULT.h index 3b8c1a18..ea6ca03e 100644 --- a/Source/GmmLib/ULT/GmmAuxTableULT.h +++ b/Source/GmmLib/ULT/GmmAuxTableULT.h @@ -22,7 +22,7 @@ OTHER DEALINGS IN THE SOFTWARE. #pragma once -#if defined (__linux__) && !defined(__i386__) +#if !defined (_WIN32) && !defined(__i386__) #ifndef _ISOC11_SOURCE #define _ISOC11_SOURCE 1 @@ -30,7 +30,6 @@ OTHER DEALINGS IN THE SOFTWARE. #include "GmmGen10ResourceULT.h" #include <stdlib.h> -#include <malloc.h> #ifndef ALIGN #define ALIGN(v, a) (((v) + ((a)-1)) & ~((a)-1)) @@ -249,4 +248,4 @@ class CTestAuxTable : public CTestGen10Resource }; }; -#endif /* __linux__ */ +#endif /* !_WIN32 */ diff --git a/Source/GmmLib/Utility/GmmLog/GmmLog.cpp b/Source/GmmLib/Utility/GmmLog/GmmLog.cpp index 6628c9f1..45067438 100644 --- a/Source/GmmLib/Utility/GmmLog/GmmLog.cpp +++ b/Source/GmmLib/Utility/GmmLog/GmmLog.cpp @@ -34,7 +34,6 @@ OTHER DEALINGS IN THE SOFTWARE. #include <sys/stat.h> #include <unistd.h> #include <fstream> -#include <linux/limits.h> #endif /// Logger instance shared by all of GmmLib within a process @@ -197,12 +196,9 @@ bool GmmLib::Logger::GmmLogInit() #elif defined(__ANDROID__) // Log to logcat SpdLogger = spdlog::android_logger(GMM_LOGGER_NAME, GMM_LOG_TAG); -#elif defined(__linux__) +#else // Log to syslog SpdLogger = spdlog::syslog_logger(GMM_LOGGER_NAME, GMM_LOG_TAG, 1 /*Log Pid*/); -#else - __GMM_ASSERT(0); - return false; #endif } } diff --git a/Source/GmmLib/Utility/GmmLog/spdlog/details/os.h b/Source/GmmLib/Utility/GmmLog/spdlog/details/os.h index 3f9d3867..35223ff1 100644 --- a/Source/GmmLib/Utility/GmmLog/spdlog/details/os.h +++ b/Source/GmmLib/Utility/GmmLog/spdlog/details/os.h @@ -39,8 +39,20 @@ #include <unistd.h> #include <chrono> -#elif __FreeBSD__ -#include <sys/thr.h> //Use thr_self() syscall under FreeBSD to get thread id +#elif defined(_AIX) +#include <pthread.h> // for pthread_getthreadid_np + +#elif defined(__DragonFly__) || defined(__FreeBSD__) +#include <pthread_np.h> // for pthread_getthreadid_np + +#elif defined(__NetBSD__) +#include <lwp.h> // for _lwp_self + +#elif defined(__OpenBSD__) +#include <unistd.h> // for getthrid + +#elif defined(__sun) +#include <thread.h> // for thr_self #else #include <thread> @@ -213,7 +225,7 @@ inline size_t filesize(FILE *f) #else // unix int fd = fileno(f); //64 bits(but not in osx, where fstat64 is deprecated) -#if !defined(__FreeBSD__) && !defined(__APPLE__) && (defined(__x86_64__) || defined(__ppc64__)) +#if (defined(__linux__) || defined(__sun) || defined(_AIX)) && (defined(__LP64__) || defined(_LP64)) struct stat64 st; if (fstat64(fd, &st) == 0) return static_cast<size_t>(st.st_size); @@ -302,10 +314,14 @@ inline size_t thread_id() # define SYS_gettid __NR_gettid # endif return static_cast<size_t>(syscall(SYS_gettid)); -#elif __FreeBSD__ - long tid; - thr_self(&tid); - return static_cast<size_t>(tid); +#elif defined(_AIX) || defined(__DragonFly__) || defined(__FreeBSD__) + return static_cast<size_t>(pthread_getthreadid_np()); +#elif defined(__NetBSD__) + return static_cast<size_t>(_lwp_self()); +#elif defined(__OpenBSD__) + return static_cast<size_t>(getthrid()); +#elif defined(__sun) + return static_cast<size_t>(thr_self()); #else //Default to standard C++11 (OSX and other Unix) return static_cast<size_t>(std::hash<std::thread::id>()(std::this_thread::get_id())); #endif diff --git a/Source/GmmLib/Utility/GmmLog/spdlog/tweakme.h b/Source/GmmLib/Utility/GmmLog/spdlog/tweakme.h index 5518ce10..cafb7835 100644 --- a/Source/GmmLib/Utility/GmmLog/spdlog/tweakme.h +++ b/Source/GmmLib/Utility/GmmLog/spdlog/tweakme.h @@ -97,7 +97,7 @@ /////////////////////////////////////////////////////////////////////////////// // Uncomment to enable syslog (disabled by default) // -#if __linux__ +#ifndef _WIN32 #define SPDLOG_ENABLE_SYSLOG #endif /////////////////////////////////////////////////////////////////////////////// diff --git a/Source/GmmLib/inc/External/Common/GmmCommonExt.h b/Source/GmmLib/inc/External/Common/GmmCommonExt.h index a59a43cb..43385a1f 100644 --- a/Source/GmmLib/inc/External/Common/GmmCommonExt.h +++ b/Source/GmmLib/inc/External/Common/GmmCommonExt.h @@ -85,7 +85,7 @@ extern const SWIZZLE_DESCRIPTOR INTEL_64KB_UNDEFINED_64_128bpp; #define GMM_NO_FENCE_REG 0xDEADBEEF #define GMM_MAX_DISPLAYS 3 -#if defined __linux__ +#ifndef _WIN32 typedef void* HANDLE; #endif diff --git a/Source/GmmLib/inc/External/Common/GmmInfo.h b/Source/GmmLib/inc/External/Common/GmmInfo.h index 55a26f8a..12a60a66 100644 --- a/Source/GmmLib/inc/External/Common/GmmInfo.h +++ b/Source/GmmLib/inc/External/Common/GmmInfo.h @@ -141,7 +141,7 @@ namespace GmmLib { #if defined(_WIN32) return(InterlockedIncrement((LONG *)&RefCount) - 1); //InterLockedIncrement() returns incremented value -#elif defined(__linux__) +#elif defined(__GNUC__) return(__sync_fetch_and_add(&RefCount, 1)); #endif } @@ -163,7 +163,7 @@ namespace GmmLib } #if defined(_WIN32) } while (!(InterlockedCompareExchange((LONG *)&RefCount, TargetValue, CurrentValue) == CurrentValue)); -#elif defined(__linux__) +#elif defined(__GNUC__) } 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 55008a07..ddcc420e 100644 --- a/Source/GmmLib/inc/External/Common/GmmPageTableMgr.h +++ b/Source/GmmLib/inc/External/Common/GmmPageTableMgr.h @@ -28,7 +28,7 @@ Description: This file contains the class definitions for GmmPageTableMgr #pragma once #include "GmmHw.h" -#ifdef __linux__ +#ifndef _WIN32 #include <pthread.h> #endif @@ -108,7 +108,7 @@ namespace GmmLib GmmClientContext *pClientContext; ///< ClientContext of the client creating this Object //OS-specific defn -#if defined __linux__ +#ifndef _WIN32 pthread_mutex_t PoolLock; #endif public: @@ -134,7 +134,7 @@ namespace GmmLib GMM_VIRTUAL GMM_PAGETABLEPool * __GetFreePoolNode(uint32_t * FreePoolNodeIdx, POOL_TYPE PoolType); -#if defined __linux__ +#ifndef _WIN32 //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 5dd38ec5..add15bb8 100644 --- a/Source/GmmLib/inc/External/Common/GmmResourceInfoExt.h +++ b/Source/GmmLib/inc/External/Common/GmmResourceInfoExt.h @@ -189,7 +189,7 @@ typedef struct GmmLibContext GMM_LIB_CONTEXT; // Place holder for GMM_RESOURCE_FLAG definition. //--------------------------------------------------------------------------- #include "GmmResourceFlags.h" -#if defined __linux__ +#ifndef _WIN32 #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 20d3b95a..527e52bd 100644 --- a/Source/GmmLib/inc/External/Linux/GmmResourceInfoLinExt.h +++ b/Source/GmmLib/inc/External/Linux/GmmResourceInfoLinExt.h @@ -21,7 +21,7 @@ OTHER DEALINGS IN THE SOFTWARE. ============================================================================*/ #pragma once -#ifdef __linux__ +#ifndef _WIN32 #ifdef __cplusplus extern "C" { @@ -93,4 +93,4 @@ typedef struct GMM_UMD_SYNCCONTEXT_REC } #endif /*__cplusplus*/ -#endif /*__linux__*/ +#endif /*!_WIN32*/ diff --git a/Source/GmmLib/inc/Internal/Linux/GmmResourceInfoLinInt.h b/Source/GmmLib/inc/Internal/Linux/GmmResourceInfoLinInt.h index 750d5375..0eedde35 100644 --- a/Source/GmmLib/inc/Internal/Linux/GmmResourceInfoLinInt.h +++ b/Source/GmmLib/inc/Internal/Linux/GmmResourceInfoLinInt.h @@ -22,7 +22,7 @@ OTHER DEALINGS IN THE SOFTWARE. #pragma once -#if defined(__linux__) && !LHDM +#if !defined(_WIN32) && !LHDM // GMM Lib Client Exports #include "External/Common/GmmCommonExt.h" @@ -68,4 +68,4 @@ int GmmCheckForNullDevCbPfn(GMM_CLIENT ClientType, GMM_DEVICE_CALLBACKS_INT *pDe extern GMM_TRANSLATIONTABLE_CALLBACKS DummyTTCB; -#endif /*__linux__*/ +#endif /*!_WIN32*/ diff --git a/Source/inc/portable_compiler.h b/Source/inc/portable_compiler.h index db68312f..45c18a11 100644 --- a/Source/inc/portable_compiler.h +++ b/Source/inc/portable_compiler.h @@ -30,6 +30,9 @@ OTHER DEALINGS IN THE SOFTWARE. #endif #define __noop + #ifdef __fastcall + #undef __fastcall + #endif #define __fastcall #if defined __x86_64__ #define __stdcall // deprecated for x86-64 diff --git a/Source/util/gfxDebug.h b/Source/util/gfxDebug.h index 69646f6b..773c3438 100644 --- a/Source/util/gfxDebug.h +++ b/Source/util/gfxDebug.h @@ -124,7 +124,7 @@ OTHER DEALINGS IN THE SOFTWARE. #else -#ifndef __linux__ +#ifdef _WIN32 #include "igdKrnlEtwMacros.h" #endif