diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index 72c4371..048df6a 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -529,6 +529,7 @@
   int64_t est_rd_arr[MAX_INTER_MODES];
   RdIdxPair rd_idx_pair_arr[MAX_INTER_MODES];
   bool true_rd_arr[MAX_INTER_MODES];
+  uint8_t blk_skip_arr[MAX_INTER_MODES][MAX_MIB_SIZE * MAX_MIB_SIZE];
   RD_STATS rd_cost_arr[MAX_INTER_MODES];
   RD_STATS rd_cost_y_arr[MAX_INTER_MODES];
   RD_STATS rd_cost_uv_arr[MAX_INTER_MODES];
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 10a92c9..cf503cf 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -860,8 +860,9 @@
 
 static void inter_modes_info_push(InterModesInfo *inter_modes_info,
                                   int mode_rate, int64_t sse, int64_t rd,
-                                  bool true_rd, RD_STATS *rd_cost,
-                                  RD_STATS *rd_cost_y, RD_STATS *rd_cost_uv,
+                                  bool true_rd, uint8_t *blk_skip,
+                                  RD_STATS *rd_cost, RD_STATS *rd_cost_y,
+                                  RD_STATS *rd_cost_uv,
                                   const MB_MODE_INFO *mbmi) {
   const int num = inter_modes_info->num;
   assert(num < MAX_INTER_MODES);
@@ -870,6 +871,10 @@
   inter_modes_info->sse_arr[num] = sse;
   inter_modes_info->est_rd_arr[num] = rd;
   inter_modes_info->true_rd_arr[num] = true_rd;
+  if (blk_skip != NULL) {
+    memcpy(inter_modes_info->blk_skip_arr[num], blk_skip,
+           sizeof(blk_skip[0]) * MAX_MIB_SIZE * MAX_MIB_SIZE);
+  }
   inter_modes_info->rd_cost_arr[num] = *rd_cost;
   inter_modes_info->rd_cost_y_arr[num] = *rd_cost_y;
   inter_modes_info->rd_cost_uv_arr[num] = *rd_cost_uv;
@@ -9579,14 +9584,14 @@
         if (!is_comp_pred) {
           assert(curr_sse >= 0);
           inter_modes_info_push(inter_modes_info, mode_rate, curr_sse,
-                                rd_stats->rdcost, false, rd_stats, rd_stats_y,
-                                rd_stats_uv, mbmi);
+                                rd_stats->rdcost, false, NULL, rd_stats,
+                                rd_stats_y, rd_stats_uv, mbmi);
         }
       } else {
         assert(curr_sse >= 0);
         inter_modes_info_push(inter_modes_info, mode_rate, curr_sse,
-                              rd_stats->rdcost, false, rd_stats, rd_stats_y,
-                              rd_stats_uv, mbmi);
+                              rd_stats->rdcost, false, NULL, rd_stats,
+                              rd_stats_y, rd_stats_uv, mbmi);
       }
     } else {
       if (!txfm_search(cpi, tile_data, x, bsize, mi_row, mi_col, rd_stats,
@@ -9616,7 +9621,7 @@
       // structure, since some modes will be conditionally TX searched.
       if (do_tx_search == 2) {
         inter_modes_info_push(inter_modes_info, rd_stats->rate, rd_stats->sse,
-                              rd_stats->rdcost, true, rd_stats, rd_stats_y,
+                              curr_rd, true, x->blk_skip, rd_stats, rd_stats_y,
                               rd_stats_uv, mbmi);
       }
     }
@@ -12974,6 +12979,8 @@
         rd_stats = inter_modes_info->rd_cost_arr[data_idx];
         rd_stats_y = inter_modes_info->rd_cost_y_arr[data_idx];
         rd_stats_uv = inter_modes_info->rd_cost_uv_arr[data_idx];
+        memcpy(x->blk_skip, inter_modes_info->blk_skip_arr[data_idx],
+               sizeof(x->blk_skip[0]) * ctx->num_4x4_blk);
       } else {
         const int mode_rate = inter_modes_info->mode_rate_arr[data_idx];
 
