summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhkuang <hkuang@google.com>2015-02-05 12:44:04 -0800
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2015-02-05 12:44:04 -0800
commit65f046e29fa03d45f884dadae12d7240c29839d8 (patch)
treee1e647db9ec6448198214ced25cfdd0e0338190f
parent3be948d84b48c92386887aea0bd7ddb931ee03b4 (diff)
parent41e376e494c39ac4f6e442e715d773e887da968e (diff)
downloadlibvpx-65f046e29fa03d45f884dadae12d7240c29839d8.tar
libvpx-65f046e29fa03d45f884dadae12d7240c29839d8.tar.gz
libvpx-65f046e29fa03d45f884dadae12d7240c29839d8.tar.bz2
libvpx-65f046e29fa03d45f884dadae12d7240c29839d8.zip
Merge "Mute the harmless tsan error in frame parallel decode."
-rw-r--r--vp9/decoder/vp9_dthread.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/vp9/decoder/vp9_dthread.c b/vp9/decoder/vp9_dthread.c
index 7aa888848..d2a2b819c 100644
--- a/vp9/decoder/vp9_dthread.c
+++ b/vp9/decoder/vp9_dthread.c
@@ -45,6 +45,13 @@ void vp9_frameworker_signal_stats(VP9Worker *const worker) {
#endif
}
+// This macro prevents thread_sanitizer from reporting known concurrent writes.
+#if defined(__has_feature)
+#if __has_feature(thread_sanitizer)
+#define BUILDING_WITH_TSAN
+#endif
+#endif
+
// TODO(hkuang): Remove worker parameter as it is only used in debug code.
void vp9_frameworker_wait(VP9Worker *const worker, RefCntBuffer *const ref_buf,
int row) {
@@ -52,9 +59,11 @@ void vp9_frameworker_wait(VP9Worker *const worker, RefCntBuffer *const ref_buf,
if (!ref_buf)
return;
- // Enabling the following line of code will get harmless tsan error but
- // will get best performance.
- // if (ref_buf->row >= row && ref_buf->buf.corrupted != 1) return;
+#ifndef BUILDING_WITH_TSAN
+ // The following line of code will get harmless tsan error but it is the key
+ // to get best performance.
+ if (ref_buf->row >= row && ref_buf->buf.corrupted != 1) return;
+#endif
{
// Find the worker thread that owns the reference frame. If the reference