rtc: Remove blk_skip from best_mode

Copy directly into ctx, save some memset/memcp,
and remove unneeded code. Also for intra modes:
only do the memset once, if intra mode is selected
as best mode.

bit-exact change,
small IC% gain ~0.1-0.2% for speed 10 rtc_derf.

Change-Id: I76f5fb7f917f896e73e57ad368ea584284e27c85
diff --git a/av1/encoder/nonrd_opt.c b/av1/encoder/nonrd_opt.c
index 4b49609..651ca43 100644
--- a/av1/encoder/nonrd_opt.c
+++ b/av1/encoder/nonrd_opt.c
@@ -926,5 +926,8 @@
                sizeof(x->txfm_search_info.blk_skip[0]) * ctx->num_4x4_blk);
     }
   }
+  if (best_pickmode->best_ref_frame == INTRA_FRAME)
+    memset(ctx->blk_skip, 0,
+           sizeof(x->txfm_search_info.blk_skip[0]) * ctx->num_4x4_blk);
   mi->tx_size = best_pickmode->best_tx_size;
 }
diff --git a/av1/encoder/nonrd_opt.h b/av1/encoder/nonrd_opt.h
index e834e99..7948c78 100644
--- a/av1/encoder/nonrd_opt.h
+++ b/av1/encoder/nonrd_opt.h
@@ -50,7 +50,6 @@
   MOTION_MODE best_motion_mode;
   WarpedMotionParams wm_params;
   int num_proj_ref;
-  uint8_t blk_skip[MAX_MIB_SIZE * MAX_MIB_SIZE];
   PALETTE_MODE_INFO pmi;
   int64_t best_sse;
 } BEST_PICKMODE;
diff --git a/av1/encoder/nonrd_pickmode.c b/av1/encoder/nonrd_pickmode.c
index e440610..155c466 100644
--- a/av1/encoder/nonrd_pickmode.c
+++ b/av1/encoder/nonrd_pickmode.c
@@ -70,7 +70,6 @@
   bp->best_motion_mode = SIMPLE_TRANSLATION;
   bp->num_proj_ref = 0;
   av1_zero(bp->wm_params);
-  av1_zero(bp->blk_skip);
   av1_zero(bp->pmi);
 }
 
@@ -94,7 +93,7 @@
   best_pickmode->best_mode_initial_skip_flag =
       (nonskip_rdc->rate == INT_MAX && search_state->this_rdc.skip_txfm);
   if (!best_pickmode->best_mode_skip_txfm) {
-    memcpy(best_pickmode->blk_skip, txfm_info->blk_skip,
+    memcpy(ctx->blk_skip, txfm_info->blk_skip,
            sizeof(txfm_info->blk_skip[0]) * ctx->num_4x4_blk);
   }
 }
@@ -2948,7 +2947,7 @@
       search_state->best_rdc.rdcost = idx_rdcost;
       best_pickmode->best_mode_skip_txfm = idtx_rdc.skip_txfm;
       if (!idtx_rdc.skip_txfm) {
-        memcpy(best_pickmode->blk_skip, txfm_info->blk_skip,
+        memcpy(ctx->blk_skip, txfm_info->blk_skip,
                sizeof(txfm_info->blk_skip[0]) * ctx->num_4x4_blk);
       }
       xd->tx_type_map[0] = best_pickmode->tx_type;
@@ -3182,9 +3181,6 @@
   inter_pred_params_sr.conv_params =
       get_conv_params(/*do_average=*/0, AOM_PLANE_Y, xd->bd);
 
-  memset(txfm_info->blk_skip, 0,
-         sizeof(txfm_info->blk_skip[0]) * ctx->num_4x4_blk);
-
   for (int idx = 0; idx < num_inter_modes + tot_num_comp_modes; ++idx) {
     // If we are at the first compound mode, and the single modes already
     // perform well, then end the search.
@@ -3329,16 +3325,6 @@
     memset(ctx->blk_skip, 0, sizeof(ctx->blk_skip[0]) * ctx->num_4x4_blk);
   } else {
     txfm_info->skip_txfm = best_pickmode->best_mode_skip_txfm;
-    if (!txfm_info->skip_txfm) {
-      // For inter modes: copy blk_skip from best_pickmode.
-      // If palette or intra mode was selected as best then
-      // blk_skip is already copied into the ctx.
-      // TODO(marpan): Look into removing blk_skip from best_pickmode
-      // and just copy directly into the ctx for inter.
-      if (best_pickmode->best_mode >= INTRA_MODE_END)
-        memcpy(ctx->blk_skip, best_pickmode->blk_skip,
-               sizeof(best_pickmode->blk_skip[0]) * ctx->num_4x4_blk);
-    }
   }
   if (has_second_ref(mi)) {
     mi->comp_group_idx = 0;