icd: Use new loader interface for finding ICD entry points Remove library exports on all Vulkan entry points but vk_icdGetInstanceProcAddr.
diff --git a/icd/common/icd.h b/icd/common/icd.h
index ba55bf7..f38ea73 100644
--- a/icd/common/icd.h
+++ b/icd/common/icd.h
@@ -43,4 +43,7 @@
 #  define ICD_EXPORT
 #endif
 
+VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(
+    VkInstance                                  instance,
+    const char*                                 pName);
 #endif /* ICD_H */
diff --git a/icd/intel/buf.c b/icd/intel/buf.c
index a917c0a..be8a7ea 100644
--- a/icd/intel/buf.c
+++ b/icd/intel/buf.c
@@ -88,7 +88,7 @@
     intel_base_destroy(&buf->obj.base);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
     VkDevice                                  device,
     const VkBufferCreateInfo*               pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -99,7 +99,7 @@
     return intel_buf_create(dev, pCreateInfo, (struct intel_buf **) pBuffer);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
+VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
     VkDevice                                device,
     VkBuffer                                buffer,
     const VkAllocationCallbacks*                     pAllocator)
diff --git a/icd/intel/cmd.c b/icd/intel/cmd.c
index 189a82e..889c6a0 100644
--- a/icd/intel/cmd.c
+++ b/icd/intel/cmd.c
@@ -470,7 +470,7 @@
     //intel_base_destroy(&cmd->obj.base);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
     VkDevice                                    device,
     const VkCommandPoolCreateInfo*                  pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -482,14 +482,14 @@
             (struct intel_cmd_pool **) pCommandPool);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool(
+VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool(
     VkDevice                                    device,
     VkCommandPool                                   commandPool,
     const VkAllocationCallbacks*                     pAllocator)
 {
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
+VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
     VkDevice                                    device,
     VkCommandPool                                   commandPool,
     VkCommandPoolResetFlags                         flags)
@@ -510,7 +510,7 @@
     }
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
+VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
     VkDevice                            device,
     const VkCommandBufferAllocateInfo*         pAllocateInfo,
     VkCommandBuffer*                        pCommandBuffers)
@@ -535,7 +535,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
+VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
     VkDevice                            device,
     VkCommandPool                           commandPool,
     uint32_t                            commandBufferCount,
@@ -544,7 +544,7 @@
     intel_free_cmd_buffers(intel_cmd_pool(commandPool), commandBufferCount, pCommandBuffers);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
+VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
     VkCommandBuffer                              commandBuffer,
     const VkCommandBufferBeginInfo            *info)
 {
@@ -553,7 +553,7 @@
     return intel_cmd_begin(cmd, info);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
+VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
     VkCommandBuffer                              commandBuffer)
 {
     struct intel_cmd *cmd = intel_cmd(commandBuffer);
@@ -561,7 +561,7 @@
     return intel_cmd_end(cmd);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
+VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
     VkCommandBuffer                              commandBuffer,
     VkCommandBufferResetFlags                    flags)
 {
diff --git a/icd/intel/cmd_barrier.c b/icd/intel/cmd_barrier.c
index bb85c84..c0720fb 100644
--- a/icd/intel/cmd_barrier.c
+++ b/icd/intel/cmd_barrier.c
@@ -264,7 +264,7 @@
     cmd_batch_flush(cmd, flush_flags);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(
+VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(
     VkCommandBuffer                                 commandBuffer,
     uint32_t                                    eventCount,
     const VkEvent*                              pEvents,
@@ -292,7 +292,7 @@
             memoryBarrierCount, ppMemoryBarriers);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier(
+VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier(
         VkCommandBuffer                                 commandBuffer,
         VkPipelineStageFlags                        srcStageMask,
         VkPipelineStageFlags                        dstStageMask,
diff --git a/icd/intel/cmd_meta.c b/icd/intel/cmd_meta.c
index d2e7e7d..aa00f2d 100644
--- a/icd/intel/cmd_meta.c
+++ b/icd/intel/cmd_meta.c
@@ -399,7 +399,7 @@
     return format;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
     VkCommandBuffer                 commandBuffer,
     VkBuffer                    srcBuffer,
     VkBuffer                    dstBuffer,
@@ -470,7 +470,7 @@
     }
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
     VkCommandBuffer                              commandBuffer,
     VkImage                                   srcImage,
     VkImageLayout                            srcImageLayout,
@@ -551,7 +551,7 @@
     }
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
+VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
     VkCommandBuffer                              commandBuffer,
     VkImage                                  srcImage,
     VkImageLayout                            srcImageLayout,
@@ -567,7 +567,7 @@
     assert(0 && "vkCmdBlitImage not implemented");
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
     VkCommandBuffer                              commandBuffer,
     VkBuffer                                  srcBuffer,
     VkImage                                   dstImage,
@@ -619,7 +619,7 @@
     }
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
     VkCommandBuffer                              commandBuffer,
     VkImage                                   srcImage,
     VkImageLayout                            srcImageLayout,
@@ -707,7 +707,7 @@
     }
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
+VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
     VkCommandBuffer                              commandBuffer,
     VkBuffer                                  dstBuffer,
     VkDeviceSize                                dstOffset,
@@ -749,7 +749,7 @@
     cmd_draw_meta(cmd, &meta);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
+VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
     VkCommandBuffer                              commandBuffer,
     VkBuffer                                  dstBuffer,
     VkDeviceSize                                dstOffset,
@@ -896,7 +896,7 @@
     }
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
+VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
     VkCommandBuffer                         commandBuffer,
     VkImage                             image,
     VkImageLayout                       imageLayout,
@@ -943,7 +943,7 @@
     }
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
+VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
     VkCommandBuffer                                 commandBuffer,
     VkImage                                     image,
     VkImageLayout                               imageLayout,
@@ -1056,7 +1056,7 @@
     }
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
+VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
     VkCommandBuffer                              commandBuffer,
     VkImage                                   srcImage,
     VkImageLayout                            srcImageLayout,
diff --git a/icd/intel/cmd_mi.c b/icd/intel/cmd_mi.c
index 3d580b0..5c892f7 100644
--- a/icd/intel/cmd_mi.c
+++ b/icd/intel/cmd_mi.c
@@ -108,7 +108,7 @@
     }
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
+VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
     VkCommandBuffer                                 commandBuffer,
     VkQueryPool                                 queryPool,
     uint32_t                                    slot,
@@ -133,7 +133,7 @@
     }
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
+VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
     VkCommandBuffer                                 commandBuffer,
     VkQueryPool                                 queryPool,
     uint32_t                                    slot)
@@ -157,7 +157,7 @@
     }
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
+VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
     VkCommandBuffer                                 commandBuffer,
     VkQueryPool                                 queryPool,
     uint32_t                                    firstQuery,
@@ -182,7 +182,7 @@
     cmd_batch_immediate(cmd, pipe_control_flags, event->obj.mem->bo, 0, value);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
+VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
     VkCommandBuffer                              commandBuffer,
     VkEvent                                  event_,
     VkPipelineStageFlags                     stageMask)
@@ -193,7 +193,7 @@
     cmd_write_event_value(cmd, event, stageMask, 1);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
+VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
     VkCommandBuffer                              commandBuffer,
     VkEvent                                  event_,
     VkPipelineStageFlags                     stageMask)
@@ -204,7 +204,7 @@
     cmd_write_event_value(cmd, event, stageMask, 0);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
     VkCommandBuffer                                 commandBuffer,
     VkQueryPool                                 queryPool,
     uint32_t                                    firstQuery,
@@ -217,7 +217,7 @@
     /* TODO: Fill in functionality here */
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
+VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
     VkCommandBuffer                              commandBuffer,
     VkPipelineStageFlagBits                     pipelineStage,
     VkQueryPool                                 queryPool,
