diff --git a/demos/cube.c b/demos/cube.c
index 58a265f..8dc7ac3 100644
--- a/demos/cube.c
+++ b/demos/cube.c
@@ -526,7 +526,7 @@
     vkCmdClearColorImage(cmd_buf,
             demo->buffers[demo->current_buffer].image,
             VK_IMAGE_LAYOUT_CLEAR_OPTIMAL,
-            clear_color, 1, &clear_range);
+            &clear_color, 1, &clear_range);
 
     clear_range.aspect = VK_IMAGE_ASPECT_DEPTH;
     vkCmdClearDepthStencil(cmd_buf, demo->depth.image,
diff --git a/demos/tri.c b/demos/tri.c
index 0a2a435..0d64062 100644
--- a/demos/tri.c
+++ b/demos/tri.c
@@ -346,7 +346,7 @@
     vkCmdClearColorImage(demo->draw_cmd,
             demo->buffers[demo->current_buffer].image,
             VK_IMAGE_LAYOUT_CLEAR_OPTIMAL,
-            clear_color, 1, &clear_range);
+            &clear_color, 1, &clear_range);
 
     clear_range.aspect = VK_IMAGE_ASPECT_DEPTH;
     vkCmdClearDepthStencil(demo->draw_cmd,
diff --git a/icd/intel/cmd_meta.c b/icd/intel/cmd_meta.c
index 711b4de..31da3a4 100644
--- a/icd/intel/cmd_meta.c
+++ b/icd/intel/cmd_meta.c
@@ -926,12 +926,12 @@
 }
 
 ICD_EXPORT void VKAPI vkCmdClearColorImage(
-    VkCmdBuffer                              cmdBuffer,
-    VkImage                                   image,
-    VkImageLayout                            imageLayout,
-    VkClearColor                             clearColor,
-    uint32_t                                    rangeCount,
-    const VkImageSubresourceRange*          pRanges)
+    VkCmdBuffer                         cmdBuffer,
+    VkImage                             image,
+    VkImageLayout                       imageLayout,
+    const VkClearColor                 *pClearColor,
+    uint32_t                            rangeCount,
+    const VkImageSubresourceRange      *pRanges)
 {
     struct intel_cmd *cmd = intel_cmd(cmdBuffer);
     struct intel_img *img = intel_img(image);
@@ -945,14 +945,14 @@
     meta.shader_id = INTEL_DEV_META_FS_CLEAR_COLOR;
     meta.samples = img->samples;
 
-    if (clearColor.useRawValue) {
-        icd_format_get_raw_value(img->layout.format, clearColor.color.rawColor, meta.clear_val);
+    if (pClearColor->useRawValue) {
+        icd_format_get_raw_value(img->layout.format, pClearColor->color.rawColor, meta.clear_val);
         format = cmd_meta_img_raw_format(cmd, img->layout.format);
     } else {
-        meta.clear_val[0] = u_fui(clearColor.color.floatColor[0]);
-        meta.clear_val[1] = u_fui(clearColor.color.floatColor[1]);
-        meta.clear_val[2] = u_fui(clearColor.color.floatColor[2]);
-        meta.clear_val[3] = u_fui(clearColor.color.floatColor[3]);
+        meta.clear_val[0] = u_fui(pClearColor->color.floatColor[0]);
+        meta.clear_val[1] = u_fui(pClearColor->color.floatColor[1]);
+        meta.clear_val[2] = u_fui(pClearColor->color.floatColor[2]);
+        meta.clear_val[3] = u_fui(pClearColor->color.floatColor[3]);
         format = img->layout.format;
     }
 
diff --git a/icd/nulldrv/nulldrv.c b/icd/nulldrv/nulldrv.c
index a0f3b41..2788c78 100644
--- a/icd/nulldrv/nulldrv.c
+++ b/icd/nulldrv/nulldrv.c
@@ -1085,12 +1085,12 @@
 }
 
 ICD_EXPORT void VKAPI vkCmdClearColorImage(
-    VkCmdBuffer                              cmdBuffer,
-    VkImage                                   image,
-    VkImageLayout                            imageLayout,
-    VkClearColor                             color,
-    uint32_t                                    rangeCount,
-    const VkImageSubresourceRange*          pRanges)
+    VkCmdBuffer                         cmdBuffer,
+    VkImage                             image,
+    VkImageLayout                       imageLayout,
+    const VkClearColor                 *pColor,
+    uint32_t                            rangeCount,
+    const VkImageSubresourceRange*      pRanges)
 {
     NULLDRV_LOG_FUNC;
 }
