diff --git a/include/vulkan.h b/include/vulkan.h
index 89d7edc..2287a22 100644
--- a/include/vulkan.h
+++ b/include/vulkan.h
@@ -818,7 +818,7 @@
     VK_QUEUE_GRAPHICS_BIT = 0x00000001,
     VK_QUEUE_COMPUTE_BIT = 0x00000002,
     VK_QUEUE_DMA_BIT = 0x00000004,
-    VK_QUEUE_SPARSE_MEMMGR_BIT = 0x00000008,
+    VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
 } VkQueueFlagBits;
 typedef VkFlags VkQueueFlags;
 
@@ -847,9 +847,9 @@
 } VkImageAspectFlagBits;
 
 typedef enum {
-    VK_SPARSE_IMAGE_FMT_SINGLE_MIPTAIL_BIT = 0x00000001,
-    VK_SPARSE_IMAGE_FMT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
-    VK_SPARSE_IMAGE_FMT_NONSTD_BLOCK_SIZE_BIT = 0x00000004,
+    VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
+    VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
+    VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
 } VkSparseImageFormatFlagBits;
 typedef VkFlags VkSparseImageFormatFlags;
 
@@ -1193,7 +1193,7 @@
     uint32_t                                    maxImageDimensionCube;
     uint32_t                                    maxImageArrayLayers;
     VkSampleCountFlags                          sampleCounts;
-    uint32_t                                    maxTexelBufferSize;
+    uint32_t                                    maxTexelBufferElements;
     uint32_t                                    maxUniformBufferRange;
     uint32_t                                    maxStorageBufferRange;
     uint32_t                                    maxPushConstantsSize;
@@ -1289,7 +1289,7 @@
 
 typedef struct {
     VkBool32                                    residencyStandard2DBlockShape;
-    VkBool32                                    residencyStandard2DMSBlockShape;
+    VkBool32                                    residencyStandard2DMultisampleBlockShape;
     VkBool32                                    residencyStandard3DBlockShape;
     VkBool32                                    residencyAlignedMipSize;
     VkBool32                                    residencyNonResident;
@@ -1404,7 +1404,7 @@
 } VkSparseImageFormatProperties;
 
 typedef struct {
-    VkSparseImageFormatProperties               formatProps;
+    VkSparseImageFormatProperties               formatProperties;
     uint32_t                                    imageMipTailStartLOD;
     VkDeviceSize                                imageMipTailSize;
     VkDeviceSize                                imageMipTailOffset;
@@ -1412,10 +1412,10 @@
 } VkSparseImageMemoryRequirements;
 
 typedef struct {
-    VkDeviceSize                                rangeOffset;
-    VkDeviceSize                                rangeSize;
-    VkDeviceSize                                memOffset;
+    VkDeviceSize                                resourceOffset;
+    VkDeviceSize                                size;
     VkDeviceMemory                              mem;
+    VkDeviceSize                                memOffset;
     VkSparseMemoryBindFlags                     flags;
 } VkSparseMemoryBind;
 
@@ -1447,8 +1447,8 @@
     VkImageSubresource                          subresource;
     VkOffset3D                                  offset;
     VkExtent3D                                  extent;
-    VkDeviceSize                                memOffset;
     VkDeviceMemory                              mem;
+    VkDeviceSize                                memOffset;
     VkSparseMemoryBindFlags                     flags;
 } VkSparseImageMemoryBind;
 
@@ -1593,15 +1593,15 @@
     VkStructureType                             sType;
     const void*                                 pNext;
     VkPipelineCacheCreateFlags                  flags;