diff --git a/icd/intel/cmd_pipeline.c b/icd/intel/cmd_pipeline.c
index 6ec50c0..0a06bd2 100644
--- a/icd/intel/cmd_pipeline.c
+++ b/icd/intel/cmd_pipeline.c
@@ -3639,7 +3639,7 @@
    cmd_batch_reloc(cmd, pos + 1, bo, 0, 0);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
+VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
     VkCommandBuffer                              commandBuffer,
     VkPipelineBindPoint                     pipelineBindPoint,
     VkPipeline                                pipeline)
@@ -3660,7 +3660,7 @@
 }
 
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
+VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
     VkCommandBuffer                             commandBuffer,
     VkPipelineBindPoint                     pipelineBindPoint,
     VkPipelineLayout                        layout,
@@ -3705,7 +3705,7 @@
 }
 
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
+VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
     VkCommandBuffer                                 commandBuffer,
     uint32_t                                        firstBinding,
     uint32_t                                        bindingCount,
@@ -3720,7 +3720,7 @@
     }
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
+VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
     VkCommandBuffer                              commandBuffer,
     VkBuffer                                  buffer,
     VkDeviceSize                                offset,
@@ -3732,7 +3732,7 @@
     cmd_bind_index_data(cmd, buf, offset, indexType);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDraw(
+VKAPI_ATTR void VKAPI_CALL vkCmdDraw(
     VkCommandBuffer                                 commandBuffer,
     uint32_t                                    vertexCount,
     uint32_t                                    instanceCount,
@@ -3745,7 +3745,7 @@
             firstInstance, instanceCount, false, 0);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
     VkCommandBuffer                                 commandBuffer,
     uint32_t                                    indexCount,
     uint32_t                                    instanceCount,
@@ -3759,7 +3759,7 @@
             firstInstance, instanceCount, true, vertexOffset);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
     VkCommandBuffer                              commandBuffer,
     VkBuffer                                  buffer,
     VkDeviceSize                                offset,
@@ -3769,7 +3769,7 @@
     assert(0 && "vkCmdDrawIndirect not implemented");
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
     VkCommandBuffer                              commandBuffer,
     VkBuffer                                  buffer,
     VkDeviceSize                                offset,
@@ -3779,7 +3779,7 @@
     assert(0 && "vkCmdDrawIndexedIndirect not implemented");
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
+VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
     VkCommandBuffer                              commandBuffer,
     uint32_t                                    x,
     uint32_t                                    y,
@@ -3788,7 +3788,7 @@
     assert(0 && "vkCmdDispatch not implemented");
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
+VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
     VkCommandBuffer                              commandBuffer,
     VkBuffer                                  buffer,
     VkDeviceSize                                offset)
@@ -3816,7 +3816,7 @@
     pGranularity->width = 1;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
+VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
     VkCommandBuffer                                 commandBuffer,
     const VkRenderPassBeginInfo*                pRenderPassBegin,
     VkSubpassContents                        contents)
@@ -3874,7 +3874,7 @@
     }
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
+VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
     VkCommandBuffer                                 commandBuffer,
     VkSubpassContents                        contents)
 {
@@ -3890,7 +3890,7 @@
    cmd->bind.render_pass_contents = contents;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
+VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
     VkCommandBuffer                              commandBuffer)
 {
    struct intel_cmd *cmd = intel_cmd(commandBuffer);
@@ -3898,7 +3898,7 @@
    cmd_end_render_pass(cmd);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
+VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
     VkCommandBuffer                                 commandBuffer,
     uint32_t                                    commandBuffersCount,
     const VkCommandBuffer*                          pCommandBuffers)
diff --git a/icd/intel/desc.c b/icd/intel/desc.c
index 5450fe9..0ec93e8 100644
--- a/icd/intel/desc.c
+++ b/icd/intel/desc.c
@@ -755,7 +755,7 @@
     intel_base_destroy(&pipeline_layout->obj.base);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
     VkDevice                                   device,
     const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -767,7 +767,7 @@
             (struct intel_desc_layout **) pSetLayout);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
+VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
     VkDevice                                device,
     VkDescriptorSetLayout                   descriptorSetLayout,
     const VkAllocationCallbacks*                     pAllocator)
@@ -778,7 +778,7 @@
     obj->destroy(obj);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(
     VkDevice                                device,
     const VkPipelineLayoutCreateInfo*       pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -791,7 +791,7 @@
                                         (struct intel_pipeline_layout **) pPipelineLayout);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
+VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
     VkDevice                                device,
     VkPipelineLayout                        pipelineLayout,
     const VkAllocationCallbacks*                     pAllocator)
@@ -802,7 +802,7 @@
     obj->destroy(obj);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
     VkDevice                                    device,
     const VkDescriptorPoolCreateInfo*           pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -814,7 +814,7 @@
             (struct intel_desc_pool **) pDescriptorPool);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool(
+VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool(
     VkDevice                                device,
     VkDescriptorPool                        descriptorPool,
     const VkAllocationCallbacks*                     pAllocator)
@@ -825,7 +825,7 @@
     obj->destroy(obj);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
+VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
     VkDevice                                  device,
     VkDescriptorPool                          descriptorPool,
     VkDescriptorPoolResetFlags                flags)
@@ -837,7 +837,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
+VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
     VkDevice                                    device,
     const VkDescriptorSetAllocateInfo*             pAllocateInfo,
     VkDescriptorSet*                            pDescriptorSets)
@@ -860,7 +860,7 @@
     return ret;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
+VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
     VkDevice                                    device,
     VkDescriptorPool                            descriptorPool,
     uint32_t                                    descriptorSetCount,
@@ -875,7 +875,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
+VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
     VkDevice                                    device,
     uint32_t                                    descriptorWriteCount,
     const VkWriteDescriptorSet*                 pDescriptorWrites,
diff --git a/icd/intel/dev.c b/icd/intel/dev.c
index c40776b..20195fd 100644
--- a/icd/intel/dev.c
+++ b/icd/intel/dev.c
@@ -209,7 +209,7 @@
     va_end(ap);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
     VkPhysicalDevice                    gpu_,
     const VkDeviceCreateInfo*           pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -220,7 +220,7 @@
     return intel_dev_create(gpu, pCreateInfo, (struct intel_dev **) pDevice);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
+VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
     VkDevice                                  device,
     const VkAllocationCallbacks*                     pAllocator)
 {
@@ -229,7 +229,7 @@
     intel_dev_destroy(dev);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
+VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
     VkDevice                                  device,
     uint32_t                                  queueFamilyIndex,
     uint32_t                                  queueIndex,
@@ -240,7 +240,7 @@
     *pQueue = (VkQueue) dev->queues[queueFamilyIndex];
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
+VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
     VkDevice                                  device)
 {
     struct intel_dev *dev = intel_dev(device);
diff --git a/icd/intel/event.c b/icd/intel/event.c
index 135c1fc..45d89e8 100644
--- a/icd/intel/event.c
+++ b/icd/intel/event.c
@@ -138,7 +138,7 @@
     return (val) ? VK_EVENT_SET : VK_EVENT_RESET;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
     VkDevice                                  device,
     const VkEventCreateInfo*                pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -150,7 +150,7 @@
             (struct intel_event **) pEvent);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
+VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
     VkDevice                                device,
     VkEvent                                 event,
     const VkAllocationCallbacks*                     pAllocator)
@@ -162,7 +162,7 @@
     obj->destroy(obj);
  }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
+VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
     VkDevice                                  device,
     VkEvent                                   event_)
 {
@@ -171,7 +171,7 @@
     return intel_event_get_status(event);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
+VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
     VkDevice                                  device,
     VkEvent                                   event_)
 {
@@ -180,7 +180,7 @@
     return intel_event_set(event);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
+VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
     VkDevice                                  device,
     VkEvent                                   event_)
 {
diff --git a/icd/intel/fb.c b/icd/intel/fb.c
index 0cc55a7..9aa95d0 100644
--- a/icd/intel/fb.c
+++ b/icd/intel/fb.c
@@ -209,7 +209,7 @@
     intel_base_destroy(&rp->obj.base);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
     VkDevice                                  device,
     const VkFramebufferCreateInfo*          pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -221,7 +221,7 @@
             (struct intel_fb **) pFramebuffer);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
+VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
     VkDevice                                device,
     VkFramebuffer                           framebuffer,
     const VkAllocationCallbacks*                     pAllocator)
@@ -232,7 +232,7 @@
     obj->destroy(obj);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
     VkDevice                                  device,
     const VkRenderPassCreateInfo*          pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -244,7 +244,7 @@
             (struct intel_render_pass **) pRenderPass);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
+VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
     VkDevice                                device,
     VkRenderPass                           renderPass,
     const VkAllocationCallbacks*                     pAllocator)
diff --git a/icd/intel/fence.c b/icd/intel/fence.c
index 0b94421..df20e41 100644
--- a/icd/intel/fence.c
+++ b/icd/intel/fence.c
@@ -119,7 +119,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
     VkDevice                                  device,
     const VkFenceCreateInfo*                pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -131,7 +131,7 @@
             (struct intel_fence **) pFence);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyFence(
+VKAPI_ATTR void VKAPI_CALL vkDestroyFence(
     VkDevice                                device,
     VkFence                                 fence,
     const VkAllocationCallbacks*                     pAllocator)
@@ -142,7 +142,7 @@
     obj->destroy(obj);
  }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
+VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
     VkDevice                                  device,
     VkFence                                   fence_)
 {
@@ -151,7 +151,7 @@
     return intel_fence_wait(fence, 0);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
+VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
     VkDevice                                  device,
     uint32_t                                    fenceCount,
     const VkFence*                            pFences,
@@ -183,7 +183,7 @@
 
     return ret;
 }
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
+VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
     VkDevice                                  device,
     uint32_t                                  fenceCount,
     const VkFence*                            pFences)
diff --git a/icd/intel/format.c b/icd/intel/format.c
index fa10065..be7b136 100644
--- a/icd/intel/format.c
+++ b/icd/intel/format.c
@@ -694,7 +694,7 @@
     }
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
     VkPhysicalDevice                          physicalDevice,
     VkFormat                                  format,
     VkFormatProperties*                       pFormatInfo)
@@ -711,7 +711,7 @@
 //      maximum is 2 GB for all products and all surface types."
 static const size_t intel_max_resource_size = 1u << 31;
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
     VkPhysicalDevice                            physicalDevice,
     VkFormat                                    format,
     VkImageType                                 type,
diff --git a/icd/intel/gpu.c b/icd/intel/gpu.c
index 8ba8bc9..d4348ed 100644
--- a/icd/intel/gpu.c
+++ b/icd/intel/gpu.c
@@ -454,7 +454,7 @@
     return type;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
     VkPhysicalDevice gpu_,
     VkPhysicalDeviceProperties* pProperties)
 {
@@ -463,7 +463,7 @@
     intel_gpu_get_props(gpu, pProperties);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
     VkPhysicalDevice gpu_,
     uint32_t* pQueueFamilyPropertyCount,
     VkQueueFamilyProperties* pProperties)
@@ -482,7 +482,7 @@
    }
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
     VkPhysicalDevice gpu_,
     VkPhysicalDeviceMemoryProperties* pProperties)
 {
@@ -491,7 +491,7 @@
    intel_gpu_get_memory_props(gpu, pProperties);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
                                                VkPhysicalDevice physicalDevice,
                                                VkPhysicalDeviceFeatures* pFeatures)
 {
@@ -505,7 +505,7 @@
     memset(pProps, 0, sizeof(*pProps));
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(
         VkPhysicalDevice                            physicalDevice,
         const char*                                 pLayerName,
         uint32_t*                                   pPropertyCount,
@@ -529,7 +529,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
         VkPhysicalDevice                            physicalDevice,
         uint32_t*                                   pPropertyCount,
         VkLayerProperties*                          pProperties)
@@ -538,7 +538,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(
     VkPhysicalDevice                            physicalDevice,
     VkFormat                                    format,
     VkImageType                                 type,
diff --git a/icd/intel/img.c b/icd/intel/img.c
index 3bd88b3..bfb6374 100644
--- a/icd/intel/img.c
+++ b/icd/intel/img.c
@@ -140,7 +140,7 @@
     intel_base_destroy(&img->obj.base);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
     VkDevice                                  device,
     const VkImageCreateInfo*                pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -152,7 +152,7 @@
             (struct intel_img **) pImage);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyImage(
+VKAPI_ATTR void VKAPI_CALL vkDestroyImage(
     VkDevice                                device,
     VkImage                                 image,
     const VkAllocationCallbacks*                     pAllocator)
@@ -163,7 +163,7 @@
     obj->destroy(obj);
  }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
+VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
     VkDevice                                    device,
     VkImage                                     image,
     const VkImageSubresource*                   pSubresource,
diff --git a/icd/intel/instance.c b/icd/intel/instance.c
index 9a95721..6ae9b7d 100644
--- a/icd/intel/instance.c
+++ b/icd/intel/instance.c
@@ -217,7 +217,7 @@
     return type;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
     const VkInstanceCreateInfo*               pCreateInfo,
     const VkAllocationCallbacks*              pAllocator,
     VkInstance*                               pInstance)
@@ -226,7 +226,7 @@
             (struct intel_instance **) pInstance);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
+VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
     VkInstance                                pInstance,
     const VkAllocationCallbacks*              pAllocator)
 {
@@ -235,7 +235,7 @@
     intel_instance_destroy(instance);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
         const char*                           pLayerName,
         uint32_t*                             pPropertyCount,
         VkExtensionProperties*                pProperties)
@@ -257,7 +257,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
         uint32_t*                             pPropertyCount,
         VkLayerProperties*                    pProperties)
 {
@@ -265,7 +265,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
     VkInstance                                instance_,
     uint32_t*                                 pPhysicalDeviceCount,
     VkPhysicalDevice*                         pPhysicalDevices)
@@ -318,7 +318,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT(
     VkInstance                                instance,
     const VkDebugReportCallbackCreateInfoEXT  *pCreateInfo,
     const VkAllocationCallbacks*              pAllocator,
@@ -329,7 +329,7 @@
     return icd_instance_create_logger(inst->icd, pCreateInfo, pAllocator, pCallback);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT(
+VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT(
     VkInstance                                instance,
     VkDebugReportCallbackEXT                  callback,
     const VkAllocationCallbacks               *pAllocator)
@@ -339,7 +339,7 @@
     icd_instance_destroy_logger(inst->icd, callback, pAllocator);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT(
+VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT(
     VkInstance                                instance,
     VkDebugReportFlagsEXT                     flags,
     VkDebugReportObjectTypeEXT                objType,
diff --git a/icd/intel/mem.c b/icd/intel/mem.c
index fc55669..28eba3d 100644
--- a/icd/intel/mem.c
+++ b/icd/intel/mem.c
@@ -64,7 +64,7 @@
     intel_base_destroy(&mem->base);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
+VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
     VkDevice                                device,
     const VkMemoryAllocateInfo*                pAllocateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -75,7 +75,7 @@
     return intel_mem_alloc(dev, pAllocateInfo, (struct intel_mem **) pMemory);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkFreeMemory(
+VKAPI_ATTR void VKAPI_CALL vkFreeMemory(
     VkDevice                                  device,
     VkDeviceMemory                            mem_,
     const VkAllocationCallbacks*                     pAllocator)
@@ -85,7 +85,7 @@
     intel_mem_free(mem);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
+VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
     VkDevice                                  device,
     VkDeviceMemory                            mem_,
     VkDeviceSize                              offset,
@@ -101,7 +101,7 @@
     return (ptr) ? VK_SUCCESS : VK_ERROR_MEMORY_MAP_FAILED;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
+VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
     VkDevice                                    device,
     VkDeviceMemory                              mem_)
 {
@@ -110,7 +110,7 @@
     intel_mem_unmap(mem);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
+VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
     VkDevice                                  device,
     uint32_t                                  memoryRangeCount,
     const VkMappedMemoryRange*                pMemoryRanges)
@@ -118,7 +118,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
+VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
     VkDevice                                  device,
     uint32_t                                  memoryRangeCount,
     const VkMappedMemoryRange*                pMemoryRanges)
@@ -126,7 +126,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
+VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
     VkDevice                                  device,
     VkDeviceMemory                            memory,
     VkDeviceSize*                             pCommittedMemoryInBytes)
diff --git a/icd/intel/obj.c b/icd/intel/obj.c
index 5b42991..d9238a7 100644
--- a/icd/intel/obj.c
+++ b/icd/intel/obj.c
@@ -309,7 +309,7 @@
     intel_free(base, base);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
+VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
     VkDevice                                    device,
     VkBuffer                                    buffer,
     VkMemoryRequirements*                       pRequirements)
@@ -319,7 +319,7 @@
     base->get_memory_requirements(base, pRequirements);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
+VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
     VkDevice                                    device,
     VkImage                                     image,
     VkMemoryRequirements*                       pRequirements)
