diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
index 7bfaaf2..f2b4482 100644
--- a/vulkan/libvulkan/entry.cpp
+++ b/vulkan/libvulkan/entry.cpp
@@ -578,7 +578,7 @@
 
 __attribute__((visibility("default")))
 VkResult vkCreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer) {
-    return GetVtbl(device).CreateCommandBuffer(device, pCreateInfo, pCmdBuffer);
+    return vulkan::CreateCommandBuffer(device, pCreateInfo, pCmdBuffer);
 }
 
 __attribute__((visibility("default")))
diff --git a/vulkan/libvulkan/entry.cpp.tmpl b/vulkan/libvulkan/entry.cpp.tmpl
index 249f8fd..3eabe2e 100644
--- a/vulkan/libvulkan/entry.cpp.tmpl
+++ b/vulkan/libvulkan/entry.cpp.tmpl
@@ -73,7 +73,7 @@
 */}}
 {{define "IsSpecialEntry"}}
   {{/* TODO: figure out how to do this in a cleaner or at least multi-line way */}}
-  {{if or (eq $ "vkGetInstanceProcAddr") (or (eq $ "vkGetDeviceProcAddr") (or (eq $ "vkGetDeviceQueue") (eq $ "vkDestroyDevice")))}}
+  {{if or (eq $ "vkGetInstanceProcAddr") (or (eq $ "vkGetDeviceProcAddr") (or (eq $ "vkGetDeviceQueue") (or (eq $ "vkCreateCommandBuffer") (eq $ "vkDestroyDevice"))))}}
     true
   {{end}}
 {{end}}
diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
index a99e90a..19ca9f2 100644
--- a/vulkan/libvulkan/loader.cpp
+++ b/vulkan/libvulkan/loader.cpp
@@ -494,6 +494,7 @@
         return GetGlobalDeviceProcAddr(name);
     // For special-case functions we always return the loader entry
     if (strcmp(name, "vkGetDeviceQueue") == 0 ||
+        strcmp(name, "vkCreateCommandBuffer") == 0 ||
         strcmp(name, "vkDestroyDevice") == 0) {
         return GetGlobalDeviceProcAddr(name);
     }
@@ -521,6 +522,27 @@
     return VK_SUCCESS;
 }
 
+VkResult CreateCommandBuffer(VkDevice drv_device,
+                             const VkCmdBufferCreateInfo* create_info,
+                             VkCmdBuffer* out_cmdbuf) {
+    const DeviceVtbl* vtbl = GetVtbl(drv_device);
+    VkCmdBuffer cmdbuf;
+    VkResult result =
+        vtbl->CreateCommandBuffer(drv_device, create_info, &cmdbuf);
+    if (result != VK_SUCCESS)
+        return result;
+    hwvulkan_dispatch_t* dispatch =
+        reinterpret_cast<hwvulkan_dispatch_t*>(cmdbuf);
+    if (dispatch->magic != HWVULKAN_DISPATCH_MAGIC) {
+        ALOGE("invalid VkCmdBuffer dispatch magic: 0x%" PRIxPTR,
+              dispatch->magic);
+        return VK_ERROR_INITIALIZATION_FAILED;
+    }
+    dispatch->vtbl = vtbl;
+    *out_cmdbuf = cmdbuf;
+    return VK_SUCCESS;
+}
+
 VkResult DestroyDevice(VkDevice drv_device) {
     const DeviceVtbl* vtbl = GetVtbl(drv_device);
     Device* device = static_cast<Device*>(vtbl->device);
diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
index 1f6a1d4..fad92a7 100644
--- a/vulkan/libvulkan/loader.h
+++ b/vulkan/libvulkan/loader.h
@@ -187,6 +187,9 @@
                         uint32_t family,
                         uint32_t index,
                         VkQueue* out_queue);
+VkResult CreateCommandBuffer(VkDevice device,
+                             const VkCmdBufferCreateInfo* create_info,
+                             VkCmdBuffer* out_cmdbuf);
 VkResult DestroyDevice(VkDevice drv_device);
 
 // -----------------------------------------------------------------------------
diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
index 281873d..ad7011f 100644
--- a/vulkan/nulldrv/null_driver.cpp
+++ b/vulkan/nulldrv/null_driver.cpp
@@ -48,36 +48,36 @@
 // Using a namespace here instead of 'enum class' since we want scoped
 // constants but also want implicit conversions to integral types.
 namespace HandleType {
-    enum Enum {
-        kAttachmentView,
-        kBufferView,
-        kCmdPool,
-        kDescriptorPool,
-        kDescriptorSet,
-        kDescriptorSetLayout,
-        kDynamicColorBlendState,
-        kDynamicDepthStencilState,
-        kDynamicRasterState,
-        kDynamicViewportState,
-        kEvent,
-        kFence,
-        kFramebuffer,
-        kImageView,
-        kPipeline,
-        kPipelineCache,
-        kPipelineLayout,
-        kQueryPool,
-        kRenderPass,
-        kSampler,
-        kSemaphore,
-        kShader,
-        kShaderModule,
+enum Enum {
+    kAttachmentView,
+    kBufferView,
+    kCmdPool,
+    kDescriptorPool,
+    kDescriptorSet,
+    kDescriptorSetLayout,
+    kDynamicColorBlendState,
+    kDynamicDepthStencilState,
+    kDynamicRasterState,
+    kDynamicViewportState,
+    kEvent,
+    kFence,
+    kFramebuffer,
+    kImageView,
+    kPipeline,
+    kPipelineCache,
+    kPipelineLayout,
+    kQueryPool,
+    kRenderPass,
+    kSampler,
+    kSemaphore,
+    kShader,
+    kShaderModule,
 
-        kNumTypes
-    };
-} // namespace HandleType
+    kNumTypes
+};
+}  // namespace HandleType
 uint64_t AllocHandle(VkDevice device, HandleType::Enum type);
-} // anonymous namespace
+}  // anonymous namespace
 
 struct VkDevice_T {
     hwvulkan_dispatch_t dispatch;
@@ -299,6 +299,29 @@
 }
 
 // -----------------------------------------------------------------------------
+// CmdBuffer
+
+VkResult CreateCommandBuffer(VkDevice device,
+                             const VkCmdBufferCreateInfo*,
+                             VkCmdBuffer* out_cmdbuf) {
+    const VkAllocCallbacks* alloc = device->instance->alloc;
+    VkCmdBuffer_T* cmdbuf = static_cast<VkCmdBuffer_T*>(alloc->pfnAlloc(
+        alloc->pUserData, sizeof(VkCmdBuffer_T), alignof(VkCmdBuffer_T),
+        VK_SYSTEM_ALLOC_TYPE_API_OBJECT));
+    if (!cmdbuf)
+        return VK_ERROR_OUT_OF_HOST_MEMORY;
+    cmdbuf->dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
+    *out_cmdbuf = cmdbuf;
+    return VK_SUCCESS;
+}
+
+VkResult DestroyCommandBuffer(VkDevice device, VkCmdBuffer cmdbuf) {
+    const VkAllocCallbacks* alloc = device->instance->alloc;
+    alloc->pfnFree(alloc->pUserData, cmdbuf);
+    return VK_SUCCESS;
+}
+
+// -----------------------------------------------------------------------------
 // DeviceMemory
 
 struct DeviceMemory {
@@ -629,7 +652,6 @@
 }
 
 VkResult QueueSubmit(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence) {
-    ALOGV("TODO: vk%s", __FUNCTION__);
     return VK_SUCCESS;
 }
 
@@ -706,7 +728,6 @@
 }
 
 VkResult ResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences) {
-    ALOGV("TODO: vk%s", __FUNCTION__);
     return VK_SUCCESS;
 }
 
@@ -716,7 +737,6 @@
 }
 
 VkResult WaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout) {
-    ALOGV("TODO: vk%s", __FUNCTION__);
     return VK_SUCCESS;
 }
 
@@ -889,23 +909,11 @@
     return VK_SUCCESS;
 }
 
-VkResult CreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer) {
-    ALOGV("TODO: vk%s", __FUNCTION__);
-    return VK_SUCCESS;
-}
-
-VkResult DestroyCommandBuffer(VkDevice device, VkCmdBuffer commandBuffer) {
-    ALOGV("TODO: vk%s", __FUNCTION__);
-    return VK_SUCCESS;
-}
-
 VkResult BeginCommandBuffer(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo) {
-    ALOGV("TODO: vk%s", __FUNCTION__);
     return VK_SUCCESS;
 }
 
 VkResult EndCommandBuffer(VkCmdBuffer cmdBuffer) {
-    ALOGV("TODO: vk%s", __FUNCTION__);
     return VK_SUCCESS;
 }
 
