diff --git a/src/Vulkan/VkCommandBuffer.cpp b/src/Vulkan/VkCommandBuffer.cpp
index a01e5a2..df555d0 100644
--- a/src/Vulkan/VkCommandBuffer.cpp
+++ b/src/Vulkan/VkCommandBuffer.cpp
@@ -749,10 +749,10 @@
 	uint32_t stride;
 };
 
-class CmdImageToImageCopy : public vk::CommandBuffer::Command
+class CmdCopyImage : public vk::CommandBuffer::Command
 {
 public:
-	CmdImageToImageCopy(const vk::Image *srcImage, vk::Image *dstImage, const VkImageCopy &region)
+	CmdCopyImage(const vk::Image *srcImage, vk::Image *dstImage, const VkImageCopy &region)
 	    : srcImage(srcImage)
 	    , dstImage(dstImage)
 	    , region(region)
@@ -764,7 +764,7 @@
 		srcImage->copyTo(dstImage, region);
 	}
 
-	std::string description() override { return "vkCmdImageToImageCopy()"; }
+	std::string description() override { return "vkCmdCopyImage()"; }
 
 private:
 	const vk::Image *srcImage;
@@ -772,10 +772,10 @@
 	const VkImageCopy region;
 };
 
-class CmdBufferToBufferCopy : public vk::CommandBuffer::Command
+class CmdCopyBuffer : public vk::CommandBuffer::Command
 {
 public:
-	CmdBufferToBufferCopy(const vk::Buffer *srcBuffer, vk::Buffer *dstBuffer, const VkBufferCopy &region)
+	CmdCopyBuffer(const vk::Buffer *srcBuffer, vk::Buffer *dstBuffer, const VkBufferCopy &region)
 	    : srcBuffer(srcBuffer)
 	    , dstBuffer(dstBuffer)
 	    , region(region)
@@ -787,7 +787,7 @@
 		srcBuffer->copyTo(dstBuffer, region);
 	}
 
-	std::string description() override { return "vkCmdBufferToBufferCopy()"; }
+	std::string description() override { return "vkCmdCopyBuffer()"; }
 
 private:
 	const vk::Buffer *srcBuffer;
@@ -795,10 +795,10 @@
 	const VkBufferCopy region;
 };
 
-class CmdImageToBufferCopy : public vk::CommandBuffer::Command
+class CmdCopyImageToBuffer : public vk::CommandBuffer::Command
 {
 public:
-	CmdImageToBufferCopy(vk::Image *srcImage, vk::Buffer *dstBuffer, const VkBufferImageCopy &region)
+	CmdCopyImageToBuffer(vk::Image *srcImage, vk::Buffer *dstBuffer, const VkBufferImageCopy &region)
 	    : srcImage(srcImage)
 	    , dstBuffer(dstBuffer)
 	    , region(region)
@@ -810,7 +810,7 @@
 		srcImage->copyTo(dstBuffer, region);
 	}
 
-	std::string description() override { return "vkCmdImageToBufferCopy()"; }
+	std::string description() override { return "vkCmdCopyImageToBuffer()"; }
 
 private:
 	vk::Image *srcImage;
@@ -818,10 +818,10 @@
 	const VkBufferImageCopy region;
 };
 
-class CmdBufferToImageCopy : public vk::CommandBuffer::Command
+class CmdCopyBufferToImage : public vk::CommandBuffer::Command
 {
 public:
-	CmdBufferToImageCopy(vk::Buffer *srcBuffer, vk::Image *dstImage, const VkBufferImageCopy &region)
+	CmdCopyBufferToImage(vk::Buffer *srcBuffer, vk::Image *dstImage, const VkBufferImageCopy &region)
 	    : srcBuffer(srcBuffer)
 	    , dstImage(dstImage)
 	    , region(region)
@@ -833,7 +833,7 @@
 		dstImage->copyFrom(srcBuffer, region);
 	}
 
-	std::string description() override { return "vkCmdBufferToImageCopy()"; }
+	std::string description() override { return "vkCmdCopyBufferToImage()"; }
 
 private:
 	vk::Buffer *srcBuffer;
@@ -1615,7 +1615,7 @@
 
 	for(uint32_t i = 0; i < regionCount; i++)
 	{
-		addCommand<::CmdBufferToBufferCopy>(srcBuffer, dstBuffer, pRegions[i]);
+		addCommand<::CmdCopyBuffer>(srcBuffer, dstBuffer, pRegions[i]);
 	}
 }
 
@@ -1630,7 +1630,7 @@
 
 	for(uint32_t i = 0; i < regionCount; i++)
 	{
-		addCommand<::CmdImageToImageCopy>(srcImage, dstImage, pRegions[i]);
+		addCommand<::CmdCopyImage>(srcImage, dstImage, pRegions[i]);
 	}
 }
 
@@ -1656,7 +1656,7 @@
 
 	for(uint32_t i = 0; i < regionCount; i++)
 	{
-		addCommand<::CmdBufferToImageCopy>(srcBuffer, dstImage, pRegions[i]);
+		addCommand<::CmdCopyBufferToImage>(srcBuffer, dstImage, pRegions[i]);
 	}
 }
 
@@ -1668,7 +1668,7 @@
 
 	for(uint32_t i = 0; i < regionCount; i++)
 	{
-		addCommand<::CmdImageToBufferCopy>(srcImage, dstBuffer, pRegions[i]);
+		addCommand<::CmdCopyImageToBuffer>(srcImage, dstBuffer, pRegions[i]);
 	}
 }
 