@@ -329,7 +329,7 @@
     base->get_memory_requirements(base, pRequirements);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
+VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
     VkDevice                                    device,
     VkBuffer                                    buffer,
     VkDeviceMemory                              mem_,
@@ -343,7 +343,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
+VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
     VkDevice                                    device,
     VkImage                                     image,
     VkDeviceMemory                              mem_,
@@ -357,7 +357,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(
+VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(
     VkQueue                                     queue,
     uint32_t                                    bindInfoCount,
     const VkBindSparseInfo*                     pBindInfo,
diff --git a/icd/intel/pipeline.c b/icd/intel/pipeline.c
index 0fea17e..30e536c 100644
--- a/icd/intel/pipeline.c
+++ b/icd/intel/pipeline.c
@@ -1371,7 +1371,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
     VkDevice                                    device,
     const VkPipelineCacheCreateInfo*            pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1383,14 +1383,14 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(
+VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(
     VkDevice                                    device,
     VkPipelineCache                             pipelineCache,
     const VkAllocationCallbacks*                     pAllocator)
 {
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData(
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData(
     VkDevice                                    device,
     VkPipelineCache                             pipelineCache,
     size_t*                                     pDataSize,
@@ -1399,7 +1399,7 @@
     return VK_ERROR_VALIDATION_FAILED_EXT;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(
+VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(
     VkDevice                                    device,
     VkPipelineCache                             dstCache,
     uint32_t                                    srcCacheCount,
@@ -1408,7 +1408,7 @@
     return VK_ERROR_VALIDATION_FAILED_EXT;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
     VkDevice                                  device,
     VkPipelineCache                           pipelineCache,
     uint32_t                                  createInfoCount,
@@ -1437,7 +1437,7 @@
         return res;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
     VkDevice                                  device,
     VkPipelineCache                           pipelineCache,
     uint32_t                                  createInfoCount,
@@ -1448,7 +1448,7 @@
     return VK_ERROR_VALIDATION_FAILED_EXT;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
+VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
     VkDevice                                device,
     VkPipeline                              pipeline,
     const VkAllocationCallbacks*                     pAllocator)
diff --git a/icd/intel/query.c b/icd/intel/query.c
index daae52a..7698193 100644
--- a/icd/intel/query.c
+++ b/icd/intel/query.c
@@ -216,7 +216,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
     VkDevice                                    device,
     const VkQueryPoolCreateInfo*                pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -228,7 +228,7 @@
             (struct intel_query **) pQueryPool);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool(
+VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool(
     VkDevice                                    device,
     VkQueryPool                                 queryPool,
     const VkAllocationCallbacks*                     pAllocator)
@@ -239,7 +239,7 @@
     obj->destroy(obj);
  }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
+VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
     VkDevice                                    device,
     VkQueryPool                                 queryPool,
     uint32_t                                    firstQuery,
diff --git a/icd/intel/queue.c b/icd/intel/queue.c
index c2cf45a..03a313f 100644
--- a/icd/intel/queue.c
+++ b/icd/intel/queue.c
@@ -362,7 +362,7 @@
     semaphore->references++;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
+VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
     VkQueue                                   queue_)
 {
     struct intel_queue *queue = intel_queue(queue_);
@@ -370,7 +370,7 @@
     return intel_queue_wait(queue, -1);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
+VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
     VkQueue                                   queue_,
     uint32_t                                  submitCount,
     const VkSubmitInfo*                       pSubmits,
@@ -437,7 +437,7 @@
     return ret;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
     VkDevice                                device,
     const VkSemaphoreCreateInfo            *pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -459,7 +459,7 @@
            (struct intel_semaphore **) pSemaphore);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
+VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
     VkDevice                                    device,
     VkSemaphore                                 semaphore,
     const VkAllocationCallbacks*                     pAllocator)
diff --git a/icd/intel/sampler.c b/icd/intel/sampler.c
index ac24abf..f952612 100644
--- a/icd/intel/sampler.c
+++ b/icd/intel/sampler.c
@@ -399,7 +399,7 @@
     intel_base_destroy(&sampler->obj.base);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
     VkDevice                                  device,
     const VkSamplerCreateInfo*              pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -411,7 +411,7 @@
             (struct intel_sampler **) pSampler);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroySampler(
+VKAPI_ATTR void VKAPI_CALL vkDestroySampler(
     VkDevice                                device,
     VkSampler                                 sampler,
     const VkAllocationCallbacks*                     pAllocator)
diff --git a/icd/intel/shader.c b/icd/intel/shader.c
index 9910802..6159a43 100644
--- a/icd/intel/shader.c
+++ b/icd/intel/shader.c
@@ -115,7 +115,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule(
     VkDevice                                    device,
     const VkShaderModuleCreateInfo*             pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -126,7 +126,7 @@
     return shader_module_create(dev, pCreateInfo, (struct intel_shader_module **) pShaderModule);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(
+VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(
     VkDevice                                device,
     VkShaderModule                          shaderModule,
     const VkAllocationCallbacks*                     pAllocator)
diff --git a/icd/intel/state.c b/icd/intel/state.c
index bf9b8f6..2e52a59 100644
--- a/icd/intel/state.c
+++ b/icd/intel/state.c
@@ -149,7 +149,7 @@
     }
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(
+VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(
     VkCommandBuffer                         commandBuffer,
     uint32_t                                firstViewport,
     uint32_t                                viewportCount,
@@ -164,7 +164,7 @@
     intel_set_viewport(cmd, firstViewport, viewportCount, pViewports);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(
+VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(
     VkCommandBuffer                         commandBuffer,
     uint32_t                                firstScissor,
     uint32_t                                scissorCount,
@@ -179,7 +179,7 @@
     intel_set_scissor(cmd, firstScissor, scissorCount, pScissors);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(
+VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(
     VkCommandBuffer                              commandBuffer,
     float                                    line_width)
 {
@@ -192,7 +192,7 @@
     cmd->bind.state.line_width.line_width = line_width;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(
+VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(
     VkCommandBuffer                         commandBuffer,
     float                               depthBiasConstantFactor,
     float                               depthBiasClamp,
@@ -207,7 +207,7 @@
     intel_set_depth_bias(cmd, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(
+VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(
     VkCommandBuffer                         commandBuffer,
     const float                         blendConstants[4])
 {
@@ -220,7 +220,7 @@
     intel_set_blend_constants(cmd, blendConstants);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(
+VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(
     VkCommandBuffer                         commandBuffer,
     float                               minDepthBounds,
     float                               maxDepthBounds)
@@ -234,7 +234,7 @@
     intel_set_depth_bounds(cmd, minDepthBounds, maxDepthBounds);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(
+VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(
     VkCommandBuffer                         commandBuffer,
     VkStencilFaceFlags                  faceMask,
     uint32_t                            compareMask)
@@ -248,7 +248,7 @@
     intel_set_stencil_compare_mask(cmd, faceMask, compareMask);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(
+VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(
     VkCommandBuffer                         commandBuffer,
     VkStencilFaceFlags                  faceMask,
     uint32_t                            writeMask)
@@ -262,7 +262,7 @@
     intel_set_stencil_write_mask(cmd, faceMask, writeMask);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(
+VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(
     VkCommandBuffer                         commandBuffer,
     VkStencilFaceFlags                  faceMask,
     uint32_t                            reference)
diff --git a/icd/intel/view.c b/icd/intel/view.c
index 4a1b112..8f7ea5b 100644
--- a/icd/intel/view.c
+++ b/icd/intel/view.c
@@ -1353,7 +1353,7 @@
     }
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
     VkDevice                            device,
     const VkBufferViewCreateInfo*       pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1365,7 +1365,7 @@
             (struct intel_buf_view **) pView);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
+VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
     VkDevice                            device,
     VkBufferView                        bufferView,
     const VkAllocationCallbacks*                     pAllocator)
@@ -1376,7 +1376,7 @@
     obj->destroy(obj);
  }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
     VkDevice                            device,
     const VkImageViewCreateInfo*        pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1388,7 +1388,7 @@
             (struct intel_img_view **) pView);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
+VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
     VkDevice                            device,
     VkImageView                         imageView,
     const VkAllocationCallbacks*                     pAllocator)
diff --git a/icd/intel/wsi_x11.c b/icd/intel/wsi_x11.c
index b24e3e6..81bff98 100644
--- a/icd/intel/wsi_x11.c
+++ b/icd/intel/wsi_x11.c
@@ -1039,7 +1039,7 @@
 // directly, without the common Vulkan loader:
 //
 // Create a VkSurfaceKHR object for XCB window connections:
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(
     VkInstance                              instance,
     const VkXcbSurfaceCreateInfoKHR*        pCreateInfo,
     const VkAllocationCallbacks*            pAllocator,
@@ -1050,7 +1050,7 @@
                               (VkIcdSurfaceXcb **) pSurface);
 }
 
-ICD_EXPORT VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR(
+VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR(
     VkPhysicalDevice                            physicalDevice,
     uint32_t                                    queueFamilyIndex,
     xcb_connection_t*                           connection,
@@ -1069,7 +1069,7 @@
 // directly, without the common Vulkan loader:
 //
 // Create a VkSurfaceKHR object for XLIB window connections:
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(
     VkInstance                              instance,
     const VkXlibSurfaceCreateInfoKHR*       pCreateInfo,
     const VkAllocationCallbacks*            pAllocator,
@@ -1080,7 +1080,7 @@
                               (VkIcdSurfaceXlib **) pSurface);
 }
 
-ICD_EXPORT VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR(
+VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR(
     VkPhysicalDevice                            physicalDevice,
     uint32_t                                    queueFamilyIndex,
     Display*                                    dpy,
@@ -1095,7 +1095,7 @@
 }
 #endif // VK_USE_PLATFORM_XLIB_KHR
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
+VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
     VkInstance                               instance,
     VkSurfaceKHR                             surface,
     const VkAllocationCallbacks*             pAllocator)
@@ -1103,7 +1103,7 @@
     x11_surface_destroy(surface);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
     VkPhysicalDevice                        physicalDevice,
     uint32_t                                queueFamilyIndex,
     VkSurfaceKHR                            surface,
@@ -1182,7 +1182,7 @@
     return ret;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
     VkDevice                                device,
     const VkSwapchainCreateInfoKHR*         pCreateInfo,
     const VkAllocationCallbacks*            pAllocator,
@@ -1204,7 +1204,7 @@
             (struct intel_x11_swap_chain **) pSwapchain);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR(
+VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR(
     VkDevice                                 device,
     VkSwapchainKHR                           swapchain,
     const VkAllocationCallbacks*             pAllocator)
@@ -1217,7 +1217,7 @@
     x11_swap_chain_destroy_end(sc);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
+VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
     VkDevice                                 device,
     VkSwapchainKHR                           swapchain,
     uint32_t*                                pCount,
@@ -1245,7 +1245,7 @@
     return ret;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
+VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
     VkDevice                                 device,
     VkSwapchainKHR                           swapchain,
     uint64_t                                 timeout,
@@ -1290,7 +1290,7 @@
 }
 
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
+VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
     VkQueue                                  queue_,
     const VkPresentInfoKHR*                  pPresentInfo)
 {
diff --git a/icd/nulldrv/nulldrv.c b/icd/nulldrv/nulldrv.c
index dffc74f..0971aa9 100644
--- a/icd/nulldrv/nulldrv.c
+++ b/icd/nulldrv/nulldrv.c
@@ -599,7 +599,7 @@
 // Driver entry points
 //*********************************************
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
     VkDevice                                  device,
     const VkBufferCreateInfo*               pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -611,7 +611,7 @@
     return nulldrv_buf_create(dev, pCreateInfo, (struct nulldrv_buf **) pBuffer);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
+VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
     VkDevice                                  device,
     VkBuffer                                  buffer,
     const VkAllocationCallbacks*                     pAllocator)
@@ -619,7 +619,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
     VkDevice                                    device,
     const VkCommandPoolCreateInfo*                  pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -631,7 +631,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool(
+VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool(
     VkDevice                                    device,
     VkCommandPool                                   commandPool,
     const VkAllocationCallbacks*                     pAllocator)
@@ -639,7 +639,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
+VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
     VkDevice                                    device,
     VkCommandPool                                   commandPool,
     VkCommandPoolResetFlags                         flags)
@@ -648,7 +648,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
+VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
     VkDevice                                  device,
     const VkCommandBufferAllocateInfo*               pAllocateInfo,
     VkCommandBuffer*                              pCommandBuffers)
@@ -660,7 +660,7 @@
             (struct nulldrv_cmd **) pCommandBuffers);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
+VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
     VkDevice                                  device,
     VkCommandPool                                 commandPool,
     uint32_t                                  commandBufferCount,
@@ -672,7 +672,7 @@
     }
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
+VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
     VkCommandBuffer                              commandBuffer,
     const VkCommandBufferBeginInfo            *info)
 {
@@ -680,14 +680,14 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
+VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
     VkCommandBuffer                              commandBuffer)
 {
     NULLDRV_LOG_FUNC;
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
+VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
     VkCommandBuffer                              commandBuffer,
     VkCommandBufferResetFlags flags)
 {
@@ -699,7 +699,7 @@
     VK_FORMAT_B8G8R8A8_UNORM,
 };
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
+VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
     VkInstance                                   instance,
     VkSurfaceKHR                                 surface,
     const VkAllocationCallbacks*                pAllocator)
@@ -707,7 +707,7 @@
    NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
     VkPhysicalDevice                        physicalDevice,
     uint32_t                                queueFamilyIndex,
     VkSurfaceKHR                            surface,
@@ -750,7 +750,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
     VkDevice                                device,
     const VkSwapchainCreateInfoKHR*         pCreateInfo,
     const VkAllocationCallbacks*            pAllocator,
@@ -772,7 +772,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR(
+VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR(
     VkDevice                                device,
     VkSwapchainKHR                          swapchain,
     const VkAllocationCallbacks*            pAllocator)
@@ -783,7 +783,7 @@
     free(sc);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
+VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
     VkDevice                                 device,
     VkSwapchainKHR                           swapchain,
     uint32_t*                                pSwapchainImageCount,
@@ -812,7 +812,7 @@
     return ret;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
+VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
     VkDevice                                 device,
     VkSwapchainKHR                           swapchain,
     uint64_t                                 timeout,
@@ -825,7 +825,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
+VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
     VkQueue                                  queue_,
     const VkPresentInfoKHR*                  pPresentInfo)
 {
@@ -834,7 +834,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
     VkCommandBuffer                              commandBuffer,
     VkBuffer                                  srcBuffer,
     VkBuffer                                  dstBuffer,
@@ -844,7 +844,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
     VkCommandBuffer                              commandBuffer,
     VkImage                                   srcImage,
     VkImageLayout                            srcImageLayout,
@@ -856,7 +856,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
+VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
     VkCommandBuffer                              commandBuffer,
     VkImage                                  srcImage,
     VkImageLayout                            srcImageLayout,
@@ -869,7 +869,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
     VkCommandBuffer                              commandBuffer,
     VkBuffer                                  srcBuffer,
     VkImage                                   dstImage,
@@ -880,7 +880,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
     VkCommandBuffer                              commandBuffer,
     VkImage                                   srcImage,
     VkImageLayout                            srcImageLayout,
@@ -891,7 +891,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
+VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
     VkCommandBuffer                              commandBuffer,
     VkBuffer                                  dstBuffer,
     VkDeviceSize                                dstOffset,
@@ -901,7 +901,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
+VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
     VkCommandBuffer                              commandBuffer,
     VkBuffer                                  dstBuffer,
     VkDeviceSize                                dstOffset,
@@ -911,7 +911,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
+VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
     VkCommandBuffer                                 commandBuffer,
     VkImage                                     image,
     VkImageLayout                               imageLayout,
@@ -922,7 +922,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(
+VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(
     VkCommandBuffer                                 commandBuffer,
     uint32_t                                    attachmentCount,
     const VkClearAttachment*                    pAttachments,
@@ -932,7 +932,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
+VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
     VkCommandBuffer                         commandBuffer,
     VkImage                             image,
     VkImageLayout                       imageLayout,
@@ -943,7 +943,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencil(
+VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencil(
     VkCommandBuffer                              commandBuffer,
     VkImage                                   image,
     VkImageLayout                            imageLayout,
@@ -955,7 +955,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
+VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
     VkCommandBuffer                              commandBuffer,
     VkImage                                   srcImage,
     VkImageLayout                            srcImageLayout,
@@ -967,7 +967,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
+VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
     VkCommandBuffer                              commandBuffer,
     VkQueryPool                              queryPool,
     uint32_t                                    slot,
@@ -976,7 +976,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
+VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
     VkCommandBuffer                              commandBuffer,
     VkQueryPool                              queryPool,
     uint32_t                                    slot)
@@ -984,7 +984,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
+VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
     VkCommandBuffer                              commandBuffer,
     VkQueryPool                              queryPool,
     uint32_t                                    firstQuery,
@@ -993,7 +993,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
+VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
     VkCommandBuffer                              commandBuffer,
     VkEvent                                  event_,
     VkPipelineStageFlags                     stageMask)
@@ -1001,7 +1001,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
+VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
     VkCommandBuffer                              commandBuffer,
     VkEvent                                  event_,
     VkPipelineStageFlags                     stageMask)
@@ -1009,7 +1009,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
+VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
     VkCommandBuffer                                 commandBuffer,
     VkQueryPool                                 queryPool,
     uint32_t                                    firstQuery,
@@ -1022,7 +1022,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
+VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
     VkCommandBuffer                              commandBuffer,
     VkPipelineStageFlagBits                     pipelineStage,
     VkQueryPool                                 queryPool,
@@ -1031,7 +1031,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
+VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
     VkCommandBuffer                              commandBuffer,
     VkPipelineBindPoint                      pipelineBindPoint,
     VkPipeline                               pipeline)
@@ -1039,52 +1039,52 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports)
+VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports)
 {
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors)
+VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors)
 {
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(VkCommandBuffer commandBuffer, float lineWidth)
+VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(VkCommandBuffer commandBuffer, float lineWidth)
 {
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor)
+VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor)
 {
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(VkCommandBuffer commandBuffer, const float blendConstants[4])
+VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(VkCommandBuffer commandBuffer, const float blendConstants[4])
 {
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds)
+VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds)
 {
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask)
+VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask)
 {
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask)
+VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask)
 {
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference)
+VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference)
 {
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
+VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
     VkCommandBuffer                              commandBuffer,
     VkPipelineBindPoint                     pipelineBindPoint,
     VkPipelineLayout                        layout,
@@ -1097,7 +1097,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
+VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
     VkCommandBuffer                                 commandBuffer,
     uint32_t                                        firstBinding,
     uint32_t                                        bindingCount,
@@ -1107,7 +1107,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
+VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
     VkCommandBuffer                              commandBuffer,
     VkBuffer                                  buffer,
     VkDeviceSize                                offset,
@@ -1116,7 +1116,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDraw(
+VKAPI_ATTR void VKAPI_CALL vkCmdDraw(
     VkCommandBuffer                                 commandBuffer,
     uint32_t                                    vertexCount,
     uint32_t                                    instanceCount,
@@ -1126,7 +1126,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
     VkCommandBuffer                              commandBuffer,
     uint32_t                                    indexCount,
     uint32_t                                    instanceCount,
@@ -1137,7 +1137,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
     VkCommandBuffer                              commandBuffer,
     VkBuffer                                  buffer,
     VkDeviceSize                                offset,
@@ -1147,7 +1147,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
     VkCommandBuffer                              commandBuffer,
     VkBuffer                                  buffer,
     VkDeviceSize                                offset,
@@ -1157,7 +1157,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
+VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
     VkCommandBuffer                              commandBuffer,
     uint32_t                                    x,
     uint32_t                                    y,
@@ -1166,7 +1166,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
+VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
     VkCommandBuffer                              commandBuffer,
     VkBuffer                                  buffer,
     VkDeviceSize                                offset)
@@ -1197,7 +1197,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
     VkPhysicalDevice                            gpu_,
     const VkDeviceCreateInfo*               pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1208,14 +1208,14 @@
     return nulldrv_dev_create(gpu, pCreateInfo, (struct nulldrv_dev**)pDevice);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
+VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
     VkDevice                                  device,
     const VkAllocationCallbacks*                     pAllocator)
 {
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
+VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
     VkDevice                                  device,
     uint32_t                                    queueNodeIndex,
     uint32_t                                    queueIndex,
@@ -1226,14 +1226,14 @@
     *pQueue = (VkQueue) dev->queues[0];
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
+VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
     VkDevice                                  device)
 {
     NULLDRV_LOG_FUNC;
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
     VkDevice                                  device,
     const VkEventCreateInfo*                pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1243,7 +1243,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
+VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
     VkDevice                                  device,
     VkEvent                                   event,
     const VkAllocationCallbacks*                     pAllocator)
@@ -1251,7 +1251,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
+VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
     VkDevice                                  device,
     VkEvent                                   event_)
 {
@@ -1259,7 +1259,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
+VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
     VkDevice                                  device,
     VkEvent                                   event_)
 {
@@ -1267,7 +1267,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
+VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
     VkDevice                                  device,
     VkEvent                                   event_)
 {
@@ -1275,7 +1275,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
     VkDevice                                  device,
     const VkFenceCreateInfo*                pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1288,7 +1288,7 @@
             (struct nulldrv_fence **) pFence);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyFence(
+VKAPI_ATTR void VKAPI_CALL vkDestroyFence(
     VkDevice                                  device,
     VkFence                                  fence,
     const VkAllocationCallbacks*                     pAllocator)
@@ -1296,7 +1296,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
+VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
     VkDevice                                  device,
     VkFence                                   fence_)
 {
@@ -1304,7 +1304,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
+VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
     VkDevice                    device,
     uint32_t                    fenceCount,
     const VkFence*              pFences)
@@ -1313,7 +1313,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
+VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
     VkDevice                                  device,
     uint32_t                                    fenceCount,
     const VkFence*                            pFences,
@@ -1324,7 +1324,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
     VkPhysicalDevice                             gpu_,
     VkPhysicalDeviceProperties*                  pProperties)
 {
@@ -1342,7 +1342,7 @@
     memset(&pProperties->sparseProperties, 0, sizeof(VkPhysicalDeviceSparseProperties));
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
     VkPhysicalDevice                          physicalDevice,
     VkPhysicalDeviceFeatures*                 pFeatures)
 {
@@ -1352,7 +1352,7 @@
     memset(pFeatures, 0, sizeof(*pFeatures));
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
     VkPhysicalDevice                          physicalDevice,
     VkFormat                                  format,
     VkFormatProperties*                       pFormatInfo)
@@ -1364,7 +1364,7 @@
     pFormatInfo->bufferFeatures = 0;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
     VkPhysicalDevice                             gpu_,
     uint32_t*                                    pQueueFamilyPropertyCount,
     VkQueueFamilyProperties*                     pProperties)