-    size_t                                      initialSize;
-    const void*                                 initialData;
+    size_t                                      initialDataSize;
+    const void*                                 pInitialData;
     size_t                                      maxSize;
 } VkPipelineCacheCreateInfo;
 
 typedef struct {
     uint32_t                                    constantId;
-    size_t                                      size;
     uint32_t                                    offset;
+    size_t                                      size;
 } VkSpecializationMapEntry;
 
 typedef struct {
@@ -1621,7 +1621,7 @@
 
 typedef struct {
     uint32_t                                    binding;
-    uint32_t                                    strideInBytes;
+    uint32_t                                    stride;
     VkVertexInputStepRate                       stepRate;
 } VkVertexInputBindingDescription;
 
@@ -1629,7 +1629,7 @@
     uint32_t                                    location;
     uint32_t                                    binding;
     VkFormat                                    format;
-    uint32_t                                    offsetInBytes;
+    uint32_t                                    offset;
 } VkVertexInputAttributeDescription;
 
 typedef struct {
@@ -1763,7 +1763,7 @@
     VkLogicOp                                   logicOp;
     uint32_t                                    attachmentCount;
     const VkPipelineColorBlendAttachmentState*  pAttachments;
-    float                                       blendConst[4];
+    float                                       blendConstants[4];
 } VkPipelineColorBlendStateCreateInfo;
 
 typedef struct {
@@ -2013,7 +2013,7 @@
 typedef struct {
     VkDeviceSize                                srcOffset;
     VkDeviceSize                                destOffset;
-    VkDeviceSize                                copySize;
+    VkDeviceSize                                size;
 } VkBufferCopy;
 
 typedef struct {
@@ -2249,7 +2249,7 @@
 typedef void (VKAPI *PFN_vkCmdSetScissor)(VkCmdBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
 typedef void (VKAPI *PFN_vkCmdSetLineWidth)(VkCmdBuffer cmdBuffer, float lineWidth);
 typedef void (VKAPI *PFN_vkCmdSetDepthBias)(VkCmdBuffer cmdBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
-typedef void (VKAPI *PFN_vkCmdSetBlendConstants)(VkCmdBuffer cmdBuffer, const float blendConst[4]);
+typedef void (VKAPI *PFN_vkCmdSetBlendConstants)(VkCmdBuffer cmdBuffer, const float blendConstants[4]);
 typedef void (VKAPI *PFN_vkCmdSetDepthBounds)(VkCmdBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds);
 typedef void (VKAPI *PFN_vkCmdSetStencilCompareMask)(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask);
 typedef void (VKAPI *PFN_vkCmdSetStencilWriteMask)(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask);
@@ -2269,7 +2269,7 @@
 typedef void (VKAPI *PFN_vkCmdCopyBufferToImage)(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
 typedef void (VKAPI *PFN_vkCmdCopyImageToBuffer)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
 typedef void (VKAPI *PFN_vkCmdUpdateBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData);
-typedef void (VKAPI *PFN_vkCmdFillBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data);
+typedef void (VKAPI *PFN_vkCmdFillBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize size, uint32_t data);
 typedef void (VKAPI *PFN_vkCmdClearColorImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
 typedef void (VKAPI *PFN_vkCmdClearDepthStencilImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
 typedef void (VKAPI *PFN_vkCmdClearAttachments)(VkCmdBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
@@ -2830,7 +2830,7 @@
 
 void VKAPI vkCmdSetBlendConstants(
     VkCmdBuffer                                 cmdBuffer,
-    const float                                 blendConst[4]);
+    const float                                 blendConstants[4]);
 
 void VKAPI vkCmdSetDepthBounds(
     VkCmdBuffer                                 cmdBuffer,
@@ -2968,7 +2968,7 @@
     VkCmdBuffer                                 cmdBuffer,
     VkBuffer                                    destBuffer,
     VkDeviceSize                                destOffset,
-    VkDeviceSize                                fillSize,
+    VkDeviceSize                                size,
     uint32_t                                    data);
 
 void VKAPI vkCmdClearColorImage(
diff --git a/layers/device_limits.cpp b/layers/device_limits.cpp
index eb21585..41b0b6f 100644
--- a/layers/device_limits.cpp
+++ b/layers/device_limits.cpp
@@ -576,7 +576,7 @@
     VkCmdBuffer cmdBuffer,
     VkBuffer destBuffer,
     VkDeviceSize destOffset,
-    VkDeviceSize fillSize,
+    VkDeviceSize size,
     uint32_t data)
 {
     layer_data *dev_data = get_my_data_ptr(get_dispatch_key(cmdBuffer), layer_data_map);
@@ -590,16 +590,16 @@
         }
     }
 
-    // fillSize is the number of bytes to fill, which must be a multiple of 4.
-    if (fillSize & 3) {
+    // size is the number of bytes to fill, which must be a multiple of 4.
+    if (size & 3) {
         layer_data *my_data = get_my_data_ptr(get_dispatch_key(cmdBuffer), layer_data_map);
         if (log_msg(my_data->report_data, VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "DL",
-        "vkCmdFillBuffer parameter, VkDeviceSize fillSize, is not a multiple of 4")) {
+        "vkCmdFillBuffer parameter, VkDeviceSize size, is not a multiple of 4")) {
             return;
         }
     }
 
-    dev_data->device_dispatch_table->CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
+    dev_data->device_dispatch_table->CmdFillBuffer(cmdBuffer, destBuffer, destOffset, size, data);
 }
 
 VK_LAYER_EXPORT VkResult VKAPI vkDbgCreateMsgCallback(
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index f1f08e2..154d285 100755
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -2471,7 +2471,7 @@
         dev_data->device_dispatch_table->CmdSetDepthBias(cmdBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
 }
 
-VK_LAYER_EXPORT void VKAPI vkCmdSetBlendConstants(VkCmdBuffer cmdBuffer, const float blendConst[4])
+VK_LAYER_EXPORT void VKAPI vkCmdSetBlendConstants(VkCmdBuffer cmdBuffer, const float blendConstants[4])
 {
     VkBool32 skipCall = VK_FALSE;
     layer_data* dev_data = get_my_data_ptr(get_dispatch_key(cmdBuffer), layer_data_map);
@@ -2481,13 +2481,13 @@
             updateCBTracking(pCB);
             skipCall |= addCmd(dev_data, pCB, CMD_SETBLENDSTATE);
             pCB->status |= CBSTATUS_BLEND_SET;
-            memcpy(pCB->blendConst, blendConst, 4 * sizeof(float));
+            memcpy(pCB->blendConstants, blendConstants, 4 * sizeof(float));
         } else {
             skipCall |= report_error_no_cb_begin(dev_data, cmdBuffer, "vkCmdSetBlendConstants()");
         }
     }
     if (VK_FALSE == skipCall)
-        dev_data->device_dispatch_table->CmdSetBlendConstants(cmdBuffer, blendConst);
+        dev_data->device_dispatch_table->CmdSetBlendConstants(cmdBuffer, blendConstants);
 }
 
 VK_LAYER_EXPORT void VKAPI vkCmdSetDepthBounds(
@@ -2966,7 +2966,7 @@
         dev_data->device_dispatch_table->CmdUpdateBuffer(cmdBuffer, destBuffer, destOffset, dataSize, pData);
 }
 
-VK_LAYER_EXPORT void VKAPI vkCmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data)
+VK_LAYER_EXPORT void VKAPI vkCmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize size, uint32_t data)
 {
     VkBool32 skipCall = VK_FALSE;
     layer_data* dev_data = get_my_data_ptr(get_dispatch_key(cmdBuffer), layer_data_map);
@@ -2981,7 +2981,7 @@
         skipCall |= insideRenderPass(dev_data, pCB, "vkCmdCopyFillBuffer");
     }
     if (VK_FALSE == skipCall)
-        dev_data->device_dispatch_table->CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
+        dev_data->device_dispatch_table->CmdFillBuffer(cmdBuffer, destBuffer, destOffset, size, data);
 }
 
 VK_LAYER_EXPORT void VKAPI vkCmdClearAttachments(
diff --git a/layers/draw_state.h b/layers/draw_state.h
index 20a1b2f..6ded670 100755
--- a/layers/draw_state.h
+++ b/layers/draw_state.h
@@ -324,7 +324,7 @@
     float                        depthBiasConstantFactor;
     float                        depthBiasClamp;
     float                        depthBiasSlopeFactor;
-    float                        blendConst[4];
+    float                        blendConstants[4];
     float                        minDepthBounds;
     float                        maxDepthBounds;
     CBStencilData                front;
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp
index 914495e..258e7e5 100644
--- a/layers/mem_tracker.cpp
+++ b/layers/mem_tracker.cpp
@@ -1813,7 +1813,7 @@
 
 VK_LAYER_EXPORT void VKAPI vkCmdSetBlendConstants(
      VkCmdBuffer                            cmdBuffer,
-     const float                            blendConst[4])
+     const float                            blendConstants[4])
 {
     layer_data *my_data = get_my_data_ptr(get_dispatch_key(cmdBuffer), layer_data_map);
     VkBool32 skipCall = VK_FALSE;
@@ -1825,7 +1825,7 @@
     }
     loader_platform_thread_unlock_mutex(&globalLock);
     if (VK_FALSE == skipCall) {
-        my_data->device_dispatch_table->CmdSetBlendConstants(cmdBuffer, blendConst);
+        my_data->device_dispatch_table->CmdSetBlendConstants(cmdBuffer, blendConstants);
     }
 }
 
