Tileheight alligned ArrayQPitch for Tile4/TileY (#84)
diff --git a/Source/GmmLib/Texture/GmmGen10Texture.cpp b/Source/GmmLib/Texture/GmmGen10Texture.cpp
index d58172f..b68953c 100644
--- a/Source/GmmLib/Texture/GmmGen10Texture.cpp
+++ b/Source/GmmLib/Texture/GmmGen10Texture.cpp
@@ -351,7 +351,8 @@
{
uint32_t Alignment = VAlign;
if((pTexInfo->Type == RESOURCE_3D && !pTexInfo->Flags.Info.Linear) ||
- (pTexInfo->Flags.Gpu.S3dDx && pGmmLibContext->GetSkuTable().FtrDisplayEngineS3d))
+ (pTexInfo->Flags.Gpu.S3dDx && pGmmLibContext->GetSkuTable().FtrDisplayEngineS3d) ||
+ (pTexInfo->Flags.Wa.MediaPipeUsage))
{
Alignment = pPlatform->TileInfo[pTexInfo->TileMode].LogicalTileHeight;
//Gmm uses TileY for Stencil allocations, having half TileW height (TileY width compensates)
diff --git a/Source/GmmLib/Texture/GmmGen12Texture.cpp b/Source/GmmLib/Texture/GmmGen12Texture.cpp
index cb6f6ce..fe5aa04 100644
--- a/Source/GmmLib/Texture/GmmGen12Texture.cpp
+++ b/Source/GmmLib/Texture/GmmGen12Texture.cpp
@@ -374,7 +374,8 @@
{
uint32_t Alignment = VAlign;
if((pTexInfo->Type == RESOURCE_3D && !pTexInfo->Flags.Info.Linear) ||
- (pTexInfo->Flags.Gpu.S3dDx && pGmmLibContext->GetSkuTable().FtrDisplayEngineS3d))
+ (pTexInfo->Flags.Gpu.S3dDx && pGmmLibContext->GetSkuTable().FtrDisplayEngineS3d) ||
+ (pTexInfo->Flags.Wa.MediaPipeUsage))
{
Alignment = pPlatform->TileInfo[pTexInfo->TileMode].LogicalTileHeight;
}
diff --git a/Source/GmmLib/Texture/GmmGen9Texture.cpp b/Source/GmmLib/Texture/GmmGen9Texture.cpp
index dacbc06..6e6b9f9 100644
--- a/Source/GmmLib/Texture/GmmGen9Texture.cpp
+++ b/Source/GmmLib/Texture/GmmGen9Texture.cpp
@@ -576,7 +576,8 @@
Alignment = pTexInfo->Alignment.VAlign;
if((pTexInfo->Type == RESOURCE_3D && !pTexInfo->Flags.Info.Linear) ||
- (pTexInfo->Flags.Gpu.S3dDx && pGmmLibContext->GetSkuTable().FtrDisplayEngineS3d))
+ (pTexInfo->Flags.Gpu.S3dDx && pGmmLibContext->GetSkuTable().FtrDisplayEngineS3d) ||
+ (pTexInfo->Flags.Wa.MediaPipeUsage))
{
Alignment = pPlatform->TileInfo[pTexInfo->TileMode].LogicalTileHeight;
//Gmm uses TileY for Stencil allocations, having half TileW height (TileY width compensates)
@@ -765,7 +766,8 @@
{
uint32_t Alignment = VAlign;
if((pTexInfo->Type == RESOURCE_3D && !pTexInfo->Flags.Info.Linear) ||
- (pTexInfo->Flags.Gpu.S3dDx && pGmmLibContext->GetSkuTable().FtrDisplayEngineS3d))
+ (pTexInfo->Flags.Gpu.S3dDx && pGmmLibContext->GetSkuTable().FtrDisplayEngineS3d) ||
+ (pTexInfo->Flags.Wa.MediaPipeUsage))
{
Alignment = pPlatform->TileInfo[pTexInfo->TileMode].LogicalTileHeight;
//Gmm uses TileY for Stencil allocations, having half TileW height (TileY width compensates)
diff --git a/Source/GmmLib/inc/External/Common/GmmResourceFlags.h b/Source/GmmLib/inc/External/Common/GmmResourceFlags.h
index 1ec461f..59ad6cf 100644
--- a/Source/GmmLib/inc/External/Common/GmmResourceFlags.h
+++ b/Source/GmmLib/inc/External/Common/GmmResourceFlags.h
@@ -150,7 +150,7 @@
uint32_t DisableDisplayCcsClearColor : 1; // Disables display clear color
uint32_t DisableDisplayCcsCompression : 1; // Disables display decompression on the surface (it disables display awareness of both fast clear/render compression)
uint32_t PreGen12FastClearOnly : 1; // i.e. AUX_CCS_D (instead of AUX_CCS_E). Flag carried by GMM between UMDs to support shared resources.
- uint32_t Reserved : 1; // Reserved
+ uint32_t MediaPipeUsage : 1; // TileHeight Aligned ArrayQPitch on Tile4/TileY
} Wa;
} GMM_RESOURCE_FLAG;