@@ -1378,14 +1378,14 @@
     pProperties->timestampValidBits = 0;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
     VkPhysicalDevice gpu_,
     VkPhysicalDeviceMemoryProperties* pProperties)
 {
     // TODO: Fill in with real data
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
         VkPhysicalDevice                            physicalDevice,
         uint32_t*                                   pPropertyCount,
         VkLayerProperties*                          pProperties)
@@ -1394,7 +1394,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
     const char*                                 pLayerName,
     uint32_t*                                   pPropertyCount,
     VkExtensionProperties*                      pProperties)
@@ -1414,7 +1414,7 @@
     }
     return VK_SUCCESS;
 }
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
         uint32_t*                                   pPropertyCount,
         VkLayerProperties*                          pProperties)
 {
@@ -1446,7 +1446,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
     VkDevice                                  device,
     const VkImageCreateInfo*                pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1459,7 +1459,7 @@
             (struct nulldrv_img **) pImage);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyImage(
+VKAPI_ATTR void VKAPI_CALL vkDestroyImage(
     VkDevice                                  device,
     VkImage                                   image,
     const VkAllocationCallbacks*                     pAllocator)
@@ -1467,7 +1467,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
+VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
     VkDevice                                    device,
     VkImage                                     image,
     const VkImageSubresource*                   pSubresource,
@@ -1482,7 +1482,7 @@
     pLayout->arrayPitch = 4;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
+VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
     VkDevice                                  device,
     const VkMemoryAllocateInfo*                pAllocateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1494,7 +1494,7 @@
     return nulldrv_mem_alloc(dev, pAllocateInfo, (struct nulldrv_mem **) pMemory);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkFreeMemory(
+VKAPI_ATTR void VKAPI_CALL vkFreeMemory(
     VkDevice                                    device,
     VkDeviceMemory                              mem_,
     const VkAllocationCallbacks*                     pAllocator)
@@ -1502,7 +1502,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
+VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
     VkDevice                                    device,
     VkDeviceMemory                              mem_,
     VkDeviceSize                                offset,
@@ -1519,14 +1519,14 @@
     return (ptr) ? VK_SUCCESS : VK_ERROR_MEMORY_MAP_FAILED;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
+VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
     VkDevice                                    device,
     VkDeviceMemory                              mem_)
 {
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
+VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
     VkDevice                                  device,
     uint32_t                                  memoryRangeCount,
     const VkMappedMemoryRange*                pMemoryRanges)
@@ -1535,7 +1535,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
+VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
     VkDevice                                  device,
     uint32_t                                  memoryRangeCount,
     const VkMappedMemoryRange*                pMemoryRanges)
