diff --git a/icd/intel/obj.c b/icd/intel/obj.c
index 45b346e..3e8c0a0 100644
--- a/icd/intel/obj.c
+++ b/icd/intel/obj.c
@@ -397,7 +397,7 @@
     VkQueue                                   queue,
     VkImage                                   image,
     uint32_t                                    allocationIdx,
-    const VkImageMemoryBindInfo*           bindInfo,
+    const VkImageMemoryBindInfo*           pBindInfo,
     VkGpuMemory                              mem,
     VkGpuSize                                memOffset)
 {
diff --git a/icd/nulldrv/nulldrv.c b/icd/nulldrv/nulldrv.c
index 6d1ed15..d6ce2e5 100644
--- a/icd/nulldrv/nulldrv.c
+++ b/icd/nulldrv/nulldrv.c
@@ -1632,7 +1632,7 @@
     VkQueue                                   queue,
     VkImage                                   image,
     uint32_t                                    allocationIdx,
-    const VkImageMemoryBindInfo*           bindInfo,
+    const VkImageMemoryBindInfo*           pBindInfo,
     VkGpuMemory                              mem,
     VkGpuSize                                memOffset)
 {
diff --git a/include/vulkan.h b/include/vulkan.h
index 0edbfcf..d80c15a 100644
--- a/include/vulkan.h
+++ b/include/vulkan.h
@@ -2229,7 +2229,7 @@
 typedef VkResult (VKAPI *PFN_vkGetObjectInfo)(VkBaseObject object, VkObjectInfoType infoType, size_t* pDataSize, void* pData);
 typedef VkResult (VKAPI *PFN_vkQueueBindObjectMemory)(VkQueue queue, VkObject object, uint32_t allocationIdx, VkGpuMemory mem, VkGpuSize offset);
 typedef VkResult (VKAPI *PFN_vkQueueBindObjectMemoryRange)(VkQueue queue, VkObject object, uint32_t allocationIdx, VkGpuSize rangeOffset,VkGpuSize rangeSize, VkGpuMemory mem, VkGpuSize memOffset);
-typedef VkResult (VKAPI *PFN_vkQueueBindImageMemoryRange)(VkQueue queue, VkImage image, uint32_t allocationIdx, const VkImageMemoryBindInfo* bindInfo, VkGpuMemory mem, VkGpuSize memOffset);
+typedef VkResult (VKAPI *PFN_vkQueueBindImageMemoryRange)(VkQueue queue, VkImage image, uint32_t allocationIdx, const VkImageMemoryBindInfo* pBindInfo, VkGpuMemory mem, VkGpuSize memOffset);
 typedef VkResult (VKAPI *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence);
 typedef VkResult (VKAPI *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, VkFence* pFences);
 typedef VkResult (VKAPI *PFN_vkGetFenceStatus)(VkFence fence);
@@ -2495,7 +2495,7 @@
     VkQueue                                     queue,
     VkImage                                     image,
     uint32_t                                    allocationIdx,
-    const VkImageMemoryBindInfo*                bindInfo,
+    const VkImageMemoryBindInfo*                pBindInfo,
     VkGpuMemory                                 mem,
     VkGpuSize                                   memOffset);
 
diff --git a/layers/glave_snapshot.c b/layers/glave_snapshot.c
index 3192a77..1a399b9 100644
--- a/layers/glave_snapshot.c
+++ b/layers/glave_snapshot.c
@@ -740,12 +740,12 @@
     return result;
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkBindImageMemoryRange(VkImage image, uint32_t allocationIdx, const VkImageMemoryBindInfo* bindInfo, VkGpuMemory mem, VkGpuSize memOffset)
+VK_LAYER_EXPORT VkResult VKAPI vkBindImageMemoryRange(VkImage image, uint32_t allocationIdx, const VkImageMemoryBindInfo* pBindInfo, VkGpuMemory mem, VkGpuSize memOffset)
 {
     loader_platform_thread_lock_mutex(&objLock);
     ll_increment_use_count((void*)image, VK_OBJECT_TYPE_IMAGE);
     loader_platform_thread_unlock_mutex(&objLock);
-    VkResult result = nextTable.BindImageMemoryRange(image, allocationIdx, bindInfo, mem, memOffset);
+    VkResult result = nextTable.BindImageMemoryRange(image, allocationIdx, pBindInfo, mem, memOffset);
     return result;
 }
 
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index f856283..fae24d1 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -519,18 +519,18 @@
     return result;
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkQueueBindImageMemoryRange(VkQueue queue, VkImage image, uint32_t allocationIdx, const VkImageMemoryBindInfo* bindInfo, VkGpuMemory mem, VkGpuSize memOffset)
+VK_LAYER_EXPORT VkResult VKAPI vkQueueBindImageMemoryRange(VkQueue queue, VkImage image, uint32_t allocationIdx, const VkImageMemoryBindInfo* pBindInfo, VkGpuMemory mem, VkGpuSize memOffset)
 {
     char str[1024];
-    if (!bindInfo) {
-        sprintf(str, "Struct ptr parameter bindInfo to function QueueBindImageMemoryRange is NULL.");
+    if (!pBindInfo) {
+        sprintf(str, "Struct ptr parameter pBindInfo to function QueueBindImageMemoryRange is NULL.");
         layerCbMsg(VK_DBG_MSG_UNKNOWN, VK_VALIDATION_LEVEL_0, NULL, 0, 1, "PARAMCHECK", str);
     }
-    else if (!vk_validate_vkimagememorybindinfo(bindInfo)) {
-        sprintf(str, "Parameter bindInfo to function BindImageMemoryRange contains an invalid value.");
+    else if (!vk_validate_vkimagememorybindinfo(pBindInfo)) {
+        sprintf(str, "Parameter pBindInfo to function BindImageMemoryRange contains an invalid value.");
         layerCbMsg(VK_DBG_MSG_ERROR, VK_VALIDATION_LEVEL_0, NULL, 0, 1, "PARAMCHECK", str);
     }
-    VkResult result = nextTable.QueueBindImageMemoryRange(queue, image, allocationIdx, bindInfo, mem, memOffset);
+    VkResult result = nextTable.QueueBindImageMemoryRange(queue, image, allocationIdx, pBindInfo, mem, memOffset);
     return result;
 }
 
diff --git a/vulkan.py b/vulkan.py
index 56b95c2..4c51bd4 100755
--- a/vulkan.py
+++ b/vulkan.py
@@ -379,7 +379,7 @@
             [Param("VkQueue", "queue"),
              Param("VkImage", "image"),
              Param("uint32_t", "allocationIdx"),
-             Param("const VkImageMemoryBindInfo*", "bindInfo"),
+             Param("const VkImageMemoryBindInfo*", "pBindInfo"),
              Param("VkGpuMemory", "mem"),
              Param("VkGpuSize", "memOffset")]),
 
