diff --git a/av1/common/entropy.h b/av1/common/entropy.h
index ee78f56..53ef3b1 100644
--- a/av1/common/entropy.h
+++ b/av1/common/entropy.h
@@ -73,6 +73,7 @@
 struct frame_contexts;
 void av1_reset_cdf_symbol_counters(struct frame_contexts *fc);
 void av1_default_coef_probs(struct AV1Common *cm);
+void av1_init_mode_probs(struct frame_contexts *fc);
 
 struct frame_contexts;
 
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c
index daee332..2ec2241 100644
--- a/av1/common/entropymode.c
+++ b/av1/common/entropymode.c
@@ -1083,7 +1083,7 @@
 #undef NUM_PALETTE_NEIGHBORS
 #undef MAX_COLOR_CONTEXT_HASH
 
-static void init_mode_probs(FRAME_CONTEXT *fc) {
+void av1_init_mode_probs(FRAME_CONTEXT *fc) {
   av1_copy(fc->palette_y_size_cdf, default_palette_y_size_cdf);
   av1_copy(fc->palette_uv_size_cdf, default_palette_uv_size_cdf);
   av1_copy(fc->palette_y_color_index_cdf, default_palette_y_color_index_cdf);
@@ -1204,7 +1204,7 @@
   set_default_lf_deltas(&cm->lf);
 
   av1_default_coef_probs(cm);
-  init_mode_probs(cm->fc);
+  av1_init_mode_probs(cm->fc);
   av1_init_mv_probs(cm);
   cm->fc->initialized = 1;
   av1_setup_frame_contexts(cm);
diff --git a/av1/encoder/firstpass.c b/av1/encoder/firstpass.c
index db098e1..e483b57 100644
--- a/av1/encoder/firstpass.c
+++ b/av1/encoder/firstpass.c
@@ -1212,6 +1212,8 @@
   xd->cfl.store_y = 0;
   av1_frame_init_quantizer(cpi);
 
+  av1_default_coef_probs(cm);
+  av1_init_mode_probs(cm->fc);
   av1_init_mv_probs(cm);
   av1_initialize_rd_consts(cpi);
 
diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c
index 59fd5f3..6bceddb 100644
--- a/av1/encoder/rd.c
+++ b/av1/encoder/rd.c
@@ -582,6 +582,11 @@
   MACROBLOCK *const x = &cpi->td.mb;
   RD_OPT *const rd = &cpi->rd;
   MvCosts *mv_costs = &x->mv_costs;
+  int use_nonrd_pick_mode = cpi->sf.rt_sf.use_nonrd_pick_mode;
+  CostUpdateFreq cost_upd_freq = cpi->oxcf.cost_upd_freq;
+  int fill_costs =
+      frame_is_intra_only(cm) || (cm->current_frame.frame_number & 0x07) == 1;
+  int num_planes = av1_num_planes(cm);
 
   aom_clear_system_state();
 
@@ -592,13 +597,20 @@
 
   set_block_thresholds(cm, rd);
 
-  if ((!cpi->sf.rt_sf.use_nonrd_pick_mode &&
-       cpi->oxcf.cost_upd_freq.mv != COST_UPD_OFF) ||
-      frame_is_intra_only(cm) || (cm->current_frame.frame_number & 0x07) == 1)
+  if ((!use_nonrd_pick_mode && cost_upd_freq.mv != COST_UPD_OFF) ||
+      cost_upd_freq.mv == COST_UPD_TILE || fill_costs)
     av1_fill_mv_costs(cm->fc, cm->features.cur_frame_force_integer_mv,
                       cm->features.allow_high_precision_mv, mv_costs);
 
-  if (!cpi->sf.rt_sf.use_nonrd_pick_mode && frame_is_intra_only(cm) &&
+  if ((!use_nonrd_pick_mode && cost_upd_freq.coeff != COST_UPD_OFF) ||
+      cost_upd_freq.coeff == COST_UPD_TILE || fill_costs)
+    av1_fill_coeff_costs(&x->coeff_costs, cm->fc, num_planes);
+
+  if ((!use_nonrd_pick_mode && cost_upd_freq.mode != COST_UPD_OFF) ||
+      cost_upd_freq.mode == COST_UPD_TILE || fill_costs)
+    av1_fill_mode_rates(cm, &x->mode_costs, cm->fc);
+
+  if (!use_nonrd_pick_mode && frame_is_intra_only(cm) &&
       cm->features.allow_screen_content_tools &&
       !is_stat_generation_stage(cpi)) {
     IntraBCMVCosts *const dv_costs = &cpi->dv_costs;