@@ -1544,14 +1544,14 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
+VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
     VkDevice                                  device,
     VkDeviceMemory                            memory,
     VkDeviceSize*                             pCommittedMemoryInBytes)
 {
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
     const VkInstanceCreateInfo*             pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
     VkInstance*                               pInstance)
@@ -1571,14 +1571,14 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
+VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
     VkInstance                                pInstance,
     const VkAllocationCallbacks*                     pAllocator)
 {
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
     VkInstance                                instance,
     uint32_t*                                   pGpuCount,
     VkPhysicalDevice*                           pGpus)
@@ -1593,7 +1593,7 @@
     return ret;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateLayers(
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateLayers(
     VkPhysicalDevice                            gpu,
     size_t                                      maxStringSize,
     size_t*                                     pLayerCount,
@@ -1604,7 +1604,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
+VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
     VkDevice                                    device,
     VkBuffer                                    buffer,
     VkMemoryRequirements*                       pMemoryRequirements)
@@ -1615,7 +1615,7 @@
     base->get_memory_requirements(base, pMemoryRequirements);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
+VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
     VkDevice                                    device,
     VkImage                                     image,
     VkMemoryRequirements*                       pMemoryRequirements)
@@ -1626,7 +1626,7 @@
     base->get_memory_requirements(base, pMemoryRequirements);
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
+VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
     VkDevice                                    device,
     VkBuffer                                    buffer,
     VkDeviceMemory                              mem_,
