diff --git a/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.cpp b/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.cpp index 0de4dbd..8c08251 100644 --- a/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.cpp +++ b/Source/GmmLib/TranslationTable/GmmUmdTranslationTable.cpp @@ -72,7 +72,7 @@ GMM_STATUS GmmLib::PageTable::AllocateL3Table(uint32_t L3TableSize, uint32_t L3A return Status; } - TTL3.GfxAddress = GMM_GFX_ADDRESS_CANONIZE(Alloc.GfxVA); + TTL3.GfxAddress = GMM_GFX_ADDRESS_CANONIZE(pClientContext, Alloc.GfxVA); TTL3.CPUAddress = Alloc.CPUVA; TTL3.NeedRegisterUpdate = true; TTL3.L3Handle = (HANDLE)(uintptr_t)Alloc.Handle; diff --git a/Source/GmmLib/inc/External/Common/GmmCommonExt.h b/Source/GmmLib/inc/External/Common/GmmCommonExt.h index a59a43c..40e9d65 100644 --- a/Source/GmmLib/inc/External/Common/GmmCommonExt.h +++ b/Source/GmmLib/inc/External/Common/GmmCommonExt.h @@ -126,12 +126,12 @@ typedef uint32_t GMM_GLOBAL_GFX_ADDRESS, GMM_GLOBAL_GFX_SIZE_T; #define GMM_GLOBAL_GFX_SIZE_T_CAST(x) ((GMM_GLOBAL_GFX_SIZE_T)(x)) #endif -#define GMM_GFX_ADDRESS_CANONIZE(a) (((int64_t)(a) << (64 - 48)) >> (64 - 48)) // TODO(Minor): When GMM adds platform-dependent VA size caps, change from 48. -#define GMM_GFX_ADDRESS_DECANONIZE(a) ((uint64_t)(a) & (((uint64_t) 1 << 48) - 1)) // " - #define GMM_GFX_PLATFORM_VA_SIZE(pClientContext) (((pClientContext)->GetLibContext()->GetSkuTable().Ftr57bGPUAddressing) ? 57 : 48) #define VASize(pCC) GMM_GFX_PLATFORM_VA_SIZE(pCC) +#define GMM_GFX_ADDRESS_CANONIZE(pCC, a) (((int64_t)(a) << (64 - VASize(pCC))) >> (64 - VASize(pCC))) +#define GMM_GFX_ADDRESS_DECANONIZE(pCC, a) ((uint64_t)(a) & (((uint64_t) 1 << VASize(pCC)) - 1)) + #define GMM_BIT_RANGE(endbit, startbit) ((endbit) - (startbit) + 1) #define GMM_BIT(bit) (1) diff --git a/Source/GmmLib/inc/External/Common/GmmResourceInfoCommon.h b/Source/GmmLib/inc/External/Common/GmmResourceInfoCommon.h index f1e545f..6a4f639 100644 --- a/Source/GmmLib/inc/External/Common/GmmResourceInfoCommon.h +++ b/Source/GmmLib/inc/External/Common/GmmResourceInfoCommon.h @@ -297,11 +297,11 @@ namespace GmmLib { if (IsD3DDdiAllocation) { - return (void *)GMM_GFX_ADDRESS_CANONIZE(ExistingSysMem.pGfxAlignedVirtAddress); + return (void *)GMM_GFX_ADDRESS_CANONIZE(pClientContext, ExistingSysMem.pGfxAlignedVirtAddress); } else { - return (void *)GMM_GFX_ADDRESS_CANONIZE(ExistingSysMem.pVirtAddress); + return (void *)GMM_GFX_ADDRESS_CANONIZE(pClientContext, ExistingSysMem.pVirtAddress); } } @@ -983,7 +983,7 @@ namespace GmmLib // Support for Sparse/Tiled resources will be unified in later if (SvmAddress) { - return GMM_GFX_ADDRESS_CANONIZE(SvmAddress); + return GMM_GFX_ADDRESS_CANONIZE(pClientContext, SvmAddress); } else {