diff --git a/av1/common/blockd.h b/av1/common/blockd.h
index 013172f..0cfbece 100644
--- a/av1/common/blockd.h
+++ b/av1/common/blockd.h
@@ -405,6 +405,8 @@
 } MODE_INFO;
 
 #if CONFIG_INTRABC
+#define NO_FILTER_FOR_IBC 1  // Disable in-loop filters for frame with intrabc
+
 static INLINE int is_intrabc_block(const MB_MODE_INFO *mbmi) {
   return mbmi->use_intrabc;
 }
diff --git a/av1/common/restoration.c b/av1/common/restoration.c
index 921e6c2..7f15a82 100644
--- a/av1/common/restoration.c
+++ b/av1/common/restoration.c
@@ -1683,6 +1683,7 @@
   assert(rcol0 && rcol1 && rrow0 && rrow1);
 
   if (bsize != cm->sb_size) return 0;
+  if (cm->rst_info[plane].frame_restoration_type == RESTORE_NONE) return 0;
 
   const int is_uv = plane > 0;
 
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index ecc0baf..e8734c1 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -1142,6 +1142,9 @@
 #if CONFIG_LOOP_RESTORATION
 static void decode_restoration_mode(AV1_COMMON *cm,
                                     struct aom_read_bit_buffer *rb) {
+#if CONFIG_INTRABC
+  if (cm->allow_intrabc && NO_FILTER_FOR_IBC) return;
+#endif  // CONFIG_INTRABC
   for (int p = 0; p < MAX_MB_PLANE; ++p) {
     RestorationInfo *rsi = &cm->rst_info[p];
     if (aom_rb_read_bit(rb)) {
@@ -1309,6 +1312,9 @@
 #endif  // CONFIG_LOOP_RESTORATION
 
 static void setup_loopfilter(AV1_COMMON *cm, struct aom_read_bit_buffer *rb) {
+#if CONFIG_INTRABC
+  if (cm->allow_intrabc && NO_FILTER_FOR_IBC) return;
+#endif  // CONFIG_INTRABC
   struct loopfilter *lf = &cm->lf;
 #if !CONFIG_LPF_SB
 #if CONFIG_LOOPFILTER_LEVEL
@@ -1347,6 +1353,9 @@
 
 #if CONFIG_CDEF
 static void setup_cdef(AV1_COMMON *cm, struct aom_read_bit_buffer *rb) {
+#if CONFIG_INTRABC
+  if (cm->allow_intrabc && NO_FILTER_FOR_IBC) return;
+#endif  // CONFIG_INTRABC
   int i;
 #if CONFIG_CDEF_SINGLEPASS
   cm->cdef_pri_damping = cm->cdef_sec_damping = aom_rb_read_literal(rb, 2) + 3;
@@ -2423,34 +2432,35 @@
   }
 
 #if CONFIG_INTRABC
-// When intraBC is on, do loop filtering per superblock,
-// instead of do it after the whole frame has been encoded,
-// as is in the else branch
-#else
+  if (!(cm->allow_intrabc && NO_FILTER_FOR_IBC))
+#endif  // CONFIG_INTRABC
+  {
 // Loopfilter the whole frame.
 #if CONFIG_LPF_SB
-  av1_loop_filter_frame(get_frame_new_buffer(cm), cm, &pbi->mb,
-                        cm->lf.filter_level, 0, 0, 0, 0);
+    av1_loop_filter_frame(get_frame_new_buffer(cm), cm, &pbi->mb,
+                          cm->lf.filter_level, 0, 0, 0, 0);
 #else
 #if CONFIG_OBU
-  if (endTile == cm->tile_rows * cm->tile_cols - 1)
+    if (endTile == cm->tile_rows * cm->tile_cols - 1)
 #endif
 #if CONFIG_LOOPFILTER_LEVEL
-    if (cm->lf.filter_level[0] || cm->lf.filter_level[1]) {
-      av1_loop_filter_frame(get_frame_new_buffer(cm), cm, &pbi->mb,
-                            cm->lf.filter_level[0], cm->lf.filter_level[1], 0,
-                            0);
-      av1_loop_filter_frame(get_frame_new_buffer(cm), cm, &pbi->mb,
-                            cm->lf.filter_level_u, cm->lf.filter_level_u, 1, 0);
-      av1_loop_filter_frame(get_frame_new_buffer(cm), cm, &pbi->mb,
-                            cm->lf.filter_level_v, cm->lf.filter_level_v, 2, 0);
-    }
+      if (cm->lf.filter_level[0] || cm->lf.filter_level[1]) {
+        av1_loop_filter_frame(get_frame_new_buffer(cm), cm, &pbi->mb,
+                              cm->lf.filter_level[0], cm->lf.filter_level[1], 0,
+                              0);
+        av1_loop_filter_frame(get_frame_new_buffer(cm), cm, &pbi->mb,
+                              cm->lf.filter_level_u, cm->lf.filter_level_u, 1,
+                              0);
+        av1_loop_filter_frame(get_frame_new_buffer(cm), cm, &pbi->mb,
+                              cm->lf.filter_level_v, cm->lf.filter_level_v, 2,
+                              0);
+      }
 #else
-  av1_loop_filter_frame(get_frame_new_buffer(cm), cm, &pbi->mb,
-                        cm->lf.filter_level, 0, 0);
+    av1_loop_filter_frame(get_frame_new_buffer(cm), cm, &pbi->mb,
+                          cm->lf.filter_level, 0, 0);
 #endif  // CONFIG_LOOPFILTER_LEVEL
 #endif  // CONFIG_LPF_SB
-#endif  // CONFIG_INTRABC
+  }
   if (cm->frame_parallel_decode)
     av1_frameworker_broadcast(pbi->cur_buf, INT_MAX);
 
@@ -3182,6 +3192,29 @@
   if (frame_is_intra_only(cm) || cm->error_resilient_mode)
     av1_setup_past_independence(cm);
 
+#if CONFIG_INTRABC
+  if (cm->allow_intrabc && NO_FILTER_FOR_IBC) {
+    // Set parameters corresponding to no filtering.
+    struct loopfilter *lf = &cm->lf;
+#if CONFIG_LOOPFILTER_LEVEL
+    lf->filter_level[0] = 0;
+    lf->filter_level[1] = 0;
+#else
+    lf->filter_level = 0;
+#endif
+#if CONFIG_CDEF
+    cm->cdef_bits = 0;
+    cm->cdef_strengths[0] = 0;
+    cm->nb_cdef_strengths = 1;
+#endif  // CONFIG_CDEF
+#if CONFIG_LOOP_RESTORATION
+    cm->rst_info[0].frame_restoration_type = RESTORE_NONE;
+    cm->rst_info[1].frame_restoration_type = RESTORE_NONE;
+    cm->rst_info[2].frame_restoration_type = RESTORE_NONE;
+#endif  // CONFIG_LOOP_RESTORATION
+  }
+#endif  // CONFIG_INTRABC
+
   setup_loopfilter(cm, rb);
   setup_quantization(cm, rb);
   xd->bd = (int)cm->bit_depth;
@@ -3810,7 +3843,11 @@
 #endif
 
 #if CONFIG_CDEF
-  if (!cm->skip_loop_filter && !cm->all_lossless) {
+  if (!cm->skip_loop_filter &&
+#if CONFIG_INTRABC
+      !(cm->allow_intrabc && NO_FILTER_FOR_IBC) &&
+#endif  // CONFIG_INTRABC
+      !cm->all_lossless) {
     av1_cdef_frame(&pbi->cur_buf->buf, cm, &pbi->mb);
   }
 #endif  // CONFIG_CDEF
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 0798cfb..8d8a664 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -2532,6 +2532,9 @@
 #if CONFIG_LOOP_RESTORATION
 static void encode_restoration_mode(AV1_COMMON *cm,
                                     struct aom_write_bit_buffer *wb) {
+#if CONFIG_INTRABC
+  if (cm->allow_intrabc && NO_FILTER_FOR_IBC) return;
+#endif  // CONFIG_INTRABC
   for (int p = 0; p < MAX_MB_PLANE; ++p) {
     RestorationInfo *rsi = &cm->rst_info[p];
     switch (rsi->frame_restoration_type) {
@@ -2693,6 +2696,9 @@
 #endif  // CONFIG_LOOP_RESTORATION
 
 static void encode_loopfilter(AV1_COMMON *cm, struct aom_write_bit_buffer *wb) {
+#if CONFIG_INTRABC
+  if (cm->allow_intrabc && NO_FILTER_FOR_IBC) return;
+#endif  // CONFIG_INTRABC
   int i;
   struct loopfilter *lf = &cm->lf;
 
@@ -2743,6 +2749,9 @@
 
 #if CONFIG_CDEF
 static void encode_cdef(const AV1_COMMON *cm, struct aom_write_bit_buffer *wb) {
+#if CONFIG_INTRABC
+  if (cm->allow_intrabc && NO_FILTER_FOR_IBC) return;
+#endif  // CONFIG_INTRABC
   int i;
 #if CONFIG_CDEF_SINGLEPASS
   aom_wb_write_literal(wb, cm->cdef_pri_damping - 3, 2);
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 7a33add..807b706 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -4616,9 +4616,12 @@
 #if CONFIG_LOOP_RESTORATION
   int no_restoration = 0;
   if (is_lossless_requested(&cpi->oxcf)
+#if CONFIG_INTRABC
+      || (cm->allow_intrabc && NO_FILTER_FOR_IBC)
+#endif  // CONFIG_INTRABC
 #if CONFIG_EXT_TILE
       || cm->single_tile_decoding
-#endif
+#endif  // CONFIG_EXT_TILE
       ) {
     no_loopfilter = 1;
     no_restoration = 1;
@@ -4655,11 +4658,6 @@
     cpi->time_pick_lpf += aom_usec_timer_elapsed(&timer);
   }
 
-#if CONFIG_INTRABC
-// When intraBC is on, do loop filtering per superblock,
-// instead of do it after the whole frame has been encoded,
-// as is in the else branch
-#else
 #if !CONFIG_LPF_SB
 #if CONFIG_LOOPFILTER_LEVEL
   if (lf->filter_level[0] || lf->filter_level[1])
@@ -4685,7 +4683,6 @@
 #endif  // CONFIG_LOOPFILTER_LEVEL
 #endif  // CONFIG_LPF_SB
   }
-#endif  // CONFIG_INTRABC
 
 #if CONFIG_STRIPED_LOOP_RESTORATION
 #if CONFIG_FRAME_SUPERRES && CONFIG_HORZONLY_FRAME_SUPERRES