@@ -1636,7 +1636,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
+VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
     VkDevice                                    device,
     VkImage                                     image,
     VkDeviceMemory                              mem_,
@@ -1646,7 +1646,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(
+VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(
     VkDevice                                    device,
     VkImage                                     image,
     uint32_t*                                   pSparseMemoryRequirementCount,
@@ -1655,7 +1655,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(
     VkPhysicalDevice                            physicalDevice,
     VkFormat                                    format,
     VkImageType                                 type,
@@ -1668,7 +1668,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(
+VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(
     VkQueue                                     queue,
     uint32_t                                    bindInfoCount,
     const VkBindSparseInfo*                     pBindInfo,
@@ -1678,7 +1678,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
     VkDevice                                    device,
     const VkPipelineCacheCreateInfo*            pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1689,7 +1689,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
+VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
     VkDevice                                  device,
     VkPipeline                                pipeline,
     const VkAllocationCallbacks*                     pAllocator)
@@ -1705,7 +1705,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData(
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData(
     VkDevice                                    device,
     VkPipelineCache                             pipelineCache,
     size_t*                                     pDataSize,
@@ -1715,7 +1715,7 @@
     return VK_ERROR_INITIALIZATION_FAILED;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(
+VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(
     VkDevice                                    device,
     VkPipelineCache                             dstCache,
     uint32_t                                    srcCacheCount,
@@ -1724,7 +1724,7 @@
     NULLDRV_LOG_FUNC;
     return VK_ERROR_INITIALIZATION_FAILED;
 }
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
     VkDevice                                  device,
     VkPipelineCache                           pipelineCache,
     uint32_t                                  createInfoCount,
@@ -1741,7 +1741,7 @@
 
 
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
     VkDevice                                  device,
     VkPipelineCache                           pipelineCache,
     uint32_t                                  createInfoCount,
@@ -1757,7 +1757,7 @@
 
 
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
     VkDevice                                  device,
     const VkQueryPoolCreateInfo*           pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1767,7 +1767,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool(
+VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool(
     VkDevice                                  device,
     VkQueryPool                               queryPoool,
     const VkAllocationCallbacks*                     pAllocator)
@@ -1775,7 +1775,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
+VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
     VkDevice                                    device,
     VkQueryPool                                 queryPool,
     uint32_t                                    firstQuery,
@@ -1789,14 +1789,14 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
+VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
     VkQueue                                   queue_)
 {
     NULLDRV_LOG_FUNC;
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
+VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
     VkQueue                                   queue_,
     uint32_t                                  submitCount,
     const VkSubmitInfo*                       pSubmits,
@@ -1806,7 +1806,7 @@
    return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
     VkDevice                                  device,
     const VkSemaphoreCreateInfo*            pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1816,7 +1816,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
+VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
     VkDevice                                  device,
     VkSemaphore                               semaphore,
     const VkAllocationCallbacks*                     pAllocator)
@@ -1824,7 +1824,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
     VkDevice                                  device,
     const VkSamplerCreateInfo*              pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1837,7 +1837,7 @@
             (struct nulldrv_sampler **) pSampler);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroySampler(
+VKAPI_ATTR void VKAPI_CALL vkDestroySampler(
     VkDevice                                  device,
     VkSampler                                 sampler,
     const VkAllocationCallbacks*                     pAllocator)
@@ -1845,7 +1845,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule(
     VkDevice                                    device,
     const VkShaderModuleCreateInfo*             pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1856,7 +1856,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(
+VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(
     VkDevice                                    device,
     VkShaderModule                              shaderModule,
     const VkAllocationCallbacks*                     pAllocator)
@@ -1865,7 +1865,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
     VkDevice                                  device,
     const VkBufferViewCreateInfo*          pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1878,7 +1878,7 @@
             (struct nulldrv_buf_view **) pView);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
+VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
     VkDevice                                  device,
     VkBufferView                              bufferView,
     const VkAllocationCallbacks*                     pAllocator)
@@ -1886,7 +1886,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
     VkDevice                                  device,
     const VkImageViewCreateInfo*           pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1899,7 +1899,7 @@
             (struct nulldrv_img_view **) pView);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
+VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
     VkDevice                                  device,
     VkImageView                               imageView,
     const VkAllocationCallbacks*                     pAllocator)
@@ -1907,7 +1907,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
     VkDevice                                   device,
     const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1920,7 +1920,7 @@
             (struct nulldrv_desc_layout **) pSetLayout);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
+VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
     VkDevice                                  device,
     VkDescriptorSetLayout                     descriptorSetLayout,
     const VkAllocationCallbacks*                     pAllocator)
@@ -1928,7 +1928,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL  vkCreatePipelineLayout(
+VKAPI_ATTR VkResult VKAPI_CALL  vkCreatePipelineLayout(
     VkDevice                                device,
     const VkPipelineLayoutCreateInfo*       pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1942,7 +1942,7 @@
             (struct nulldrv_pipeline_layout **) pPipelineLayout);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
+VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
     VkDevice                                  device,
     VkPipelineLayout                          pipelineLayout,
     const VkAllocationCallbacks*                     pAllocator)
@@ -1950,7 +1950,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
     VkDevice                                    device,
     const VkDescriptorPoolCreateInfo*           pCreateInfo,
     const VkAllocationCallbacks*                     pAllocator,
@@ -1963,7 +1963,7 @@
             (struct nulldrv_desc_pool **) pDescriptorPool);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool(
+VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool(
     VkDevice                                  device,
     VkDescriptorPool                          descriptorPool,
     const VkAllocationCallbacks*                     pAllocator)
@@ -1971,7 +1971,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
+VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
     VkDevice                                device,
     VkDescriptorPool                        descriptorPool,
     VkDescriptorPoolResetFlags              flags)
@@ -1980,7 +1980,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
+VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
     VkDevice                                device,
     const VkDescriptorSetAllocateInfo*         pAllocateInfo,
     VkDescriptorSet*                        pDescriptorSets)
@@ -2004,7 +2004,7 @@
     return ret;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
+VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
     VkDevice                                    device,
     VkDescriptorPool                            descriptorPool,
     uint32_t                                    descriptorSetCount,
@@ -2014,7 +2014,7 @@
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
+VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
     VkDevice                                    device,
     uint32_t                                    descriptorWriteCount,
     const VkWriteDescriptorSet*                 pDescriptorWrites,
@@ -2024,7 +2024,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
     VkDevice                                  device,
     const VkFramebufferCreateInfo*          info,
     const VkAllocationCallbacks*                     pAllocator,
@@ -2036,7 +2036,7 @@
     return nulldrv_fb_create(dev, info, (struct nulldrv_framebuffer **) fb_ret);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
+VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
     VkDevice                                  device,
     VkFramebuffer                             framebuffer,
     const VkAllocationCallbacks*                     pAllocator)