@@ -2176,7 +2176,7 @@
     VkCmdBuffer  cmdBuffer,
     VkBuffer     destBuffer,
     VkDeviceSize destOffset,
-    VkDeviceSize fillSize,
+    VkDeviceSize size,
     uint32_t     data)
 {
     layer_data *my_data = get_my_data_ptr(get_dispatch_key(cmdBuffer), layer_data_map);
@@ -2189,7 +2189,7 @@
     skipCall |= validate_buffer_usage_flags(my_data, cmdBuffer, destBuffer, VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT, true, "vkCmdFillBuffer()", "VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT");
     loader_platform_thread_unlock_mutex(&globalLock);
     if (VK_FALSE == skipCall) {
-        my_data->device_dispatch_table->CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
+        my_data->device_dispatch_table->CmdFillBuffer(cmdBuffer, destBuffer, destOffset, size, data);
     }
 }
 
diff --git a/layers/object_track.h b/layers/object_track.h
index a1e4a44..f3a1252 100644
--- a/layers/object_track.h
+++ b/layers/object_track.h
@@ -335,12 +335,12 @@
         pQueueInfo = pQueueInfo->pNextQI;
     }
     if (pQueueInfo != NULL) {
-        if ((queueInfo != NULL) && (queueInfo[pQueueInfo->queueNodeIndex].queueFlags & VK_QUEUE_SPARSE_MEMMGR_BIT) == 0) {
+        if ((queueInfo != NULL) && (queueInfo[pQueueInfo->queueNodeIndex].queueFlags & VK_QUEUE_SPARSE_BINDING_BIT) == 0) {
             log_msg(mdd(queue), VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_QUEUE, reinterpret_cast<uint64_t>(queue), 0, OBJTRACK_UNKNOWN_OBJECT, "OBJTRACK",
-                "Attempting %s on a non-memory-management capable queue -- VK_QUEUE_SPARSE_MEMMGR_BIT not set", function);
+                "Attempting %s on a non-memory-management capable queue -- VK_QUEUE_SPARSE_BINDING_BIT not set", function);
         } else {
             log_msg(mdd(queue), VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_QUEUE, reinterpret_cast<uint64_t>(queue), 0, OBJTRACK_UNKNOWN_OBJECT, "OBJTRACK",
-                "Attempting %s on a possibly non-memory-management capable queue -- VK_QUEUE_SPARSE_MEMMGR_BIT not known", function);
+                "Attempting %s on a possibly non-memory-management capable queue -- VK_QUEUE_SPARSE_BINDING_BIT not known", function);
         }
     }
 }
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index 84093a7..fa304f3 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -450,7 +450,7 @@
     VkQueueFlagBits allFlags = (VkQueueFlagBits)(
         VK_QUEUE_DMA_BIT |
         VK_QUEUE_COMPUTE_BIT |
-        VK_QUEUE_SPARSE_MEMMGR_BIT |
+        VK_QUEUE_SPARSE_BINDING_BIT |
         VK_QUEUE_GRAPHICS_BIT);
     if(enumerator & (~allFlags))
     {
@@ -477,9 +477,9 @@
     {
         strings.push_back("VK_QUEUE_COMPUTE_BIT");
     }
-    if(enumerator & VK_QUEUE_SPARSE_MEMMGR_BIT)
+    if(enumerator & VK_QUEUE_SPARSE_BINDING_BIT)
     {
-        strings.push_back("VK_QUEUE_SPARSE_MEMMGR_BIT");
+        strings.push_back("VK_QUEUE_SPARSE_BINDING_BIT");
     }
     if(enumerator & VK_QUEUE_GRAPHICS_BIT)
     {
@@ -603,9 +603,9 @@
 static
 bool ValidateEnumerator(VkSparseImageFormatFlagBits const& enumerator)
 {
-    VkSparseImageFormatFlagBits allFlags = (VkSparseImageFormatFlagBits)(VK_SPARSE_IMAGE_FMT_NONSTD_BLOCK_SIZE_BIT |
-        VK_SPARSE_IMAGE_FMT_ALIGNED_MIP_SIZE_BIT |
-        VK_SPARSE_IMAGE_FMT_SINGLE_MIPTAIL_BIT);
+    VkSparseImageFormatFlagBits allFlags = (VkSparseImageFormatFlagBits)(VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT |
+        VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT |
+        VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT);
     if(enumerator & (~allFlags))
     {
         return false;
@@ -623,17 +623,17 @@
     }
 
     std::vector<std::string> strings;
-    if(enumerator & VK_SPARSE_IMAGE_FMT_NONSTD_BLOCK_SIZE_BIT)
+    if(enumerator & VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT)
     {
-        strings.push_back("VK_SPARSE_IMAGE_FMT_NONSTD_BLOCK_SIZE_BIT");
+        strings.push_back("VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT");
     }
-    if(enumerator & VK_SPARSE_IMAGE_FMT_ALIGNED_MIP_SIZE_BIT)
+    if(enumerator & VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT)
     {
-        strings.push_back("VK_SPARSE_IMAGE_FMT_ALIGNED_MIP_SIZE_BIT");
+        strings.push_back("VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT");
     }
-    if(enumerator & VK_SPARSE_IMAGE_FMT_SINGLE_MIPTAIL_BIT)
+    if(enumerator & VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT)
     {
-        strings.push_back("VK_SPARSE_IMAGE_FMT_SINGLE_MIPTAIL_BIT");
+        strings.push_back("VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT");
     }
 
     std::string enumeratorString;
@@ -2555,11 +2555,11 @@
 
     if(pSparseMemoryRequirements != nullptr)
     {
-    if ((pSparseMemoryRequirements->formatProps.aspect &
+    if ((pSparseMemoryRequirements->formatProperties.aspect &
        (VK_IMAGE_ASPECT_COLOR_BIT | VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT | VK_IMAGE_ASPECT_METADATA_BIT)) == 0)
     {
         log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
-        "vkGetImageSparseMemoryRequirements parameter, VkImageAspect pSparseMemoryRequirements->formatProps.aspect, is an unrecognized enumerator");
+        "vkGetImageSparseMemoryRequirements parameter, VkImageAspect pSparseMemoryRequirements->formatProperties.aspect, is an unrecognized enumerator");
         return false;
     }
     }
@@ -3619,7 +3619,7 @@
         "vkCreatePipelineCache parameter, VkStructureType pCreateInfo->sType, is an invalid enumerator");
         return false;
     }
-    if(pCreateInfo->initialData != nullptr)
+    if(pCreateInfo->pInitialData != nullptr)
     {
     }
     }