diff --git a/include/vulkan.h b/include/vulkan.h
index 28f1509..650d348 100644
--- a/include/vulkan.h
+++ b/include/vulkan.h
@@ -33,7 +33,7 @@
 #include "vk_platform.h"
 
 // Vulkan API version supported by this file
-#define VK_API_VERSION VK_MAKE_VERSION(0, 90, 0)
+#define VK_API_VERSION VK_MAKE_VERSION(0, 91, 0)
 
 #ifdef __cplusplus
 extern "C"
@@ -2132,7 +2132,7 @@
 typedef VkResult (VKAPI *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice);
 typedef VkResult (VKAPI *PFN_vkDestroyDevice)(VkDevice device);
 typedef VkResult (VKAPI *PFN_vkGetGlobalExtensionInfo)(VkExtensionInfoType infoType, uint32_t extensionIndex, size_t* pDataSize, void* pData);
-typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceExtensionInfo)(VkPhysicalDevice gpu, VkExtensionInfoType infoType, uint32_t extensionIndex, size_t* pDataSize, void* pData);
+typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceExtensionInfo)(VkPhysicalDevice physicalDevice, VkExtensionInfoType infoType, uint32_t extensionIndex, size_t* pDataSize, void* pData);
 typedef VkResult (VKAPI *PFN_vkEnumerateLayers)(VkPhysicalDevice physicalDevice, size_t maxStringSize, size_t* pLayerCount, char* const* pOutLayers, void* pReserved);
 typedef VkResult (VKAPI *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueNodeIndex, uint32_t queueIndex, VkQueue* pQueue);
 typedef VkResult (VKAPI *PFN_vkQueueSubmit)(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence);
@@ -2222,7 +2222,7 @@
 typedef void     (VKAPI *PFN_vkCmdCloneImageData)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout);
 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_vkCmdClearColorImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, VkClearColor color, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
+typedef void     (VKAPI *PFN_vkCmdClearColorImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColor* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
 typedef void     (VKAPI *PFN_vkCmdClearDepthStencil)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
 typedef void     (VKAPI *PFN_vkCmdResolveImage)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
 typedef void     (VKAPI *PFN_vkCmdSetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent);
@@ -2279,6 +2279,7 @@
     VkDevice                                    device);
 
 // Extension discovery functions
+
 VkResult VKAPI vkGetGlobalExtensionInfo(
     VkExtensionInfoType                         infoType,
     uint32_t                                    extensionIndex,
@@ -2854,7 +2855,7 @@
     VkCmdBuffer                                 cmdBuffer,
     VkImage                                     image,
     VkImageLayout                               imageLayout,
-    VkClearColor                                color,
+    const VkClearColor*                         pColor,
     uint32_t                                    rangeCount,
     const VkImageSubresourceRange*              pRanges);
 
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index 2af9cbc..f73e533 100755
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -2344,10 +2344,11 @@
     nextTable.CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
 }
 
-VK_LAYER_EXPORT void VKAPI vkCmdClearColorImage(VkCmdBuffer cmdBuffer,
-                                                   VkImage image, VkImageLayout imageLayout,
-                                                   VkClearColor color,
-                                                   uint32_t rangeCount, const VkImageSubresourceRange* pRanges)
+VK_LAYER_EXPORT void VKAPI vkCmdClearColorImage(
+        VkCmdBuffer cmdBuffer,
+        VkImage image, VkImageLayout imageLayout,
+        const VkClearColor *pColor,
+        uint32_t rangeCount, const VkImageSubresourceRange* pRanges)
 {
     GLOBAL_CB_NODE* pCB = getCBNode(cmdBuffer);
     if (pCB) {
@@ -2359,7 +2360,7 @@
         sprintf(str, "Attempt to use CmdBuffer %p that doesn't exist!", (void*)cmdBuffer);
         layerCbMsg(VK_DBG_MSG_ERROR, VK_VALIDATION_LEVEL_0, cmdBuffer, 0, DRAWSTATE_INVALID_CMD_BUFFER, "DS", str);
     }
-    nextTable.CmdClearColorImage(cmdBuffer, image, imageLayout, color, rangeCount, pRanges);
+    nextTable.CmdClearColorImage(cmdBuffer, image, imageLayout, pColor, rangeCount, pRanges);
 }
 
 VK_LAYER_EXPORT void VKAPI vkCmdClearDepthStencil(VkCmdBuffer cmdBuffer,
diff --git a/layers/glave_snapshot.c b/layers/glave_snapshot.c
index e7afe57..c924355 100644
--- a/layers/glave_snapshot.c
+++ b/layers/glave_snapshot.c
@@ -1431,12 +1431,12 @@
     nextTable.CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
 }
 
