diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index ff9b8e0..29f285a 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -841,11 +841,7 @@
       seg_skip = segfeature_active(seg, segment_id, SEG_LVL_SKIP);
     }
 
-    // Produce the gradient data at superblock level, when intra mode pruning
-    // based on hog is enabled.
-    if (cpi->sf.intra_sf.intra_pruning_with_hog ||
-        cpi->sf.intra_sf.chroma_intra_pruning_with_hog)
-      produce_gradients_for_sb(cpi, x, sb_size, mi_row, mi_col);
+    produce_gradients_for_sb(cpi, x, sb_size, mi_row, mi_col);
 
     // encode the superblock
     if (use_nonrd_mode) {
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index a4fcba6..b85f67e 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -2299,12 +2299,9 @@
     }
   }
 
-  const SPEED_FEATURES *sf = &cpi->sf;
-  if (sf->intra_sf.intra_pruning_with_hog ||
-      sf->intra_sf.chroma_intra_pruning_with_hog) {
-    allocate_gradient_info_for_hog(&cpi->td.pixel_gradient_info, cpi);
-  }
+  allocate_gradient_info_for_hog(&cpi->td.pixel_gradient_info, cpi);
 
+  const SPEED_FEATURES *sf = &cpi->sf;
   if (sf->part_sf.partition_search_type == VAR_BASED_PARTITION)
     variance_partition_alloc(cpi);
 
@@ -2507,13 +2504,9 @@
   q_low = bottom_index;
   q_high = top_index;
 
-  const SPEED_FEATURES *sf = &cpi->sf;
-  if (sf->intra_sf.intra_pruning_with_hog ||
-      sf->intra_sf.chroma_intra_pruning_with_hog) {
-    allocate_gradient_info_for_hog(&cpi->td.pixel_gradient_info, cpi);
-  }
+  allocate_gradient_info_for_hog(&cpi->td.pixel_gradient_info, cpi);
 
-  if (sf->part_sf.partition_search_type == VAR_BASED_PARTITION)
+  if (cpi->sf.part_sf.partition_search_type == VAR_BASED_PARTITION)
     variance_partition_alloc(cpi);
 
   if (cm->current_frame.frame_type == KEY_FRAME) copy_frame_prob_info(cpi);
diff --git a/av1/encoder/encoder_alloc.h b/av1/encoder/encoder_alloc.h
index 22406d9..bd7be4c 100644
--- a/av1/encoder/encoder_alloc.h
+++ b/av1/encoder/encoder_alloc.h
@@ -16,6 +16,7 @@
 #include "av1/encoder/encoder.h"
 #include "av1/encoder/encodetxb.h"
 #include "av1/encoder/ethread.h"
+#include "av1/encoder/intra_mode_search_utils.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -304,6 +305,7 @@
 
 static AOM_INLINE void allocate_gradient_info_for_hog(
     PixelLevelGradientInfo **pixel_gradient_info, AV1_COMP *cpi) {
+  if (!is_gradient_caching_for_hog_enabled(cpi)) return;
   const AV1_COMMON *const cm = &cpi->common;
 
   if (!*pixel_gradient_info) {
diff --git a/av1/encoder/ethread.c b/av1/encoder/ethread.c
index 5f4d0b3..79d12b9 100644
--- a/av1/encoder/ethread.c
+++ b/av1/encoder/ethread.c
@@ -23,6 +23,7 @@
 #endif
 #include "av1/encoder/global_motion.h"
 #include "av1/encoder/global_motion_facade.h"
+#include "av1/encoder/intra_mode_search_utils.h"
 #include "av1/encoder/rdopt.h"
 #include "aom_dsp/aom_dsp_common.h"
 #include "av1/encoder/temporal_filter.h"
@@ -759,9 +760,7 @@
           }
         }
 
-        const SPEED_FEATURES *sf = &ppi->cpi->sf;
-        if (sf->intra_sf.intra_pruning_with_hog ||
-            sf->intra_sf.chroma_intra_pruning_with_hog) {
+        if (is_gradient_caching_for_hog_enabled(ppi->cpi)) {
           const int plane_types = PLANE_TYPES >> ppi->seq_params.monochrome;
           AOM_CHECK_MEM_ERROR(
               &ppi->error, thread_data->td->pixel_gradient_info,
diff --git a/av1/encoder/intra_mode_search_utils.h b/av1/encoder/intra_mode_search_utils.h
index e6eab3f..8e16016 100644
--- a/av1/encoder/intra_mode_search_utils.h
+++ b/av1/encoder/intra_mode_search_utils.h
@@ -307,27 +307,39 @@
   lowbd_compute_gradient_info_sb(x, sb_size, plane);
 }
 
+// Gradient caching at superblock level is allowed only if all of the following
+// conditions are satisfied:
+// (1) The current frame is an intra only frame
+// (2) Non-RD mode decisions are not enabled
+// (3) The sf partition_search_type is set to SEARCH_PARTITION
+// (4) Either intra_pruning_with_hog or chroma_intra_pruning_with_hog is enabled
+//
+// SB level caching of gradient data may not help in speedup for the following
+// cases:
+// (1) Inter frames (due to early intra gating)
+// (2) When partition_search_type is not SEARCH_PARTITION
+// Hence, gradient data is computed at block level in such cases.
+static AOM_INLINE bool is_gradient_caching_for_hog_enabled(
+    const AV1_COMP *const cpi) {
+  const SPEED_FEATURES *const sf = &cpi->sf;
+  return frame_is_intra_only(&cpi->common) && !sf->rt_sf.use_nonrd_pick_mode &&
+         (sf->part_sf.partition_search_type == SEARCH_PARTITION) &&
+         (sf->intra_sf.intra_pruning_with_hog ||
+          sf->intra_sf.chroma_intra_pruning_with_hog);
+}
+
 // Function to generate pixel level gradient information for a given superblock.
 // Sets the flags 'is_sb_gradient_cached' for the specific plane-type if
 // gradient info is generated for the same.
 static AOM_INLINE void produce_gradients_for_sb(AV1_COMP *cpi, MACROBLOCK *x,
                                                 BLOCK_SIZE sb_size, int mi_row,
                                                 int mi_col) {
-  const SPEED_FEATURES *sf = &cpi->sf;
   // Initialise flags related to hog data caching.
   x->is_sb_gradient_cached[PLANE_TYPE_Y] = false;
   x->is_sb_gradient_cached[PLANE_TYPE_UV] = false;
+  if (!is_gradient_caching_for_hog_enabled(cpi)) return;
 
-  // SB level caching of gradient data may not help in speedup for the following
-  // cases:
-  // (1) Inter frames (due to early intra gating)
-  // (2) When partition_search_type is not SEARCH_PARTITION
-  // Hence, gradient data is computed at block level in such cases.
-
-  if (!frame_is_intra_only(&cpi->common) ||
-      sf->part_sf.partition_search_type != SEARCH_PARTITION)
-    return;
-
+  const SPEED_FEATURES *sf = &cpi->sf;
   const int num_planes = av1_num_planes(&cpi->common);
 
   av1_setup_src_planes(x, cpi->source, mi_row, mi_col, num_planes, sb_size);