@@ -5162,9 +5162,9 @@
     get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdSetDepthBias(cmdBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
 }
 
-VK_LAYER_EXPORT void VKAPI vkCmdSetBlendConstants(VkCmdBuffer cmdBuffer, const float blendConst[4])
+VK_LAYER_EXPORT void VKAPI vkCmdSetBlendConstants(VkCmdBuffer cmdBuffer, const float blendConstants[4])
 {
-    get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdSetBlendConstants(cmdBuffer, blendConst);
+    get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdSetBlendConstants(cmdBuffer, blendConstants);
 }
 
 VK_LAYER_EXPORT void VKAPI vkCmdSetDepthBounds(VkCmdBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds)
@@ -5816,7 +5816,7 @@
     VkCmdBuffer cmdBuffer,
     VkBuffer destBuffer,
     VkDeviceSize destOffset,
-    VkDeviceSize fillSize,
+    VkDeviceSize size,
     uint32_t data)
 {
 
@@ -5831,12 +5831,12 @@
     VkCmdBuffer cmdBuffer,
     VkBuffer destBuffer,
     VkDeviceSize destOffset,
-    VkDeviceSize fillSize,
+    VkDeviceSize size,
     uint32_t data)
 {
-    get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
+    get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdFillBuffer(cmdBuffer, destBuffer, destOffset, size, data);
 
-    PostCmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
+    PostCmdFillBuffer(cmdBuffer, destBuffer, destOffset, size, data);
 }
 
 bool PreCmdClearColorImage(
diff --git a/loader/trampoline.c b/loader/trampoline.c
index cb2cafa..2a240f1 100644
--- a/loader/trampoline.c
+++ b/loader/trampoline.c
@@ -1096,13 +1096,13 @@
     disp->CmdSetDepthBias(cmdBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
 }
 
-LOADER_EXPORT void VKAPI vkCmdSetBlendConstants(VkCmdBuffer cmdBuffer, const float blendConst[4])
+LOADER_EXPORT void VKAPI vkCmdSetBlendConstants(VkCmdBuffer cmdBuffer, const float blendConstants[4])
 {
     const VkLayerDispatchTable *disp;
 
     disp = loader_get_dispatch(cmdBuffer);
 
-    disp->CmdSetBlendConstants(cmdBuffer, blendConst);
+    disp->CmdSetBlendConstants(cmdBuffer, blendConstants);
 }
 
 LOADER_EXPORT void VKAPI vkCmdSetDepthBounds(VkCmdBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds)
@@ -1276,13 +1276,13 @@
     disp->CmdUpdateBuffer(cmdBuffer, destBuffer, destOffset, dataSize, pData);
 }
 
-LOADER_EXPORT void VKAPI vkCmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data)
+LOADER_EXPORT void VKAPI vkCmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize size, uint32_t data)
 {
     const VkLayerDispatchTable *disp;
 
     disp = loader_get_dispatch(cmdBuffer);
 
-    disp->CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
+    disp->CmdFillBuffer(cmdBuffer, destBuffer, destOffset, size, data);
 }
 
 LOADER_EXPORT void VKAPI vkCmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges)
diff --git a/tests/blit_tests.cpp b/tests/blit_tests.cpp
index 2a7b483..d7844f5 100644
--- a/tests/blit_tests.cpp
+++ b/tests/blit_tests.cpp
@@ -659,7 +659,7 @@
 
     cmd_.begin();
     VkBufferCopy region = {};
-    region.copySize = 4;
+    region.size = 4;
     vkCmdCopyBuffer(cmd_.handle(), src.handle(), dst.handle(), 1, &region);
     cmd_.end();
 
@@ -687,7 +687,7 @@
 
     cmd_.begin();
     VkBufferCopy region = {};
-    region.copySize = size * sizeof(VkDeviceSize);
+    region.size = size * sizeof(VkDeviceSize);
     vkCmdCopyBuffer(cmd_.handle(), src.handle(), dst.handle(), 1, &region);
     cmd_.end();
 