@@ -2044,7 +2044,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
     VkDevice                                  device,
     const VkRenderPassCreateInfo*          info,
     const VkAllocationCallbacks*                     pAllocator,
@@ -2056,7 +2056,7 @@
     return nulldrv_render_pass_create(dev, info, (struct nulldrv_render_pass **) rp_ret);
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
+VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
     VkDevice                                  device,
     VkRenderPass                              renderPass,
     const VkAllocationCallbacks*                     pAllocator)
@@ -2064,7 +2064,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(
+VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(
     VkCommandBuffer                                 commandBuffer,
     VkPipelineLayout                            layout,
     VkShaderStageFlags                          stageFlags,
@@ -2075,7 +2075,7 @@
     /* TODO: Implement */
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity(
+VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity(
     VkDevice                                    device,
     VkRenderPass                                renderPass,
     VkExtent2D*                                 pGranularity)
@@ -2084,7 +2084,7 @@
     pGranularity->width = 1;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
+VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
     VkCommandBuffer                                 commandBuffer,
     const VkRenderPassBeginInfo*                pRenderPassBegin,
     VkSubpassContents                        contents)
@@ -2092,20 +2092,20 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
+VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
     VkCommandBuffer                                 commandBuffer,
     VkSubpassContents                        contents)
 {
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
+VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
     VkCommandBuffer                              commandBuffer)
 {
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
+VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
     VkCommandBuffer                                 commandBuffer,
     uint32_t                                    commandBuffersCount,
     const VkCommandBuffer*                          pCommandBuffers)
@@ -2113,7 +2113,7 @@
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT void* xcbCreateWindow(
+void* xcbCreateWindow(
     uint16_t         width,
     uint16_t         height)
 {
@@ -2123,23 +2123,23 @@
 }
 
 // May not be needed, if we stub out stuf in tri.c
-ICD_EXPORT void xcbDestroyWindow()
+void xcbDestroyWindow()
 {
     NULLDRV_LOG_FUNC;
 }
 
-ICD_EXPORT int xcbGetMessage(void *msg)
+int xcbGetMessage(void *msg)
 {
     NULLDRV_LOG_FUNC;
     return 0;
 }
 
-ICD_EXPORT VkResult xcbQueuePresent(void *queue, void *image, void* fence)
+VkResult xcbQueuePresent(void *queue, void *image, void* fence)
 {
     return VK_SUCCESS;
 }
 
-ICD_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
     VkPhysicalDevice                            physicalDevice,
     VkFormat                                    format,
     VkImageType                                 type,
diff --git a/vk-generate.py b/vk-generate.py
index 0a98602..bed5664 100755
--- a/vk-generate.py
+++ b/vk-generate.py
@@ -170,7 +170,7 @@
             self.qual = "static"
         else:
             self.prefix = "vk"
-            self.qual = "ICD_EXPORT"
+            self.qual = ""
 
         super().run()
 
@@ -178,7 +178,10 @@
         return "#include \"icd.h\""
 
     def _generate_stub_decl(self, proto):
-        return proto.c_pretty_decl(self.prefix + proto.name, attr="VKAPI")
+        if proto.name == "GetInstanceProcAddr":
+            return proto.c_pretty_decl(self.prefix + "_icd" + proto.name, attr="ICD_EXPORT VKAPI")
+        else:
+            return proto.c_pretty_decl(self.prefix + proto.name, attr="VKAPI")
 
     def _generate_stubs(self):
         stubs = []
@@ -215,8 +218,12 @@
         for proto in self.protos:
             lookups.append("if (!strcmp(%s, \"%s\"))" %
                     (gpa_pname, proto.name))
-            lookups.append("    return (%s) %s%s;" %
+            if proto.name != "GetInstanceProcAddr":
+                lookups.append("    return (%s) %s%s;" %
                     (gpa_proto.ret, self.prefix, proto.name))
+            else:
+                lookups.append("    return (%s) %s%s;" %
+                    (gpa_proto.ret, self.prefix, "_icdGetInstanceProcAddr"))
 
         body = []
         body.append("%s %s" % (self.qual, gpa_instance_decl))
@@ -247,11 +254,7 @@
         library_exports = {
                 "all": [],
                 "icd": [
-                    "vkEnumeratePhysicalDevices",
-                    "vkCreateInstance",
-                    "vkDestroyInstance",
-                    "vkGetDeviceProcAddr",
-                    "vkGetInstanceProcAddr",
+                    "vk_icdGetInstanceProcAddr",
                 ],
                 "layer": [
                     "vkGetInstanceProcAddr",