Fail resource allocation if the U plane offset exceeds the HW limitions (#26)
diff --git a/Source/GmmLib/Texture/GmmTextureAlloc.cpp b/Source/GmmLib/Texture/GmmTextureAlloc.cpp
index 4fea8fc..a836b02 100644
--- a/Source/GmmLib/Texture/GmmTextureAlloc.cpp
+++ b/Source/GmmLib/Texture/GmmTextureAlloc.cpp
@@ -344,6 +344,17 @@
return false;
}
+ if(GmmIsPlanar(pTexInfo->Format))
+ {
+ if((!GmmIsReconstructableSurface(pTexInfo->Format)) && (pTexInfo->OffsetInfo.Plane.Y[GMM_PLANE_U] >= GMM_MAX_UV_PLANE_Y_OFFSET))
+ {
+ GMM_ASSERTDPF(0,
+ "GmmLib::GmmTextureCalc::ValidateTexInfo:Y offset of U plane"
+ "exceeds max HW U plane Y offset restriction.\r\n");
+ return false;
+ }
+ }
+
GMM_DPF_EXIT;
return true;
}
diff --git a/Source/GmmLib/inc/External/Common/GmmConst.h b/Source/GmmLib/inc/External/Common/GmmConst.h
index d69f867..49ede76 100644
--- a/Source/GmmLib/inc/External/Common/GmmConst.h
+++ b/Source/GmmLib/inc/External/Common/GmmConst.h
@@ -52,3 +52,4 @@
#define GMM_MEDIA_COMPRESSION_STATE_SIZE (64)
#define GMM_CLEAR_COLOR_FLOAT_SIZE (16)
#define GMM_MAX_LCU_SIZE 64 // Media Largest coding Unit
+#define GMM_MAX_UV_PLANE_Y_OFFSET GMM_KBYTE(16) // RENDER_SURFACE_STATE structure only have 0:13 bit to write Y Offset for U or UV Plan(max value is <16384)