diff --git a/Source/GmmLib/Resource/GmmResourceInfoCommon.cpp b/Source/GmmLib/Resource/GmmResourceInfoCommon.cpp index be7ada5..c9ebccd 100644 --- a/Source/GmmLib/Resource/GmmResourceInfoCommon.cpp +++ b/Source/GmmLib/Resource/GmmResourceInfoCommon.cpp @@ -366,6 +366,12 @@ GMM_STATUS GMM_STDCALL GmmLib::GmmResourceInfoCommon::Create(Context &GmmLibCont AuxSurf.Size += GMM_KBYTE(64); } } + + if(Surf.Flags.Gpu.ProceduralTexture) + { + //Do not require main surface access either in GPUVA/physical space. + Surf.Size = 0; + } TotalSize = Surf.Size + AuxSurf.Size; //Not including AuxSecSurf size, multi-Aux surface isn't supported for displayables Alignment = GFX_ULONG_CAST(Surf.Pitch * pPlatform->TileInfo[Surf.TileMode].LogicalTileHeight); diff --git a/Source/GmmLib/ULT/GmmGen12ResourceULT.cpp b/Source/GmmLib/ULT/GmmGen12ResourceULT.cpp index 1ab9f0d..11fe08f 100644 --- a/Source/GmmLib/ULT/GmmGen12ResourceULT.cpp +++ b/Source/GmmLib/ULT/GmmGen12ResourceULT.cpp @@ -2539,7 +2539,8 @@ TEST_F(CTestGen12Resource, Test2DTileYfAMFSResource) VerifyResourceVAlign(ResourceInfo, VAlign[i]); VerifyResourcePitch(ResourceInfo, TileSize[i][0]); // As wide as 1 Tile VerifyResourcePitchInTiles(ResourceInfo, 1); // 1 Tile wide - VerifyResourceSize(ResourceInfo, GMM_KBYTE(4)); // 1 Tile Big + //VerifyResourceSize(ResourceInfo, GMM_KBYTE(4)); // 1 Tile Big, old behaviour consuming bytes for main-surface (paired Texture dimensions) only used to obtain GPUVA for indirect (Auxtable mapped) CCS access by sampler. + VerifyResourceSize(ResourceInfo, 0); // New behaviour, optimized SFT size, sampler doesn't access CCS via main.. kernels refer the CCS-via its GPUVA (w/o main). VerifyResourceQPitch(ResourceInfo, 0); // Not Tested //test main surface base alignment is 4KB, since AMFS PT isn't compressed @@ -2586,7 +2587,8 @@ TEST_F(CTestGen12Resource, Test2DTileYfAMFSResource) VerifyResourceVAlign(ResourceInfo, VAlign[i]); VerifyResourcePitch(ResourceInfo, TileSize[i][0] * 2); // As wide as 2 tile VerifyResourcePitchInTiles(ResourceInfo, 2); // 2 tile wide - VerifyResourceSize(ResourceInfo, GMM_KBYTE(4) * 2); // 2 tile big + //VerifyResourceSize(ResourceInfo, GMM_KBYTE(4) * 2); // 2 tile big, old behaviour consuming bytes for main-surface (paired Texture dimensions) only used to obtain GPUVA for indirect (Auxtable mapped) CCS access by sampler. + VerifyResourceSize(ResourceInfo, 0); // New behaviour, optimized SFT size, sampler doesn't access CCS via main.. kernels refer the CCS-via its GPUVA (w/o main). VerifyResourceQPitch(ResourceInfo, 0); // Not tested @@ -2632,7 +2634,8 @@ TEST_F(CTestGen12Resource, Test2DTileYfAMFSResource) VerifyResourceVAlign(ResourceInfo, VAlign[i]); VerifyResourcePitch(ResourceInfo, TileSize[i][0] * 2); // As wide as 2 tile VerifyResourcePitchInTiles(ResourceInfo, 2); // 2 tile wide - VerifyResourceSize(ResourceInfo, GMM_KBYTE(4) * 2 * 2); // 2 tile wide; and 2-tile high + //VerifyResourceSize(ResourceInfo, GMM_KBYTE(4) * 2 * 2); // 2 tile wide; and 2-tile high, old behaviour consuming bytes for main-surface (paired Texture dimensions) only used to obtain GPUVA for indirect (Auxtable mapped) CCS access by sampler. + VerifyResourceSize(ResourceInfo, 0); // New behaviour, optimized SFT size, sampler doesn't access CCS via main.. kernels refer the CCS-via its GPUVA (w/o main). VerifyResourceQPitch(ResourceInfo, 0); // Not tested //test main surface base alignment is 4KB