@@ -738,7 +738,7 @@
     for (int i = 0; i < ARRAY_SIZE(regions); i++) {
         const VkBufferCopy &r = regions[i];
 
-        for (int j = 0; j < r.copySize; j++) {
+        for (int j = 0; j < r.size; j++) {
             EXPECT_EQ(r.srcOffset + j, data[r.destOffset + j]) <<
                 "Region is: " << i << "\n" <<
                 "Offset is: " << r.destOffset + j;
@@ -791,7 +791,7 @@
     vkCmdPipelineBarrier(cmd_.handle(), src_stages, dest_stages, 0, 1, (const void * const*)&pmemory_barrier);
 
     VkBufferCopy region = {};
-    region.copySize = 4;
+    region.size = 4;
     vkCmdCopyBuffer(cmd_.handle(), bufs[0].handle(), bufs[1].handle(), 1, &region);
 
     memory_barrier = bufs[1].buffer_memory_barrier(
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
index 76705fe..d265265 100644
--- a/tests/layer_validation_tests.cpp
+++ b/tests/layer_validation_tests.cpp
@@ -1856,8 +1856,8 @@
 
     VkPipelineCacheCreateInfo pc_ci = {};
         pc_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO;
-        pc_ci.initialSize = 0;
-        pc_ci.initialData = 0;
+        pc_ci.initialDataSize = 0;
+        pc_ci.pInitialData = 0;
         pc_ci.maxSize = 0;
 
     VkPipeline pipeline;
@@ -4747,8 +4747,8 @@
     m_cmdBuffer->FillBuffer(buffer.handle(), 0, 6, 0x11111111);
     msgFlags = m_errorMonitor->GetState(&msgString);
     ASSERT_TRUE(0 != (msgFlags & VK_DBG_REPORT_ERROR_BIT)) << "Did not receive an err after calling FillBuffer with bad size";
-    if (!strstr(msgString.c_str(),"fillSize, is not a multiple of 4")) {
-        FAIL() << "Error received was not 'vkCmdFillBuffer parameter, VkDeviceSize fillSize, is not a multiple of 4'";
+    if (!strstr(msgString.c_str(),"size, is not a multiple of 4")) {
+        FAIL() << "Error received was not 'vkCmdFillBuffer parameter, VkDeviceSize size, is not a multiple of 4'";
     }
     EndCommandBuffer();
 }
diff --git a/tests/render_tests.cpp b/tests/render_tests.cpp
index 4c1e8a8..9576e69 100644
--- a/tests/render_tests.cpp
+++ b/tests/render_tests.cpp
@@ -762,7 +762,7 @@
 #define MESH_BIND_ID 0
     VkVertexInputBindingDescription vi_binding = {
         MESH_BIND_ID,                      // binding ID
-         sizeof(g_vbData[0]),              // strideInBytes;  Distance between vertices in bytes (0 = no advancement)
+         sizeof(g_vbData[0]),              // stride;  Distance between vertices in bytes (0 = no advancement)
          VK_VERTEX_INPUT_STEP_RATE_VERTEX // stepRate;       // Rate at which binding is incremented
     };
 
@@ -770,11 +770,11 @@
     vi_attribs[0].binding = MESH_BIND_ID;               // Binding ID
     vi_attribs[0].location = 0;                         // location, position
     vi_attribs[0].format = VK_FORMAT_R32G32B32A32_SFLOAT; // format of source data
-    vi_attribs[0].offsetInBytes = 0;                    // Offset of first element in bytes from base of vertex
+    vi_attribs[0].offset = 0;                    // Offset of first element in bytes from base of vertex
     vi_attribs[1].binding = MESH_BIND_ID;               // Binding ID
     vi_attribs[1].location = 1;                         // location, color
     vi_attribs[1].format = VK_FORMAT_R32G32B32A32_SFLOAT; // format of source data
-    vi_attribs[1].offsetInBytes = 1*sizeof(float)*4;     // Offset of first element in bytes from base of vertex
+    vi_attribs[1].offset = 1*sizeof(float)*4;     // Offset of first element in bytes from base of vertex
 
     pipelineobj.AddVertexInputAttribs(vi_attribs,2);
     pipelineobj.AddVertexInputBindings(&vi_binding,1);
@@ -841,7 +841,7 @@
 #define MESH_BUF_ID 0
     VkVertexInputBindingDescription vi_binding = {
         MESH_BUF_ID,                            // Binding ID
-        sizeof(vb_data[0]),                     // strideInBytes;  Distance between vertices in bytes (0 = no advancement)
+        sizeof(vb_data[0]),                     // stride;  Distance between vertices in bytes (0 = no advancement)
         VK_VERTEX_INPUT_STEP_RATE_VERTEX       // stepRate;       // Rate at which binding is incremented
     };
 
@@ -849,7 +849,7 @@
     vi_attrib.binding = MESH_BUF_ID;            // index into vertexBindingDescriptions
     vi_attrib.location = 0;
     vi_attrib.format = VK_FORMAT_R32G32_SFLOAT;   // format of source data
-    vi_attrib.offsetInBytes = 0;                // Offset of first element in bytes from base of vertex
+    vi_attrib.offset = 0;                // Offset of first element in bytes from base of vertex
 
     pipelineobj.AddVertexInputAttribs(&vi_attrib, 1);
     pipelineobj.AddVertexInputBindings(&vi_binding,1);
@@ -950,7 +950,7 @@
 #define MESH_BIND_ID 0
     VkVertexInputBindingDescription vi_binding = {
         MESH_BIND_ID,                           // binding ID
-        sizeof(g_vbData[0]),                    // strideInBytes;  Distance between vertices in bytes (0 = no advancement)
+        sizeof(g_vbData[0]),                    // stride;  Distance between vertices in bytes (0 = no advancement)
         VK_VERTEX_INPUT_STEP_RATE_VERTEX       // stepRate;       // Rate at which binding is incremented
     };
 
@@ -958,11 +958,11 @@
     vi_attribs[0].binding = MESH_BIND_ID;               // binding ID from BINDING_DESCRIPTION array to use for this attribute
     vi_attribs[0].location = 0;                         // layout location of vertex attribute
     vi_attribs[0].format = VK_FORMAT_R32G32B32A32_SFLOAT; // format of source data
-    vi_attribs[0].offsetInBytes = 0;                    // Offset of first element in bytes from base of vertex
+    vi_attribs[0].offset = 0;                    // Offset of first element in bytes from base of vertex
     vi_attribs[1].binding = MESH_BIND_ID;               // binding ID from BINDING_DESCRIPTION array to use for this attribute
     vi_attribs[1].location = 1;                         // layout location of vertex attribute
     vi_attribs[1].format = VK_FORMAT_R32G32B32A32_SFLOAT; // format of source data
-    vi_attribs[1].offsetInBytes = 16;                   // Offset of first element in bytes from base of vertex
+    vi_attribs[1].offset = 16;                   // Offset of first element in bytes from base of vertex
 
     pipelineobj.AddVertexInputAttribs(vi_attribs,2);
     pipelineobj.AddVertexInputBindings(&vi_binding,1);
@@ -1043,7 +1043,7 @@
 #define MESH_BIND_ID 0
     VkVertexInputBindingDescription vi_binding = {
         MESH_BIND_ID,                           // binding ID
-        sizeof(g_vbData[0]),                    // strideInBytes;  Distance between vertices in bytes (0 = no advancement)
+        sizeof(g_vbData[0]),                    // stride;  Distance between vertices in bytes (0 = no advancement)
         VK_VERTEX_INPUT_STEP_RATE_VERTEX       // stepRate;       // Rate at which binding is incremented
     };
 
@@ -1051,7 +1051,7 @@
     vi_attribs[0].binding = MESH_BIND_ID;               // binding ID
     vi_attribs[0].location = 0;
     vi_attribs[0].format = VK_FORMAT_R32G32B32A32_SFLOAT; // format of source data
-    vi_attribs[0].offsetInBytes = 0;                    // Offset of first element in bytes from base of vertex
+    vi_attribs[0].offset = 0;                    // Offset of first element in bytes from base of vertex
 
     pipelineobj.AddVertexInputAttribs(vi_attribs,1);
     pipelineobj.AddVertexInputBindings(&vi_binding,1);
@@ -1131,7 +1131,7 @@
 #define MESH_BIND_ID 0
     VkVertexInputBindingDescription vi_binding = {
         MESH_BIND_ID,                           // binding ID
-        sizeof(g_vbData[0]),                    // strideInBytes;  Distance between vertices in bytes (0 = no advancement)
+        sizeof(g_vbData[0]),                    // stride;  Distance between vertices in bytes (0 = no advancement)
         VK_VERTEX_INPUT_STEP_RATE_VERTEX       // stepRate;       // Rate at which binding is incremented
     };
 
@@ -1139,7 +1139,7 @@
     vi_attribs[0].binding = MESH_BIND_ID;               // binding ID
     vi_attribs[0].location = 0;
     vi_attribs[0].format = VK_FORMAT_R32G32B32A32_SFLOAT; // format of source data
-    vi_attribs[0].offsetInBytes = 0;                    // Offset of first element in bytes from base of vertex
+    vi_attribs[0].offset = 0;                    // Offset of first element in bytes from base of vertex
 
     pipelineobj.AddVertexInputAttribs(vi_attribs,1);
     pipelineobj.AddVertexInputBindings(&vi_binding,1);
@@ -1229,7 +1229,7 @@
 #define MESH_BIND_ID 0
     VkVertexInputBindingDescription vi_binding = {
         MESH_BIND_ID,                           // binding ID
-        sizeof(g_vbData[0]),                    // strideInBytes;  Distance between vertices in bytes (0 = no advancement)
+        sizeof(g_vbData[0]),                    // stride;  Distance between vertices in bytes (0 = no advancement)
         VK_VERTEX_INPUT_STEP_RATE_VERTEX       // stepRate;       // Rate at which binding is incremented
     };
 
@@ -1237,7 +1237,7 @@
     vi_attribs[0].binding = MESH_BIND_ID;               // binding ID
     vi_attribs[0].location = 0;
     vi_attribs[0].format = VK_FORMAT_R32G32B32A32_SFLOAT; // format of source data
-    vi_attribs[0].offsetInBytes = 0;                    // Offset of first element in bytes from base of vertex
+    vi_attribs[0].offset = 0;                    // Offset of first element in bytes from base of vertex
 
     pipelineobj.AddVertexInputAttribs(vi_attribs,1);
     pipelineobj.AddVertexInputBindings(&vi_binding,1);
@@ -1318,7 +1318,7 @@
 #define MESH_BIND_ID 0
     VkVertexInputBindingDescription vi_binding = {
         MESH_BIND_ID,                           // binding ID
-        sizeof(g_vbData[0]),                    // strideInBytes;  Distance between vertices in bytes (0 = no advancement)
+        sizeof(g_vbData[0]),                    // stride;  Distance between vertices in bytes (0 = no advancement)
         VK_VERTEX_INPUT_STEP_RATE_VERTEX       // stepRate;       // Rate at which binding is incremented
     };
 
@@ -1326,7 +1326,7 @@
     vi_attribs[0].binding = MESH_BIND_ID;               // binding ID
     vi_attribs[0].location = 0;
     vi_attribs[0].format = VK_FORMAT_R32G32B32A32_SFLOAT; // format of source data
-    vi_attribs[0].offsetInBytes = 0;                    // Offset of first element in bytes from base of vertex
+    vi_attribs[0].offset = 0;                    // Offset of first element in bytes from base of vertex
 
     pipelineobj.AddVertexInputAttribs(vi_attribs,1);
     pipelineobj.AddVertexInputBindings(&vi_binding,1);
@@ -1555,7 +1555,7 @@
 #define MESH_BUF_ID 0
     VkVertexInputBindingDescription vi_binding = {
         MESH_BUF_ID,                            // Binding ID
-        sizeof(g_vbData[0]),                    // strideInBytes;  Distance between vertices in bytes (0 = no advancement)
+        sizeof(g_vbData[0]),                    // stride;  Distance between vertices in bytes (0 = no advancement)
         VK_VERTEX_INPUT_STEP_RATE_VERTEX       // stepRate;       // Rate at which binding is incremented
     };
 
@@ -1563,11 +1563,11 @@
     vi_attribs[0].binding = MESH_BUF_ID;            // binding ID
     vi_attribs[0].location = 0;
     vi_attribs[0].format = VK_FORMAT_R32G32_SFLOAT;   // format of source data
-    vi_attribs[0].offsetInBytes = 0;                // Offset of first element in bytes from base of vertex
+    vi_attribs[0].offset = 0;                // Offset of first element in bytes from base of vertex
     vi_attribs[1].binding = MESH_BUF_ID;            // binding ID
     vi_attribs[1].location = 1;
     vi_attribs[1].format = VK_FORMAT_R32G32_SFLOAT;   // format of source data
-    vi_attribs[1].offsetInBytes = 16;                // Offset of first element in bytes from base of vertex
+    vi_attribs[1].offset = 16;                // Offset of first element in bytes from base of vertex
 
     pipelineobj.AddVertexInputAttribs(vi_attribs, 2);
     pipelineobj.AddVertexInputBindings(&vi_binding,1);
@@ -1658,7 +1658,7 @@
 #define MESH_BUF_ID 0
     VkVertexInputBindingDescription vi_binding = {
         MESH_BUF_ID,                            // Binding ID
-        sizeof(vData[0]),                       // strideInBytes;  Distance between vertices in bytes (0 = no advancement)
+        sizeof(vData[0]),                       // stride;  Distance between vertices in bytes (0 = no advancement)
         VK_VERTEX_INPUT_STEP_RATE_VERTEX       // stepRate;       // Rate at which binding is incremented
     };
 
@@ -1666,11 +1666,11 @@
     vi_attribs[0].binding = MESH_BUF_ID;                                        // binding ID
     vi_attribs[0].location = 4;
     vi_attribs[0].format = VK_FORMAT_R32G32B32A32_SFLOAT;                         // format of source data
-    vi_attribs[0].offsetInBytes = sizeof(float) * 4 * 2;   // Offset of first element in bytes from base of vertex
+    vi_attribs[0].offset = sizeof(float) * 4 * 2;   // Offset of first element in bytes from base of vertex
     vi_attribs[1].binding = MESH_BUF_ID;                                        // binding ID
     vi_attribs[1].location = 1;
     vi_attribs[1].format = VK_FORMAT_R32G32B32A32_SFLOAT;                         // format of source data
-    vi_attribs[1].offsetInBytes = sizeof(float) * 4 * 1;   // Offset of first element in bytes from base of vertex
+    vi_attribs[1].offset = sizeof(float) * 4 * 1;   // Offset of first element in bytes from base of vertex
 
     pipelineobj.AddVertexInputAttribs(vi_attribs, 2);
     pipelineobj.AddVertexInputBindings(&vi_binding, 1);
@@ -1751,7 +1751,7 @@
 #define MESH_BUF_ID 0
     VkVertexInputBindingDescription vi_binding = {
         MESH_BUF_ID,                            // Binding ID
-        sizeof(g_vbData[0]),                    // strideInBytes;  Distance between vertices in bytes (0 = no advancement)
+        sizeof(g_vbData[0]),                    // stride;  Distance between vertices in bytes (0 = no advancement)
         VK_VERTEX_INPUT_STEP_RATE_VERTEX       // stepRate;       // Rate at which binding is incremented
     };
 
@@ -1759,11 +1759,11 @@
     vi_attribs[0].binding = MESH_BUF_ID;            // binding ID
     vi_attribs[0].location = 0;
     vi_attribs[0].format = VK_FORMAT_R32G32B32A32_SFLOAT;            // format of source data
-    vi_attribs[0].offsetInBytes = 0;                // Offset of first element in bytes from base of vertex
+    vi_attribs[0].offset = 0;                // Offset of first element in bytes from base of vertex
     vi_attribs[1].binding = MESH_BUF_ID;            // binding ID
     vi_attribs[1].location = 1;
     vi_attribs[1].format = VK_FORMAT_R32G32B32A32_SFLOAT;            // format of source data
-    vi_attribs[1].offsetInBytes = 16;                // Offset of first element in bytes from base of vertex
+    vi_attribs[1].offset = 16;                // Offset of first element in bytes from base of vertex
 
     pipelineobj.AddVertexInputAttribs(vi_attribs, 2);
     pipelineobj.AddVertexInputBindings(&vi_binding,1);
@@ -1868,7 +1868,7 @@
 #define MESH_BUF_ID 0
     VkVertexInputBindingDescription vi_binding = {
         MESH_BUF_ID,                            // Binding ID
-        sizeof(g_vbData[0]),                     // strideInBytes;  Distance between vertices in bytes (0 = no advancement)
+        sizeof(g_vbData[0]),                     // stride;  Distance between vertices in bytes (0 = no advancement)
         VK_VERTEX_INPUT_STEP_RATE_VERTEX       // stepRate;       // Rate at which binding is incremented
     };
 
@@ -1876,11 +1876,11 @@
     vi_attribs[0].binding = MESH_BUF_ID;            // binding ID
     vi_attribs[0].location = 0;
     vi_attribs[0].format = VK_FORMAT_R32G32B32A32_SFLOAT;            // format of source data
-    vi_attribs[0].offsetInBytes = 0;                // Offset of first element in bytes from base of vertex
+    vi_attribs[0].offset = 0;                // Offset of first element in bytes from base of vertex
     vi_attribs[1].binding = MESH_BUF_ID;            // binding ID
     vi_attribs[1].location = 1;
     vi_attribs[1].format = VK_FORMAT_R32G32B32A32_SFLOAT;            // format of source data
-    vi_attribs[1].offsetInBytes = 16;                // Offset of first element in bytes from base of vertex
+    vi_attribs[1].offset = 16;                // Offset of first element in bytes from base of vertex
 
     pipelineobj.AddVertexInputAttribs(vi_attribs, 2);
     pipelineobj.AddVertexInputBindings(&vi_binding,1);
@@ -2743,7 +2743,7 @@
 #define MESH_BIND_ID 0
     VkVertexInputBindingDescription vi_binding = {
         MESH_BIND_ID,                      // binding ID
-        sizeof(g_vb_texture_Data[0]),               // strideInBytes;  Distance between vertices in bytes (0 = no advancement)
+        sizeof(g_vb_texture_Data[0]),               // stride;  Distance between vertices in bytes (0 = no advancement)
         VK_VERTEX_INPUT_STEP_RATE_VERTEX  // stepRate;       // Rate at which binding is incremented
     };
 
@@ -2751,11 +2751,11 @@
     vi_attribs[0].binding = MESH_BIND_ID;                 // Binding ID
     vi_attribs[0].location = 0;                           // location
     vi_attribs[0].format = VK_FORMAT_R32G32B32A32_SFLOAT; // format of source data
-    vi_attribs[0].offsetInBytes = 0;                      // Offset of first element in bytes from base of vertex
+    vi_attribs[0].offset = 0;                      // Offset of first element in bytes from base of vertex
     vi_attribs[1].binding = MESH_BIND_ID;                 // Binding ID
     vi_attribs[1].location = 1;                           // location
     vi_attribs[1].format = VK_FORMAT_R32G32_SFLOAT;       // format of source data
-    vi_attribs[1].offsetInBytes = 16;                     // Offset of uv components
+    vi_attribs[1].offset = 16;                     // Offset of uv components
 
     pipelineobj.AddVertexInputAttribs(vi_attribs,2);
     pipelineobj.AddVertexInputBindings(&vi_binding,1);
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index d571d8f..9e4bafa 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -206,10 +206,10 @@
     m_depthBiasClamp = 0.0f;
     m_depthBiasSlopeFactor = 0.0f;
 
-    m_blendConst[0] = 1.0f;
-    m_blendConst[1] = 1.0f;
-    m_blendConst[2] = 1.0f;
-    m_blendConst[3] = 1.0f;
+    m_blendConstants[0] = 1.0f;
+    m_blendConstants[1] = 1.0f;
+    m_blendConstants[2] = 1.0f;
+    m_blendConstants[3] = 1.0f;
 
     m_minDepthBounds = 0.f;
     m_maxDepthBounds = 1.f;
@@ -1147,10 +1147,10 @@
     m_cb_state.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO;
     m_cb_state.pNext = VK_NULL_HANDLE;
     m_cb_state.logicOp = VK_LOGIC_OP_COPY;
-    m_cb_state.blendConst[0] = 1.0f;
-    m_cb_state.blendConst[1] = 1.0f;
-    m_cb_state.blendConst[2] = 1.0f;
-    m_cb_state.blendConst[3] = 1.0f;
+    m_cb_state.blendConstants[0] = 1.0f;
+    m_cb_state.blendConstants[1] = 1.0f;
+    m_cb_state.blendConstants[2] = 1.0f;
+    m_cb_state.blendConstants[3] = 1.0f;
 
     m_ms_state.pNext = VK_NULL_HANDLE;
     m_ms_state.sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO;
@@ -1543,9 +1543,9 @@
 }
 
 void VkCommandBufferObj::SetBlendConstants(
-    const float                         blendConst[4])
+    const float                         blendConstants[4])
 {
-    vkCmdSetBlendConstants( handle(), blendConst);
+    vkCmdSetBlendConstants( handle(), blendConstants);
 }
 
 void VkCommandBufferObj::SetDepthBounds(
diff --git a/tests/vkrenderframework.h b/tests/vkrenderframework.h
index a68380b..4415b9c 100644
--- a/tests/vkrenderframework.h
+++ b/tests/vkrenderframework.h
@@ -116,7 +116,7 @@
     float                               m_depthBiasConstantFactor;
     float                               m_depthBiasClamp;
     float                               m_depthBiasSlopeFactor;
-    float                               m_blendConst[4];
+    float                               m_blendConstants[4];
     float                               m_minDepthBounds;
     float                               m_maxDepthBounds;
     uint32_t                            m_stencilCompareMask;
@@ -193,7 +193,7 @@
     void SetScissor(uint32_t scissorCount, const VkRect2D* pScissors);
     void SetLineWidth(float lineWidth);
     void SetDepthBias(float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
-    void SetBlendConstants(const float blendConst[4]);
+    void SetBlendConstants(const float blendConstants[4]);
     void SetDepthBounds(float minDepthBounds, float maxDepthBounds);
     void SetStencilReadMask(VkStencilFaceFlags faceMask, uint32_t stencilCompareMask);
     void SetStencilWriteMask(VkStencilFaceFlags faceMask, uint32_t stencilWriteMask);
diff --git a/vulkan.py b/vulkan.py
index 7ae15c3..7c38a37 100755
--- a/vulkan.py
+++ b/vulkan.py
@@ -751,7 +751,7 @@
 
         Proto("void", "CmdSetBlendConstants",
             [Param("VkCmdBuffer", "cmdBuffer"),
-             Param("const float[4]", "blendConst")]),
+             Param("const float[4]", "blendConstants")]),
 
         Proto("void", "CmdSetDepthBounds",
             [Param("VkCmdBuffer", "cmdBuffer"),
@@ -889,7 +889,7 @@
             [Param("VkCmdBuffer", "cmdBuffer"),
              Param("VkBuffer", "destBuffer"),
              Param("VkDeviceSize", "destOffset"),
-             Param("VkDeviceSize", "fillSize"),
+             Param("VkDeviceSize", "size"),
              Param("uint32_t", "data")]),
 
         Proto("void", "CmdClearColorImage",
