Index: branches/HTM-11.2-dev3-Samsung/source/Lib/TLibEncoder/TEncCavlc.cpp
===================================================================
--- branches/HTM-11.2-dev3-Samsung/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 1014)
+++ branches/HTM-11.2-dev3-Samsung/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 1015)
@@ -1599,4 +1599,7 @@
 #endif
         WRITE_FLAG( pcVPS->getVpsDepthModesFlag( i ) ? 1 : 0 ,          "vps_depth_modes_flag[i]" );
+#if SEPARATE_FLAG_I0085
+        WRITE_FLAG( pcVPS->getIVPFlag( i ) ? 1 : 0 ,               "IVP_flag[i]" );
+#endif
         //WRITE_FLAG( pcVPS->getLimQtPredFlag    ( i ) ? 1 : 0 ,          "lim_qt_pred_flag[i]"     ); 
 #if H_3D_INTER_SDC
Index: branches/HTM-11.2-dev3-Samsung/source/Lib/TLibEncoder/TEncCfg.h
===================================================================
--- branches/HTM-11.2-dev3-Samsung/source/Lib/TLibEncoder/TEncCfg.h	(revision 1014)
+++ branches/HTM-11.2-dev3-Samsung/source/Lib/TLibEncoder/TEncCfg.h	(revision 1015)
@@ -414,4 +414,7 @@
 #if H_3D_DIM
   Bool      m_useDMM;
+#if SEPARATE_FLAG_I0085
+  Bool      m_useIVP;
+#endif
   Bool      m_useSDC;
   Bool      m_useDLT;
@@ -1006,4 +1009,8 @@
   Bool      getUseDMM                       ()        { return m_useDMM; }
   Void      setUseDMM                       ( Bool b) { m_useDMM = b;    }
+#if SEPARATE_FLAG_I0085
+  Bool      getUseIVP                       ()        { return m_useIVP; }
+  Void      setUseIVP                       ( Bool b) { m_useIVP = b;    }
+#endif
   Bool      getUseSDC                       ()        { return m_useSDC; }
   Void      setUseSDC                       ( Bool b) { m_useSDC = b;    }
Index: branches/HTM-11.2-dev3-Samsung/source/Lib/TLibEncoder/TEncSbac.cpp
===================================================================
--- branches/HTM-11.2-dev3-Samsung/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 1014)
+++ branches/HTM-11.2-dev3-Samsung/source/Lib/TLibEncoder/TEncSbac.cpp	(revision 1015)
@@ -255,5 +255,9 @@
       curCost += m_CUTransquantBypassFlagSCModel.calcCost( curSliceType, qp, (UChar*)INIT_CU_TRANSQUANT_BYPASS_FLAG );
 #if H_3D_DIM
+#if SEPARATE_FLAG_I0085
+    if( m_pcSlice->getVpsDepthModesFlag() || m_pcSlice->getIVPFlag() )
+#else
     if( m_pcSlice->getVpsDepthModesFlag() )
+#endif
     {
       curCost += m_cDepthIntraModeSCModel.calcCost    ( curSliceType, qp, (UChar*)INIT_DEPTH_INTRA_MODE );
@@ -1134,5 +1138,9 @@
     dir[j] = pcCU->getLumaIntraDir( absPartIdx+partOffset*j );
 #if H_3D_DIM
+#if SEPARATE_FLAG_I0085
+    if( pcCU->getSlice()->getVpsDepthModesFlag() ||  pcCU->getSlice()->getIVPFlag() )
+#else
     if( pcCU->getSlice()->getVpsDepthModesFlag() )
+#endif
     {
       codeIntraDepth( pcCU, absPartIdx+partOffset*j );
@@ -1280,5 +1288,12 @@
     }
     //mode coding
+#if SEPARATE_FLAG_I0085
+    if( pcCU->getSlice()->getVpsDepthModesFlag() && pcCU->getSlice()->getIVPFlag())
+    {
+      m_pcBinIf->encodeBin( uiCodeIdx == 0 ? 0 : 1, m_cDepthIntraModeSCModel.get( 0, 0, 0 ) );
+    }
+#else
     m_pcBinIf->encodeBin( uiCodeIdx == 0 ? 0 : 1, m_cDepthIntraModeSCModel.get( 0, 0, 0 ) );
+#endif
   }
 }
Index: branches/HTM-11.2-dev3-Samsung/source/Lib/TLibEncoder/TEncSearch.cpp
===================================================================
--- branches/HTM-11.2-dev3-Samsung/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 1014)
+++ branches/HTM-11.2-dev3-Samsung/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 1015)
@@ -3132,5 +3132,9 @@
 
 #if H_3D_DIM_DMM
+#if SEPARATE_FLAG_I0085
+      if( ( m_pcEncCfg->getUseDMM() || m_pcEncCfg->getUseIVP() )
+#else
       if( m_pcEncCfg->getUseDMM()
+#endif
 #if H_3D_FAST_DEPTH_INTRA
          && (uiRdModeList[0] != PLANAR_IDX || varCU >= varThreshold)
@@ -3138,5 +3142,30 @@
         )
       {
+#if SEPARATE_FLAG_I0085
+        UInt uiStart, uiEnd;
+        if( m_pcEncCfg->getUseDMM() &&  m_pcEncCfg->getUseIVP() )
+        {
+          uiStart = 0;
+          uiEnd   = 2;
+        }
+        else if( m_pcEncCfg->getUseDMM() )
+        {
+          uiStart = 0;
+          uiEnd   = 1;
+        }
+        else if( m_pcEncCfg->getUseIVP() )
+        {
+          uiStart = 1;
+          uiEnd   = 2;
+        }
+        else
+        {
+          uiStart = 0;
+          uiEnd   = 0;
+        }
+        for( UInt dmmType = uiStart; dmmType < uiEnd; dmmType++ )
+#else
         for( UInt dmmType = 0; dmmType < DMM_NUM_TYPE; dmmType++ )
+#endif
         {
 #if H_3D_FCO
