diff --git a/layers/threading.h b/layers/threading.h
index 9bd8424..481acd4 100644
--- a/layers/threading.h
+++ b/layers/threading.h
@@ -26,7 +26,7 @@
 #include "vk_layer_config.h"
 #include "vk_layer_logging.h"
 
-#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined(_M_IA64) ||       \
+#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined(_M_IA64) || \
     defined(__aarch64__) || defined(__powerpc64__)
 // If pointers are 64-bit, then there can be separate counters for each
 // NONDISPATCHABLE_HANDLE type.  Otherwise they are all typedef uint64_t.
@@ -35,9 +35,9 @@
 
 // Draw State ERROR codes
 enum THREADING_CHECKER_ERROR {
-    THREADING_CHECKER_NONE,                // Used for INFO & other non-error messages
-    THREADING_CHECKER_MULTIPLE_THREADS,    // Object used simultaneously by multiple threads
-    THREADING_CHECKER_SINGLE_THREAD_REUSE, // Object used simultaneously by recursion in single thread
+    THREADING_CHECKER_NONE,                 // Used for INFO & other non-error messages
+    THREADING_CHECKER_MULTIPLE_THREADS,     // Object used simultaneously by multiple threads
+    THREADING_CHECKER_SINGLE_THREAD_REUSE,  // Object used simultaneously by recursion in single thread
 };
 
 struct object_use_data {
@@ -66,10 +66,11 @@
 
 // finishing check if an application is using vulkan from multiple threads.
 inline void finishMultiThread() { vulkan_in_use = false; }
-} // namespace threading
+}  // namespace threading
 
-template <typename T> class counter {
-  public:
+template <typename T>
+class counter {
+   public:
     const char *typeName;
     VkDebugReportObjectTypeEXT objectType;
     std::unordered_map<T, object_use_data> uses;
@@ -247,12 +248,15 @@
     counter<VkDebugReportCallbackEXT> c_VkDebugReportCallbackEXT;
     counter<VkObjectTableNVX> c_VkObjectTableNVX;
     counter<VkIndirectCommandsLayoutNVX> c_VkIndirectCommandsLayoutNVX;
-#else  // DISTINCT_NONDISPATCHABLE_HANDLES
+#else   // DISTINCT_NONDISPATCHABLE_HANDLES
     counter<uint64_t> c_uint64_t;
-#endif // DISTINCT_NONDISPATCHABLE_HANDLES
+#endif  // DISTINCT_NONDISPATCHABLE_HANDLES
 
     layer_data()
-        : report_data(nullptr), num_tmp_callbacks(0), tmp_dbg_create_infos(nullptr), tmp_callbacks(nullptr),
+        : report_data(nullptr),
+          num_tmp_callbacks(0),
+          tmp_dbg_create_infos(nullptr),
+          tmp_callbacks(nullptr),
           c_VkCommandBuffer("VkCommandBuffer", VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT),
           c_VkDevice("VkDevice", VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT),
           c_VkInstance("VkInstance", VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT),
@@ -265,7 +269,8 @@
           c_VkDescriptorSet("VkDescriptorSet", VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT),
           c_VkDescriptorSetLayout("VkDescriptorSetLayout", VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT),
           c_VkDeviceMemory("VkDeviceMemory", VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT),
-          c_VkEvent("VkEvent", VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT), c_VkFence("VkFence", VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT),
+          c_VkEvent("VkEvent", VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT),
+          c_VkFence("VkFence", VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT),
           c_VkFramebuffer("VkFramebuffer", VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT),
           c_VkImage("VkImage", VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT),
           c_VkImageView("VkImageView", VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT),
@@ -280,20 +285,20 @@
           c_VkDebugReportCallbackEXT("VkDebugReportCallbackEXT", VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT),
           c_VkObjectTableNVX("VkObjectTableNVX", VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT),
           c_VkIndirectCommandsLayoutNVX("VkIndirectCommandsLayoutNVX", VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT)
-#else  // DISTINCT_NONDISPATCHABLE_HANDLES
+#else   // DISTINCT_NONDISPATCHABLE_HANDLES
           c_uint64_t("NON_DISPATCHABLE_HANDLE", VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT)
-#endif // DISTINCT_NONDISPATCHABLE_HANDLES
+#endif  // DISTINCT_NONDISPATCHABLE_HANDLES
               {};
 };
 
-#define WRAPPER(type)                                                                                                              \
-    static void startWriteObject(struct layer_data *my_data, type object) {                                                        \
-        my_data->c_##type.startWrite(my_data->report_data, object);                                                                \
-    }                                                                                                                              \
-    static void finishWriteObject(struct layer_data *my_data, type object) { my_data->c_##type.finishWrite(object); }              \
-    static void startReadObject(struct layer_data *my_data, type object) {                                                         \
-        my_data->c_##type.startRead(my_data->report_data, object);                                                                 \
-    }                                                                                                                              \
+#define WRAPPER(type)                                                                                                 \
+    static void startWriteObject(struct layer_data *my_data, type object) {                                           \
+        my_data->c_##type.startWrite(my_data->report_data, object);                                                   \
+    }                                                                                                                 \
+    static void finishWriteObject(struct layer_data *my_data, type object) { my_data->c_##type.finishWrite(object); } \
+    static void startReadObject(struct layer_data *my_data, type object) {                                            \
+        my_data->c_##type.startRead(my_data->report_data, object);                                                    \
+    }                                                                                                                 \
     static void finishReadObject(struct layer_data *my_data, type object) { my_data->c_##type.finishRead(object); }
 
 WRAPPER(VkDevice)
@@ -323,9 +328,9 @@
 WRAPPER(VkDebugReportCallbackEXT)
 WRAPPER(VkObjectTableNVX)
 WRAPPER(VkIndirectCommandsLayoutNVX)
-#else  // DISTINCT_NONDISPATCHABLE_HANDLES
+#else   // DISTINCT_NONDISPATCHABLE_HANDLES
 WRAPPER(uint64_t)
-#endif // DISTINCT_NONDISPATCHABLE_HANDLES
+#endif  // DISTINCT_NONDISPATCHABLE_HANDLES
 
 static std::unordered_map<void *, layer_data *> layer_data_map;
 static std::mutex command_pool_lock;
@@ -364,4 +369,4 @@
     lock.unlock();
     finishReadObject(my_data, pool);
 }
-#endif // THREADING_H
+#endif  // THREADING_H
