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)