# Vulkan SDK for Windows Release Notes

## Vulkan SDK 1.0.54 Release Notes

##### Version 1.0.54 for Windows

###### July 12, 2017

This SDK supports Vulkan API revision 1.0.54. The prior SDK supported Vulkan API revision 1.0.51.

Update to Compiled Binaries: Starting with this SDK, all binaries in the SDK and Runtime packages are now being generated using Visual Studio 2015 in order to allow building the Runtime with Control Flow Guard protection. This may cause some incompatibility if you continue to use Visual Studio 2013 in the following situations:

- Linking a project built with Visual Studio 2013 to the static Vulkan runtime library or shaderc included in the SDK, may no longer succeed.
- Attempting to debug an executable or library included with this SDK may not provide all debug information available.

If either of these usage scenarios is important to you, we suggest that you upgrade to using Visual Studio 2015, or newer.

Drivers: LunarG recommends that you update your Vulkan-capable hardware drivers to the latest recommended version from your hardware vendor. A list of Known Driver Issues appears at the end of this document with more information.

### Overview of new features in SDK 1.0.54

- Update loader and docs to Vulkan version 1.0.54

- Scores of bug fixes, validation coverage and accuracy improvements, and many feature additions

- Extensions introduced since the 1.0.51 SDK include several groups of functionality:

  - External fence extensions:
    - VK_KHR_external_fence
    - VK_KHR_external_fence_capabilities
    - VK_KHR_external_fence_fd
    - VK_KHR_external_fence_win32
  - External semaphore extensions:
    - VK_KHR_external_semaphore *
    - VK_KHR_external_semaphore_capabilities *
    - VK_KHR_external_semaphore_fd *
    - VK_KHR_external_semaphore_win32 *
  - External memory extensions:
    - VK_KHR_dedicated_allocation *
    - VK_KHR_external_memory *
    - VK_KHR_external_memory_capabilities *
    - VK_KHR_external_memory_fd *
    - VK_KHR_external_memory_win32 *
    - VK_KHR_get_memory_requirements2
    - VK_KHR_win32_keyed_mutex *
  - Storage buffer extensions:
    - VK_KHR_16bit_storage
    - VK_KHR_storage_buffer_storage_class
    - VK_KHR_variable_pointers
  - Additional vendor and cross-vendor extensions:
    - VK_EXT_blend_operation_advanced
    - VK_EXT_sampler_filter_minmax
    - VK_AMD_gpu_shader_int16
    - VK_NV_fill_rectangle
    - VK_NV_fragment_coverage_to_color
    - VK_NV_framebuffer_mixed_samples

- The above extensions that have an asterisk (*) after their name are extensions that were previously released as experimental Khronos extensions using the `VK_KHX_` prefix. The extensions have been renamed as follows:

Deprecated Experimental Extension Name | New Khronos Extension Name
--- | ---
VK_KHX_external_memory | VK_KHR_external_memory
VK_KHX_external_memory_capabilities | VK_KHR_external_memory_capabilities
VK_KHX_external_memory_fd | VK_KHR_external_memory_fd
VK_KHX_external_memory_win32 | VK_KHR_external_memory_win32
VK_KHX_external_semaphore | VK_KHR_external_semaphore
VK_KHX_external_semaphore_fd | VK_KHR_external_semaphore_fd
VK_KHX_external_semaphore_capabilities | VK_KHR_external_semaphore_capabilities
VK_KHX_external_semaphore_win32 | VK_KHR_external_semaphore_win32
VK_KHX_win32_keyed_mutex | VK_KHR_win32_keyed_mutex

#### Important Notes About Experimental Extensions

The `KHX` and `NVX` identifiers in the name indicate that the extension is experimental, and is being considered for future standardization. In the case of a `KHX` extension, this extension is being considered as either a `KHR` extension or core Vulkan API functionality. `NVX` extensions are being considered for either a final `NV` or a more general (`EXT`, `KHR`) extension.

As experimental extensions:

- Developers are encouraged to experiment with them and provide feedback, but should not use them as the basis for production applications.
- These experimental extensions are expected to be supported for a limited time only.
- They may change their interfaces and behavior in significant ways as a result of feedback
- They may be withdrawn or replaced with a different stable (`KHR`, `EXT`, ...) extension or core functionality at any time.
- Implementations of these extensions receive limited or no testing when submitted to the Khronos conformance process.
- Using experimental extensions with the validation layers may produce inaccurate validation results.

#### SDK Components

This version of the SDK components are based on the following specifications and source code repositories:

- Vulkan Specification including extensions

- Vulkan Loader and Validation

- SPIR-V Specification version 1.1

- Glslang library and tools

- SPIR-V headers

- SPIR-V tools

- Vulkan Tools

- Vulkan Samples

### Last Commits are designated by the following Git Tags in the respective repositories:

- LoaderAndValidationLayers: sdk-1.0.54.0
- VulkanTools: sdk-1.0.54.0
- VulkanSamples: sdk-1.0.54.0

### Fixed Issues

Fixed Vulkan-LoaderAndValidationLayers Github Issues:

- #1926 Some comments in C header files are not C-style
- #1922 CMake out of tree build has errors
- #1909 CMake generation code fails since commit 227aa78
- #1894 Cube built for XLIB gets seg fault at exit
- #1890 Building on ARM fails with latest code
- #1889 No warning if using VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE without enabling VK_KHR_sampler_mirror_clamp_to_edge
- #1878 tests: vkvalidatelayerdoc.sh hardcodes path to the layer directory
- #1869 DescriptorSets: Use shared_ptr for DescriptorSetLayout data instead of copies
- #1846 Bad memory behavior in ExceedMemoryAllocationCount
- #1827 Tests: fix general confusion about supported vs enabled extensions
- #1781 VkLayerTest.VALIDATION_ERROR_01412 fails on AMD
- #1683 Remove remaining husk of Swapchain layer
- #1682 Layer combinations causing some scene objects to not render
- #1600 SC layer: GS output to FS input not taken into account (refs VS instead)
- #1546 Complex types trip up interface mismatch
- #1376 Layers: vkCmdBlitImage does not appear to have image bound checking
- #372 Improve device limits checking to use a "device profile" to check against, instead of the actual device limits

Fixed LunarXchange Issues:

- #690 1.0.51 links to 49 release notes
- #695 Could NOT find Vulkan (missing: Vulkan_LIBRARY)
- #697 Vulkan Runtime Packaging on Windows NT 6.1+

Fixed VulkanTools Github issues:

- #261 Could not find Vulkan (missing: Vulkan_LIBRARY)

Fixed VulkanSamples Github issues:

- #147 Draw multiple cubes using vulkan
- #146 Linker Error while trying to run the Vulcan API Samples on Android Studio
- #143 Detected Visual Studio Version as 00 0000
- #139 Android Samples with latest ndk update fails due to deprecated app_dummy() call
- #137 Android Samples are not allowing the debugger to attach.
- #136 Hologram crashes when resizing window

### Known Issues

- Loader and validation layer open issues are available in the Vulkan-LoaderAndValidationLayers Github Repository
- VkTrace and other tool-related open issues are available in the VulkanTools Github Repository
- Vulkan Sample-related open issues are available in the VulkanSamples Github Repository

### Known Driver Issues

None