-VK_LAYER_EXPORT void VKAPI vkCmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, VkClearColor color, uint32_t rangeCount, const VkImageSubresourceRange* pRanges)
+VK_LAYER_EXPORT void VKAPI vkCmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColor* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges)
 {
     loader_platform_thread_lock_mutex(&objLock);
     ll_increment_use_count((void*)cmdBuffer, VK_OBJECT_TYPE_CMD_BUFFER);
     loader_platform_thread_unlock_mutex(&objLock);
-    nextTable.CmdClearColorImage(cmdBuffer, image, imageLayout, color, rangeCount, pRanges);
+    nextTable.CmdClearColorImage(cmdBuffer, image, imageLayout, pColor, rangeCount, pRanges);
 }
 
 VK_LAYER_EXPORT void VKAPI vkCmdClearDepthStencil(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges)
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp
index de5ef19..27f6924 100644
--- a/layers/mem_tracker.cpp
+++ b/layers/mem_tracker.cpp
@@ -2120,7 +2120,7 @@
     VkCmdBuffer                    cmdBuffer,
     VkImage                        image,
     VkImageLayout                  imageLayout,
-    VkClearColor                   color,
+    const VkClearColor            *pColor,
     uint32_t                       rangeCount,
     const VkImageSubresourceRange *pRanges)
 {
@@ -2133,7 +2133,7 @@
         layerCbMsg(VK_DBG_MSG_ERROR, VK_VALIDATION_LEVEL_0, cmdBuffer, 0, MEMTRACK_MEMORY_BINDING_ERROR, "MEM", str);
     }
     loader_platform_thread_unlock_mutex(&globalLock);
-    nextTable.CmdClearColorImage(cmdBuffer, image, imageLayout, color, rangeCount, pRanges);
+    nextTable.CmdClearColorImage(cmdBuffer, image, imageLayout, pColor, rangeCount, pRanges);
 }
 
 VK_LAYER_EXPORT void VKAPI vkCmdClearDepthStencil(
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index 73a505f..f780714 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -1400,7 +1400,7 @@
     nextTable.CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
 }
 
-VK_LAYER_EXPORT void VKAPI vkCmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, VkClearColor color, uint32_t rangeCount, const VkImageSubresourceRange* pRanges)
+VK_LAYER_EXPORT void VKAPI vkCmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColor* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges)
 {
     char str[1024];
     if (!validate_VkImageLayout(imageLayout)) {
@@ -1414,7 +1414,7 @@
             layerCbMsg(VK_DBG_MSG_ERROR, VK_VALIDATION_LEVEL_0, NULL, 0, 1, "PARAMCHECK", str);
         }
     }
-    nextTable.CmdClearColorImage(cmdBuffer, image, imageLayout, color, rangeCount, pRanges);
+    nextTable.CmdClearColorImage(cmdBuffer, image, imageLayout, pColor, rangeCount, pRanges);
 }
 
 VK_LAYER_EXPORT void VKAPI vkCmdClearDepthStencil(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges)
diff --git a/tests/blit_tests.cpp b/tests/blit_tests.cpp
index 98d81cb..5e50678 100644
--- a/tests/blit_tests.cpp
+++ b/tests/blit_tests.cpp
@@ -1391,7 +1391,7 @@
 
         vkCmdClearColorImage(cmd_.obj(),
                               img.obj(), VK_IMAGE_LAYOUT_CLEAR_OPTIMAL,
-                              clear_color, ranges.size(), &ranges[0]);
+                              &clear_color, ranges.size(), &ranges[0]);
 
         vkCmdPipelineBarrier(cmd_.obj(), VK_WAIT_EVENT_TOP_OF_PIPE, 1, set_events, 1, (const void **)&p_to_xfer[0]);
 
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 1919d92..ae62008 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -1229,7 +1229,7 @@
 
         vkCmdClearColorImage(obj(),
                m_renderTargets[i]->image(), VK_IMAGE_LAYOUT_CLEAR_OPTIMAL,
-               clear_color, 1, &srRange );
+               &clear_color, 1, &srRange );
 
         mem_ref_mgr.AddMemoryRefs(*m_renderTargets[i]);
     }
diff --git a/vulkan.py b/vulkan.py
index e77a662..7aad8c9 100755
--- a/vulkan.py
+++ b/vulkan.py
@@ -777,7 +777,7 @@
             [Param("VkCmdBuffer", "cmdBuffer"),
              Param("VkImage", "image"),
              Param("VkImageLayout", "imageLayout"),
-             Param("VkClearColor", "color"),
+             Param("const VkClearColor*", "pColor"),
              Param("uint32_t", "rangeCount"),
              Param("const VkImageSubresourceRange*", "pRanges")]),
 
