diff --git a/layers/threading.h b/layers/threading.h
index 086459f..05c6464 100644
--- a/layers/threading.h
+++ b/layers/threading.h
@@ -35,6 +35,12 @@
 #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) || 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.
+#define DISTINCT_NONDISPATCHABLE_HANDLES
+#endif
+
 // Draw State ERROR codes
 typedef enum _THREADING_CHECKER_ERROR
 {
@@ -211,6 +217,7 @@
     counter<VkDevice> c_VkDevice;
     counter<VkInstance> c_VkInstance;
     counter<VkQueue> c_VkQueue;
+#ifdef DISTINCT_NONDISPATCHABLE_HANDLES
     counter<VkBuffer> c_VkBuffer;
     counter<VkBufferView> c_VkBufferView;
     counter<VkCommandPool> c_VkCommandPool;
@@ -232,12 +239,16 @@
     counter<VkSemaphore> c_VkSemaphore;
     counter<VkShaderModule> c_VkShaderModule;
     counter<VkDebugReportCallbackEXT> c_VkDebugReportCallbackEXT;
+#else // DISTINCT_NONDISPATCHABLE_HANDLES
+    counter<uint64_t> c_uint64_t;
+#endif // DISTINCT_NONDISPATCHABLE_HANDLES
     layer_data():
         report_data(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),
         c_VkQueue("VkQueue", VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT),
+#ifdef DISTINCT_NONDISPATCHABLE_HANDLES
         c_VkBuffer("VkBuffer", VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT),
         c_VkBufferView("VkBufferView", VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT),
         c_VkCommandPool("VkCommandPool", VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT),
@@ -259,6 +270,9 @@
         c_VkSemaphore("VkSemaphore", VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT),
         c_VkShaderModule("VkShaderModule", VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT),
         c_VkDebugReportCallbackEXT("VkDebugReportCallbackEXT", VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT)
+#else // DISTINCT_NONDISPATCHABLE_HANDLES
+        c_uint64_t("NON_DISPATCHABLE_HANDLE", VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT)
+#endif // DISTINCT_NONDISPATCHABLE_HANDLES
     {};
 };
 
@@ -271,6 +285,7 @@
 WRAPPER(VkDevice)
 WRAPPER(VkInstance)
 WRAPPER(VkQueue)
+#ifdef DISTINCT_NONDISPATCHABLE_HANDLES
 WRAPPER(VkBuffer)
 WRAPPER(VkBufferView)
 WRAPPER(VkCommandPool)
@@ -292,6 +307,9 @@
 WRAPPER(VkSemaphore)
 WRAPPER(VkShaderModule)
 WRAPPER(VkDebugReportCallbackEXT)
+#else // DISTINCT_NONDISPATCHABLE_HANDLES
+WRAPPER(uint64_t)
+#endif // DISTINCT_NONDISPATCHABLE_HANDLES
 
 static std::unordered_map<void*, layer_data *> layer_data_map;
 static std::unordered_map<VkCommandBuffer, VkCommandPool> command_pool_map;
@@ -300,7 +318,7 @@
 static void startWriteObject(struct layer_data *my_data, VkCommandBuffer object, bool lockPool=true)
 {
     if (lockPool) {
-        my_data->c_VkCommandPool.startWrite(my_data->report_data, command_pool_map[object]);
+        startWriteObject(my_data, command_pool_map[object]);
     }
     my_data->c_VkCommandBuffer.startWrite(my_data->report_data, object);
 }
@@ -308,13 +326,13 @@
 {
     my_data->c_VkCommandBuffer.finishWrite(object);
     if (lockPool) {
-        my_data->c_VkCommandPool.finishWrite(command_pool_map[object]);
+        finishWriteObject(my_data, command_pool_map[object]);
     }
 }
 static void startReadObject(struct layer_data *my_data, VkCommandBuffer object, bool lockPool=false)
 {
     if (lockPool) {
-        my_data->c_VkCommandPool.startRead(my_data->report_data, command_pool_map[object]);
+        startReadObject(my_data, command_pool_map[object]);
     }
     my_data->c_VkCommandBuffer.startRead(my_data->report_data, object);
 }
@@ -322,7 +340,7 @@
 {
     my_data->c_VkCommandBuffer.finishRead(object);
     if (lockPool) {
-        my_data->c_VkCommandPool.finishRead(command_pool_map[object]);
+        finishReadObject(my_data, command_pool_map[object]);
     }
 }
 #endif // THREADING_H
