ref: 3035d5c547029d4df1266d89f5ef57fc0dc60e71
parent: 640b3195cb41d2166880e9441349a2d3b3024329
author: James Zern <jzern@google.com>
date: Wed Dec 19 19:10:47 EST 2018
vp9: limit lpf workers to min(threads,tiles,sb_rows) this implementation does not scale well beyond that. this restores the performance in v1.7.0. BUG=webm:1574 Change-Id: I8f3464cfe871988fa06ebefe9954811fd002584e
--- a/vp9/common/vp9_thread_common.c
+++ b/vp9/common/vp9_thread_common.c
@@ -159,7 +159,12 @@
const VPxWorkerInterface *const winterface = vpx_get_worker_interface();
// Number of superblock rows and cols
const int sb_rows = mi_cols_aligned_to_sb(cm->mi_rows) >> MI_BLOCK_SIZE_LOG2;
- const int num_workers = VPXMIN(nworkers, sb_rows);
+ const int num_tile_cols = 1 << cm->log2_tile_cols;
+ // Limit the number of workers to prevent changes in frame dimensions from
+ // causing incorrect sync calculations when sb_rows < threads/tile_cols.
+ // Further restrict them by the number of tile columns should the user
+ // request more as this implementation doesn't scale well beyond that.
+ const int num_workers = VPXMIN(nworkers, VPXMIN(num_tile_cols, sb_rows));
int i;
if (!lf_sync->sync_range || sb_rows != lf_sync->rows ||