Use DLL interfaces for ULT
Adding two Exported APIs in DLL - GmmInit and GmmDestroy.
GmmInit initializes singleton global context and ClientContext.
This avoid the need for clients to fill up function table.
Change-Id: I3bab29d2c10fd4d06cf78e1f33c9479d536477da
Signed-off-by: drprajap <dimpalben.r.prajapati@intel.com>
diff --git a/Source/GmmLib/GlobalInfo/GmmClientContext.cpp b/Source/GmmLib/GlobalInfo/GmmClientContext.cpp
index 591f804..36cdf1a 100644
--- a/Source/GmmLib/GlobalInfo/GmmClientContext.cpp
+++ b/Source/GmmLib/GlobalInfo/GmmClientContext.cpp
@@ -190,6 +190,18 @@
}
/////////////////////////////////////////////////////////////////////////////////////
+/// Member function of ClientContext class for getting Alignment info
+///
+/// @return void
+//////////////////////////////////////////////////////////////////////////////////
+void GMM_STDCALL GmmLib::GmmClientContext::GetExtendedTextureAlign(uint32_t Mode, ALIGNMENT &UnitAlign)
+{
+ ALIGNMENT AlignInfo;
+ pGmmGlobalContext->GetPlatformInfoObj()->ApplyExtendedTexAlign(Mode, AlignInfo);
+ UnitAlign = AlignInfo;
+}
+
+/////////////////////////////////////////////////////////////////////////////////////
/// Member function of ClientContext class for returning whether the given Resource
/// format is Planar
///
diff --git a/Source/GmmLib/GlobalInfo/GmmLibDllMain.cpp b/Source/GmmLib/GlobalInfo/GmmLibDllMain.cpp
index 174818d..14c14f8 100755
--- a/Source/GmmLib/GlobalInfo/GmmLibDllMain.cpp
+++ b/Source/GmmLib/GlobalInfo/GmmLibDllMain.cpp
@@ -84,4 +84,47 @@
return Status;
}
+/////////////////////////////////////////////////////////////////////////////////////
+/// First Call to GMM Lib DLL/so to initialize singleton global context
+/// and create client context
+///
+/////////////////////////////////////////////////////////////////////////////////////
+#ifdef _WIN32
+extern "C" GMM_LIB_API GMM_CLIENT_CONTEXT *GMM_STDCALL GmmInit(const PLATFORM Platform,
+ const SKU_FEATURE_TABLE *pSkuTable,
+ const WA_TABLE * pWaTable,
+ const GT_SYSTEM_INFO * pGtSysInfo,
+ GMM_CLIENT ClientType)
+#else
+extern "C" GMM_LIB_API GMM_CLIENT_CONTEXT *GMM_STDCALL GmmInit(const PLATFORM Platform,
+ const void * pSkuTable,
+ const void * pWaTable,
+ const void * pGtSysInfo,
+ GMM_CLIENT ClientType)
#endif
+{
+ GMM_STATUS Status = GMM_SUCCESS;
+ GMM_CLIENT_CONTEXT *pClientContext = NULL;
+
+
+ Status = GmmCreateSingletonContext(Platform, pSkuTable, pWaTable, pGtSysInfo);
+
+ if(Status == GMM_SUCCESS)
+ {
+ pClientContext = GmmCreateClientContext(ClientType);
+ }
+
+ return pClientContext;
+}
+
+
+/////////////////////////////////////////////////////////////////////////////////////
+/// Destroys singleton global context and client context
+///
+/////////////////////////////////////////////////////////////////////////////////////
+extern "C" GMM_LIB_API void GMM_STDCALL GmmDestroy(GMM_CLIENT_CONTEXT *pGmmClientContext)
+{
+ GmmDestroySingletonContext();
+ GmmDeleteClientContext(pGmmClientContext);
+}
+#endif // GMM_LIB_DLL
diff --git a/Source/GmmLib/ULT/CMakeLists.txt b/Source/GmmLib/ULT/CMakeLists.txt
index 47c63fd..3432374 100644
--- a/Source/GmmLib/ULT/CMakeLists.txt
+++ b/Source/GmmLib/ULT/CMakeLists.txt
@@ -21,17 +21,17 @@
set (EXE_NAME GMMULT)
set(GMMULT_HEADERS
- GmmCachePolicyULT.h
- GmmCommonULT.h
- GmmGen10CachePolicyULT.h
- GmmGen10ResourceULT.h
- GmmGen11CachePolicyULT.h
- GmmGen9CachePolicyULT.h
- GmmGen9ResourceULT.h
- GmmResourceULT.h
- stdafx.h
- targetver.h
-)
+ GmmCachePolicyULT.h
+ GmmCommonULT.h
+ GmmGen10CachePolicyULT.h
+ GmmGen10ResourceULT.h
+ GmmGen11CachePolicyULT.h
+ GmmGen9CachePolicyULT.h
+ GmmGen9ResourceULT.h
+ GmmResourceULT.h
+ stdafx.h
+ targetver.h
+ )
set(GMMULT_SOURCES
GmmCachePolicyULT.cpp
@@ -48,36 +48,36 @@
)
source_group("Source Files\\Cache Policy" FILES
- GmmCachePolicyULT.cpp
- GmmGen9CachePolicyULT.cpp
- GmmGen10CachePolicyULT.cpp
- GmmGen11CachePolicyULT.cpp
-)
+ GmmCachePolicyULT.cpp
+ GmmGen9CachePolicyULT.cpp
+ GmmGen10CachePolicyULT.cpp
+ GmmGen11CachePolicyULT.cpp
+ )
source_group("Source Files\\Resource" FILES
- GmmGen10ResourceULT.cpp
- GmmGen9ResourceULT.cpp
- GmmResourceCpuBltULT.cpp
- GmmResourceULT.cpp
-)
+ GmmGen10ResourceULT.cpp
+ GmmGen9ResourceULT.cpp
+ GmmResourceCpuBltULT.cpp
+ GmmResourceULT.cpp
+ )
source_group("Header Files\\Cache Policy" FILES
- GmmCachePolicyULT.h
- GmmGen10CachePolicyULT.h
- GmmGen11CachePolicyULT.h
- GmmGen9CachePolicyULT.h
-)
+ GmmCachePolicyULT.h
+ GmmGen10CachePolicyULT.h
+ GmmGen11CachePolicyULT.h
+ GmmGen9CachePolicyULT.h
+ )
source_group("Header Files\\Resource" FILES
- GmmGen10ResourceULT.h
- GmmGen9ResourceULT.h
- GmmResourceULT.h
-)
+ GmmGen10ResourceULT.h
+ GmmGen9ResourceULT.h
+ GmmResourceULT.h
+ )
source_group("gtest" FILES
- googletest/gtest/gtest.h
- googletest/src/gtest-all.cc
-)
+ googletest/gtest/gtest.h
+ googletest/src/gtest-all.cc
+ )
include_directories(BEFORE ./)
@@ -90,37 +90,62 @@
${BS_DIR_INC}
${BS_DIR_GMMLIB}/inc
${BS_DIR_INC}/common
-)
+ )
if(MSVC)
+
include_directories(
- ${BS_DIR_D3D11}/Imola
+ ${BS_DIR_D3D11}/Imola
)
endif()
+macro(GmmLibULTSetTargetConfig ultTarget)
+ if (TARGET ${ultTarget})
+ set_property(TARGET ${ultTarget} APPEND PROPERTY COMPILE_DEFINITIONS
+ $<$<CONFIG:Release>: _RELEASE>
+ $<$<CONFIG:ReleaseInternal>: _RELEASE_INTERNAL>
+ $<$<CONFIG:Debug>: _DEBUG>
+ )
+ endif()
+
+endmacro()
+
add_executable(${EXE_NAME} ${GMMULT_HEADERS} ${GMMULT_SOURCES})
+GmmLibULTSetTargetConfig(${EXE_NAME})
+
+
if(MSVC)
bs_set_wdk(${EXE_NAME})
-endif()
-set_property(TARGET ${EXE_NAME} APPEND PROPERTY COMPILE_DEFINITIONS __GMM GMM_EXCITE)
+ set_property(TARGET ${EXE_NAME} APPEND PROPERTY COMPILE_DEFINITIONS __GMM GMM_LIB_DLL GMM_ULT __UMD)
-target_link_libraries(${EXE_NAME}
- igfx_gmmumd_excite
+ add_dependencies(${EXE_NAME}
+ igfx_gmmumd_dll
)
-if(MSVC)
target_link_libraries( ${EXE_NAME}
- advapi32.lib
- dxgi.lib
- gdi32.lib
- opengl32.lib
- user32.lib
-)
+ advapi32.lib
+ dxgi.lib
+ gdi32.lib
+ opengl32.lib
+ user32.lib
+ )
else()
+ set_property(TARGET ${EXE_NAME} APPEND PROPERTY COMPILE_DEFINITIONS __GMM GMM_EXCITE __UMD)
+
target_link_libraries(${EXE_NAME}
- pthread
+ igfx_gmmumd_excite
+ )
+
+# if(NOT TARGET igfx_gmmumd_dll)
+# add_subdirectory("${BS_DIR_GMMLIB}" "${CMAKE_BINARY_DIR}/gmmlib/ult")
+# endif()
+# target_link_libraries(${EXE_NAME} igfx_gmmumd_dll)
+
+ target_link_libraries(${EXE_NAME}
+ pthread
+ dl
)
endif()
@@ -133,5 +158,3 @@
COMMAND ${EXE_NAME} --gtest_filter=CTest*
)
-
-
diff --git a/Source/GmmLib/ULT/GmmCachePolicyULT.cpp b/Source/GmmLib/ULT/GmmCachePolicyULT.cpp
index b2a7206..335c6f0 100644
--- a/Source/GmmLib/ULT/GmmCachePolicyULT.cpp
+++ b/Source/GmmLib/ULT/GmmCachePolicyULT.cpp
@@ -22,7 +22,6 @@
#include "GmmCachePolicyULT.h"
-extern GMM_GLOBAL_CONTEXT *pGmmGlobalContext;
using namespace std;
/////////////////////////////////////////////////////////////////////////////////////
@@ -35,6 +34,12 @@
{
GfxPlatform.eProductFamily = IGFX_BROADWELL;
GfxPlatform.eRenderCoreFamily = IGFX_GEN8_CORE;
+ AllocateAdapterInfo();
+
+ pGfxAdapterInfo->SystemInfo.L3CacheSizeInKb = 768;
+ pGfxAdapterInfo->SystemInfo.LLCCacheSizeInKb = 2 * 1024; //2 MB
+ pGfxAdapterInfo->SystemInfo.EdramSizeInKb = 64 * 1024; //64 MB
+ const_cast<SKU_FEATURE_TABLE &>(pGfxAdapterInfo->SkuTable).FtrEDram = 1;
CommonULT::SetUpTestCase();
@@ -55,21 +60,12 @@
void CTestCachePolicy::CheckL3CachePolicy()
{
- ASSERT_TRUE(pGmmGlobalContext);
-
const uint32_t TargetCache_L3_LLC_ELLC = 0x3;
-
- // Setup SKU/WA flags
- pGmmGlobalContext->GetGtSysInfo()->L3CacheSizeInKb = 768; //768 KB
-
- // Re-init cache policy based on above info
- pGmmGlobalContext->GetCachePolicyObj()->InitCachePolicy();
-
// Check Usage MOCS index against MOCS settings
for(uint32_t Usage = GMM_RESOURCE_USAGE_UNKNOWN; Usage < GMM_RESOURCE_USAGE_MAX; Usage++)
{
- GMM_CACHE_POLICY_ELEMENT ClientRequest = pGmmGlobalContext->GetCachePolicyElement((GMM_RESOURCE_USAGE_TYPE)Usage);
+ GMM_CACHE_POLICY_ELEMENT ClientRequest = pGmmULTClientContext->GetCachePolicyElement((GMM_RESOURCE_USAGE_TYPE)Usage);
MEMORY_OBJECT_CONTROL_STATE Mocs = ClientRequest.MemoryObjectOverride;
// Not check WT/WB/UC since that doesn't really matter for L3
@@ -89,8 +85,6 @@
void CTestCachePolicy::CheckLlcEdramCachePolicy()
{
- ASSERT_TRUE(pGmmGlobalContext);
-
const uint32_t TargetCache_ELLC = 0;
const uint32_t TargetCache_LLC = 1;
const uint32_t TargetCache_LLC_ELLC = 2;
@@ -100,18 +94,10 @@
const uint32_t CC_CACHED_WT = 0x2;
const uint32_t CC_CACHED_WB = 0x3;
- // Setup SKU/WA flags
- pGmmGlobalContext->GetGtSysInfo()->LLCCacheSizeInKb = 2 * 1024; //2 MB
- pGmmGlobalContext->GetGtSysInfo()->EdramSizeInKb = 64 * 1024; //64 MB
- const_cast<SKU_FEATURE_TABLE &>(pGmmGlobalContext->GetSkuTable()).FtrEDram = 1;
-
- // Re-init cache policy with above info
- pGmmGlobalContext->GetCachePolicyObj()->InitCachePolicy();
-
// Check Usage MOCS index against MOCS settings
for(uint32_t Usage = GMM_RESOURCE_USAGE_UNKNOWN; Usage < GMM_RESOURCE_USAGE_MAX; Usage++)
{
- GMM_CACHE_POLICY_ELEMENT ClientRequest = pGmmGlobalContext->GetCachePolicyElement((GMM_RESOURCE_USAGE_TYPE)Usage);
+ GMM_CACHE_POLICY_ELEMENT ClientRequest = pGmmULTClientContext->GetCachePolicyElement((GMM_RESOURCE_USAGE_TYPE)Usage);
MEMORY_OBJECT_CONTROL_STATE Mocs = ClientRequest.MemoryObjectOverride;
// Check for age
@@ -119,7 +105,6 @@
if(ClientRequest.L3)
{
- // Already tested in another test
continue;
}
diff --git a/Source/GmmLib/ULT/GmmCommonULT.cpp b/Source/GmmLib/ULT/GmmCommonULT.cpp
index 595aa62..14b79a2 100644
--- a/Source/GmmLib/ULT/GmmCommonULT.cpp
+++ b/Source/GmmLib/ULT/GmmCommonULT.cpp
@@ -21,10 +21,34 @@
============================================================================*/
#include "GmmCommonULT.h"
+#ifndef _WIN32
+#include <dlfcn.h>
+#endif
ADAPTER_INFO * CommonULT::pGfxAdapterInfo = NULL;
PLATFORM CommonULT::GfxPlatform = {};
GMM_CLIENT_CONTEXT *CommonULT::pGmmULTClientContext = NULL;
+PFNGMMINIT CommonULT::pfnGmmInit = {0};
+PFNGMMDESTROY CommonULT::pfnGmmDestroy = {0};
+#ifdef _WIN32
+ HINSTANCE CommonULT::hGmmLib = NULL;
+#else
+ void *CommonULT::hGmmLib = NULL;
+#endif
+
+void CommonULT::AllocateAdapterInfo()
+{
+ if(!pGfxAdapterInfo)
+ {
+ pGfxAdapterInfo = (ADAPTER_INFO *)malloc(sizeof(ADAPTER_INFO));
+ if(!pGfxAdapterInfo)
+ {
+ ASSERT_TRUE(false);
+ return;
+ }
+ memset(pGfxAdapterInfo, 0, sizeof(ADAPTER_INFO));
+ }
+}
void CommonULT::SetUpTestCase()
{
@@ -37,16 +61,24 @@
GfxPlatform.eRenderCoreFamily = IGFX_GEN8_CORE;
}
- if(!pGfxAdapterInfo)
- {
- pGfxAdapterInfo = (ADAPTER_INFO *)malloc(sizeof(ADAPTER_INFO));
- if(!pGfxAdapterInfo)
- {
- ASSERT_TRUE(false);
- return;
- }
- memset(pGfxAdapterInfo, 0, sizeof(ADAPTER_INFO));
- }
+ AllocateAdapterInfo();
+
+#ifdef GMM_LIB_DLL
+ hGmmLib = dlopen(GMM_UMD_DLL, RTLD_LAZY);
+ ASSERT_TRUE(hGmmLib);
+
+ *(void **)(&pfnGmmInit) = dlsym(hGmmLib, "GmmInit");
+ *(void **)(&pfnGmmDestroy) = dlsym(hGmmLib, "GmmDestroy");
+
+ ASSERT_TRUE(pfnGmmInit);
+ ASSERT_TRUE(pfnGmmDestroy);
+
+ pGmmULTClientContext = pfnGmmInit(GfxPlatform,
+ &pGfxAdapterInfo->SkuTable,
+ &pGfxAdapterInfo->WaTable,
+ &pGfxAdapterInfo->SystemInfo,
+ GMM_EXCITE_VISTA);
+#else
GMM_STATUS GmmStatus = GmmInitGlobalContext(GfxPlatform,
&pGfxAdapterInfo->SkuTable,
@@ -57,14 +89,29 @@
ASSERT_EQ(GmmStatus, GMM_SUCCESS);
pGmmULTClientContext = GmmCreateClientContext(GMM_EXCITE_VISTA);
+#endif // GMM_LIB_DLL
+
ASSERT_TRUE(pGmmULTClientContext);
}
void CommonULT::TearDownTestCase()
{
printf("%s\n", __FUNCTION__);
+
+#ifdef GMM_LIB_DLL
+ pfnGmmDestroy(static_cast<GMM_CLIENT_CONTEXT *>(pGmmULTClientContext));
+
+ if(hGmmLib)
+ {
+ dlclose(hGmmLib);
+ }
+#else
GmmDeleteClientContext(pGmmULTClientContext);
GmmDestroyGlobalContext();
+#endif
+
+ hGmmLib = NULL;
+ pGmmULTClientContext = NULL;
free(pGfxAdapterInfo);
pGfxAdapterInfo = NULL;
GfxPlatform = {};
diff --git a/Source/GmmLib/ULT/GmmCommonULT.h b/Source/GmmLib/ULT/GmmCommonULT.h
index cacf7b7..d62e3d3 100644
--- a/Source/GmmLib/ULT/GmmCommonULT.h
+++ b/Source/GmmLib/ULT/GmmCommonULT.h
@@ -24,20 +24,41 @@
#include "stdafx.h"
-extern GMM_GLOBAL_CONTEXT *pGmmGlobalContext;
+typedef GMM_CLIENT_CONTEXT *(GMM_STDCALL * PFNGMMINIT)
+#ifdef _WIN32
+ (const PLATFORM,
+ const SKU_FEATURE_TABLE *,
+ const WA_TABLE *,
+ const GT_SYSTEM_INFO *,
+ GMM_CLIENT);
+#else
+ (const PLATFORM Platform,
+ const void * pSkuTable,
+ const void * pWaTable,
+ const void * pGtSysInfo,
+ GMM_CLIENT ClientType);
+#endif
+typedef void(GMM_STDCALL *PFNGMMDESTROY)(GMM_CLIENT_CONTEXT *);
class CommonULT : public testing::Test
{
public:
static void SetUpTestCase();
static void TearDownTestCase();
+ static void AllocateAdapterInfo();
protected:
static ADAPTER_INFO *pGfxAdapterInfo;
static PLATFORM GfxPlatform;
- //static GMM_GLOBAL_CONTEXT *pGmmGlobalContext; // TODO: when GlobalContext class initialization is in place we will replace global vairable and
- // extern for pGmmGlobalContext with local class instance initialized by ULT.
- static GMM_CLIENT_CONTEXT *pGmmULTClientContext; ///< GMM ClientContext need for GMM ULT
+ static GMM_CLIENT_CONTEXT *pGmmULTClientContext;
+ static PFNGMMINIT pfnGmmInit;
+ static PFNGMMDESTROY pfnGmmDestroy;
+
+ #ifdef _WIN32
+ static HINSTANCE hGmmLib;
+ #else
+ static void *hGmmLib;
+ #endif
};
diff --git a/Source/GmmLib/ULT/GmmGen11CachePolicyULT.cpp b/Source/GmmLib/ULT/GmmGen11CachePolicyULT.cpp
index fa4baa5..5f60a6f 100644
--- a/Source/GmmLib/ULT/GmmGen11CachePolicyULT.cpp
+++ b/Source/GmmLib/ULT/GmmGen11CachePolicyULT.cpp
@@ -34,6 +34,12 @@
{
GfxPlatform.eProductFamily = IGFX_ICELAKE;
GfxPlatform.eRenderCoreFamily = IGFX_GEN11_CORE;
+ AllocateAdapterInfo();
+
+ pGfxAdapterInfo->SystemInfo.L3CacheSizeInKb = 3072;
+ pGfxAdapterInfo->SystemInfo.LLCCacheSizeInKb = 2 * 1024; //2 MB
+ pGfxAdapterInfo->SystemInfo.EdramSizeInKb = 128 * 1024; //128 MB
+ const_cast<SKU_FEATURE_TABLE &>(pGfxAdapterInfo->SkuTable).FtrEDram = 1;
CommonULT::SetUpTestCase();
@@ -54,23 +60,15 @@
void CTestGen11CachePolicy::CheckL3CachePolicy()
{
- ASSERT_TRUE(pGmmGlobalContext);
-
const uint32_t L3_WB_CACHEABLE = 0x3;
const uint32_t L3_UNCACHEABLE = 0x1;
- // Setup SKU/WA flags
- pGmmGlobalContext->GetGtSysInfo()->L3CacheSizeInKb = 3072; //768 KB
-
- // Re-init cache policy based on above info
- pGmmGlobalContext->GetCachePolicyObj()->InitCachePolicy();
-
// Check Usage MOCS index against MOCS settings
for(uint32_t Usage = GMM_RESOURCE_USAGE_UNKNOWN; Usage < GMM_RESOURCE_USAGE_MAX; Usage++)
{
- GMM_CACHE_POLICY_ELEMENT ClientRequest = pGmmGlobalContext->GetCachePolicyElement((GMM_RESOURCE_USAGE_TYPE)Usage);
- uint32_t AssignedMocsIdx = ClientRequest.MemoryObjectOverride.Gen11.Index;
- GMM_CACHE_POLICY_TBL_ELEMENT Mocs = pGmmGlobalContext->GetCachePolicyTlbElement()[AssignedMocsIdx];
+ GMM_CACHE_POLICY_ELEMENT ClientRequest = pGmmULTClientContext->GetCachePolicyElement((GMM_RESOURCE_USAGE_TYPE)Usage);
+ uint32_t AssignedMocsIdx = ClientRequest.MemoryObjectOverride.Gen11.Index;
+ GMM_CACHE_POLICY_TBL_ELEMENT Mocs = pGmmULTClientContext->GetCachePolicyTlbElement(AssignedMocsIdx);
EXPECT_EQ(0, Mocs.L3.ESC) << "Usage# " << Usage << ": ESC is non-zero";
EXPECT_EQ(0, Mocs.L3.SCC) << "Usage# " << Usage << ": SCC is non-zero";
@@ -109,8 +107,6 @@
void CTestGen11CachePolicy::CheckLlcEdramCachePolicy()
{
- ASSERT_TRUE(pGmmGlobalContext);
-
const uint32_t TargetCache_ELLC = 0;
const uint32_t TargetCache_LLC = 1;
const uint32_t TargetCache_LLC_ELLC = 2;
@@ -119,17 +115,12 @@
const uint32_t LeCC_WB_CACHEABLE = 0x3;
const uint32_t LeCC_WT_CACHEABLE = 0x2;
- const_cast<SKU_FEATURE_TABLE &>(pGmmGlobalContext->GetSkuTable()).FtrEDram = 0;
-
- // Re-init cache policy with above info
- pGmmGlobalContext->GetCachePolicyObj()->InitCachePolicy();
-
// Check Usage MOCS index against MOCS settings
for(uint32_t Usage = GMM_RESOURCE_USAGE_UNKNOWN; Usage < GMM_RESOURCE_USAGE_MAX; Usage++)
{
- GMM_CACHE_POLICY_ELEMENT ClientRequest = pGmmGlobalContext->GetCachePolicyElement((GMM_RESOURCE_USAGE_TYPE)Usage);
- uint32_t AssignedMocsIdx = ClientRequest.MemoryObjectOverride.Gen11.Index;
- GMM_CACHE_POLICY_TBL_ELEMENT Mocs = pGmmGlobalContext->GetCachePolicyTlbElement()[AssignedMocsIdx];
+ GMM_CACHE_POLICY_ELEMENT ClientRequest = pGmmULTClientContext->GetCachePolicyElement((GMM_RESOURCE_USAGE_TYPE)Usage);
+ uint32_t AssignedMocsIdx = ClientRequest.MemoryObjectOverride.Gen11.Index;
+ GMM_CACHE_POLICY_TBL_ELEMENT Mocs = pGmmULTClientContext->GetCachePolicyTlbElement(AssignedMocsIdx);
// Check for unused fields
EXPECT_EQ(0, Mocs.LeCC.AOM) << "Usage# " << Usage << ": AOM is non-zero";
diff --git a/Source/GmmLib/ULT/GmmGen9CachePolicyULT.cpp b/Source/GmmLib/ULT/GmmGen9CachePolicyULT.cpp
index 4600a1c..cdf6364 100644
--- a/Source/GmmLib/ULT/GmmGen9CachePolicyULT.cpp
+++ b/Source/GmmLib/ULT/GmmGen9CachePolicyULT.cpp
@@ -35,6 +35,13 @@
GfxPlatform.eProductFamily = IGFX_SKYLAKE;
GfxPlatform.eRenderCoreFamily = IGFX_GEN9_CORE;
+ AllocateAdapterInfo();
+
+ pGfxAdapterInfo->SystemInfo.L3CacheSizeInKb = 768;
+ pGfxAdapterInfo->SystemInfo.LLCCacheSizeInKb = 2 * 1024; //2 MB
+ pGfxAdapterInfo->SystemInfo.EdramSizeInKb = 128 * 1024; //128 MB
+ const_cast<SKU_FEATURE_TABLE &>(pGfxAdapterInfo->SkuTable).FtrEDram = 1;
+
CommonULT::SetUpTestCase();
printf("%s\n", __FUNCTION__);
@@ -54,23 +61,15 @@
void CTestGen9CachePolicy::CheckL3CachePolicy()
{
- ASSERT_TRUE(pGmmGlobalContext);
-
const uint32_t L3_WB_CACHEABLE = 0x3;
const uint32_t L3_UNCACHEABLE = 0x1;
- // Setup SKU/WA flags
- pGmmGlobalContext->GetGtSysInfo()->L3CacheSizeInKb = 768; //768 KB
-
- // Re-init cache policy based on above info
- pGmmGlobalContext->GetCachePolicyObj()->InitCachePolicy();
-
// Check Usage MOCS index against MOCS settings
for(uint32_t Usage = GMM_RESOURCE_USAGE_UNKNOWN; Usage < GMM_RESOURCE_USAGE_MAX; Usage++)
{
- GMM_CACHE_POLICY_ELEMENT ClientRequest = pGmmGlobalContext->GetCachePolicyElement((GMM_RESOURCE_USAGE_TYPE)Usage);
+ GMM_CACHE_POLICY_ELEMENT ClientRequest = pGmmULTClientContext->GetCachePolicyElement((GMM_RESOURCE_USAGE_TYPE)Usage);
uint32_t AssignedMocsIdx = ClientRequest.MemoryObjectOverride.Gen9.Index;
- GMM_CACHE_POLICY_TBL_ELEMENT Mocs = pGmmGlobalContext->GetCachePolicyTlbElement()[AssignedMocsIdx];
+ GMM_CACHE_POLICY_TBL_ELEMENT Mocs = pGmmULTClientContext->GetCachePolicyTlbElement(AssignedMocsIdx);
EXPECT_EQ(0, Mocs.L3.ESC) << "Usage# " << Usage << ": ESC is non-zero";
EXPECT_EQ(0, Mocs.L3.SCC) << "Usage# " << Usage << ": SCC is non-zero";
@@ -96,8 +95,6 @@
void CTestGen9CachePolicy::CheckLlcEdramCachePolicy()
{
- ASSERT_TRUE(pGmmGlobalContext);
-
const uint32_t TargetCache_ELLC = 0;
const uint32_t TargetCache_LLC = 1;
const uint32_t TargetCache_LLC_ELLC = 2;
@@ -105,20 +102,12 @@
const uint32_t LeCC_UNCACHEABLE = 0x1;
const uint32_t LeCC_WB_CACHEABLE = 0x3;
- // Setup SKU/WA flags
- pGmmGlobalContext->GetGtSysInfo()->LLCCacheSizeInKb = 2 * 1024; //2 MB
- pGmmGlobalContext->GetGtSysInfo()->EdramSizeInKb = 128 * 1024; //128 MB
- const_cast<SKU_FEATURE_TABLE &>(pGmmGlobalContext->GetSkuTable()).FtrEDram = 1;
-
- // Re-init cache policy with above info
- pGmmGlobalContext->GetCachePolicyObj()->InitCachePolicy();
-
// Check Usage MOCS index against MOCS settings
for(uint32_t Usage = GMM_RESOURCE_USAGE_UNKNOWN; Usage < GMM_RESOURCE_USAGE_MAX; Usage++)
{
- GMM_CACHE_POLICY_ELEMENT ClientRequest = pGmmGlobalContext->GetCachePolicyElement((GMM_RESOURCE_USAGE_TYPE)Usage);
+ GMM_CACHE_POLICY_ELEMENT ClientRequest = pGmmULTClientContext->GetCachePolicyElement((GMM_RESOURCE_USAGE_TYPE)Usage);
uint32_t AssignedMocsIdx = ClientRequest.MemoryObjectOverride.Gen9.Index;
- GMM_CACHE_POLICY_TBL_ELEMENT Mocs = pGmmGlobalContext->GetCachePolicyTlbElement()[AssignedMocsIdx];
+ GMM_CACHE_POLICY_TBL_ELEMENT Mocs = pGmmULTClientContext->GetCachePolicyTlbElement(AssignedMocsIdx);
// Check for unused fields
EXPECT_EQ(0, Mocs.LeCC.AOM) << "Usage# " << Usage << ": AOM is non-zero";
diff --git a/Source/GmmLib/ULT/GmmGen9ResourceULT.cpp b/Source/GmmLib/ULT/GmmGen9ResourceULT.cpp
index 14c6f1e..d8adb95 100644
--- a/Source/GmmLib/ULT/GmmGen9ResourceULT.cpp
+++ b/Source/GmmLib/ULT/GmmGen9ResourceULT.cpp
@@ -3382,9 +3382,9 @@
uint32_t TestArraySize[2] = {1, 5};
- uint32_t HAlign = 0, VAlign = 0, TileDimX = 0;
- uint32_t TileDimY = 0, MCSHAlign = 0, MCSVAlign = 0, TileSize = 0;
- uint32_t ExpectedMCSBpp = 0;
+ uint32_t HAlign = 0, VAlign = 0, TileDimX = 0, TileDimY = 0;
+ uint32_t MCSHAlign = 0, MCSVAlign = 0, TileSize = 0;
+ uint32_t ExpectedMCSBpp;
std::vector<tuple<int, int, int, bool, int, int>> List; //TEST_TILE_TYPE, TEST_BPP, TEST_RESOURCE_TYPE, Depth or RT, TestDimension index, ArraySize
auto Size = BuildInputIterator(List, 4, 2); // Size of arrays TestDimensions, TestArraySize
diff --git a/Source/GmmLib/ULT/stdafx.h b/Source/GmmLib/ULT/stdafx.h
index 2cc051c..9a89212 100644
--- a/Source/GmmLib/ULT/stdafx.h
+++ b/Source/GmmLib/ULT/stdafx.h
@@ -59,7 +59,8 @@
#include "../inc/External/Common/GmmInfoExt.h"
#include "../inc/External/Common/GmmInfo.h"
#include "../inc/External/Common/GmmClientContext.h"
-
+#include "../inc/External/Common/GmmLibDll.h"
+#include "../inc/External/Common/GmmLibDllName.h"
#ifdef __cplusplus
}
diff --git a/Source/GmmLib/inc/External/Common/GmmClientContext.h b/Source/GmmLib/inc/External/Common/GmmClientContext.h
index d76ee0d..43b9367 100644
--- a/Source/GmmLib/inc/External/Common/GmmClientContext.h
+++ b/Source/GmmLib/inc/External/Common/GmmClientContext.h
@@ -103,6 +103,7 @@
GMM_VIRTUAL GMM_CACHE_POLICY_ELEMENT GMM_STDCALL GetCachePolicyElement(GMM_RESOURCE_USAGE_TYPE Usage);
GMM_VIRTUAL GMM_CACHE_POLICY_TBL_ELEMENT GMM_STDCALL GetCachePolicyTlbElement(uint32_t MocsIdx);
GMM_VIRTUAL GMM_PLATFORM_INFO& GMM_STDCALL GetPlatformInfo();
+ GMM_VIRTUAL void GMM_STDCALL GetExtendedTextureAlign(uint32_t Mode, ALIGNMENT &UnitAlign);
GMM_VIRTUAL uint8_t GMM_STDCALL IsPlanar(GMM_RESOURCE_FORMAT Format);
GMM_VIRTUAL uint8_t GMM_STDCALL IsP0xx(GMM_RESOURCE_FORMAT Format);
diff --git a/Source/GmmLib/inc/External/Common/GmmLibDllName.h b/Source/GmmLib/inc/External/Common/GmmLibDllName.h
index 29dcac8..fd3090a 100755
--- a/Source/GmmLib/inc/External/Common/GmmLibDllName.h
+++ b/Source/GmmLib/inc/External/Common/GmmLibDllName.h
@@ -22,19 +22,24 @@
#pragma once
#if defined(_WIN64 ) || defined(__x86_64__) || defined(__LP64__)
- #define GMM_ENTRY_NAME "OpenGmm"
+ #define GMM_ENTRY_NAME "OpenGmm"
+ #define GMM_INIT_NAME "GmmInit"
+ #define GMM_DESTROY_NAME "GmmDestroy"
- #if defined(_WIN64 )
+ #if defined(_WIN64)
#define GMM_UMD_DLL "igdgmm64.dll"
#else
#define GMM_UMD_DLL "libigdgmm.so"
#endif
#else
- #define GMM_ENTRY_NAME "_OpenGmm@4"
+ #define GMM_ENTRY_NAME "_OpenGmm@4"
+
+ #define GMM_INIT_NAME "_GmmInit@48"
+ #define GMM_DESTROY_NAME "_GmmDestroy@4"
#if defined(_WIN32)
#define GMM_UMD_DLL "igdgmm32.dll"
#else
#define GMM_UMD_DLL "libigdgmm.so"
#endif
-#endif
\ No newline at end of file
+#endif