diff --git a/mercurial/configitems.py b/mercurial/configitems.py
--- a/mercurial/configitems.py
+++ b/mercurial/configitems.py
@@ -433,6 +433,9 @@
     b'devel', b'debug.extensions', default=False,
 )
 coreconfigitem(
+    b'devel', b'debug.repo-filters', default=False,
+)
+coreconfigitem(
     b'devel', b'debug.peer-request', default=False,
 )
 coreconfigitem(
diff --git a/mercurial/repoview.py b/mercurial/repoview.py
--- a/mercurial/repoview.py
+++ b/mercurial/repoview.py
@@ -217,6 +217,9 @@
     hidden-state and must be visible. They are dynamic and hence we should not
     cache it's result"""
     if filtername not in repo.filteredrevcache:
+        if repo.ui.configbool(b'devel', b'debug.repo-filters'):
+            msg = b'debug.filters: computing revision filter for "%s"\n'
+            repo.ui.debug(msg % filtername)
         func = filtertable[filtername]
         if visibilityexceptions:
             return func(repo.unfiltered, visibilityexceptions)