Add buffer creation support to VK_FUCHSIA_buffer_collection

On current systems any VMO can be imported as a buffer and it will work
just like a vulkan-created buffer, except that the client that doesn't
use vulkan has no idea whether cache operations are needed. However on
non-UMA systems it's possible that an arbitrary VMO could only be
imported in very limited ways, e.g. not attachable to a vertex buffer
or uniform buffer.

The sysmem interface supports creating buffer collections that aren't 2D
images, but are linear memory. We can extend the Vulkan buffer
collection interface to allow clients to request that.

The main differences between the buffer and image constraints interfaces
(besides the VkBufferCreateInfo parameter) are that VkFormatFeatureFlags
can be specified to require that certain operations (like
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT) are supported. and
the minimum number of buffers in the collection are specified. The image
interface will be extended to support those features in the future.

Also updated Vulkan-Docs.diff to match the current versions:
Vulkan-Docs 3c0abef815a9ffe3d1b728bb383f132543e721b1
Vulkan-Hpp b4080fb4254dbc38fef7f71a262a08fe01cd964a

Change-Id: I76822922f646a5fdccd37b11f073b8555c17cd1e
17 files changed
tree: e55f520f42ddfa1aebdd44fec41359a2300183a3
  1. build-android/
  2. build-fuchsia/
  3. cmake/
  4. common/
  5. demos/
  6. external_revisions/
  7. icd/
  8. include/
  9. layers/
  10. libs/
  11. loader/
  12. scripts/
  13. submodules/
  14. tests/
  15. windowsRuntimeInstaller/
  16. .appveyor.yml
  17. .clang-format
  18. .gitattributes
  19. .gitignore
  20. .gitmodules
  21. .travis.yml
  22. BUILD.gn
  23. BUILD.md
  24. build_windows_targets.bat
  25. CMakeLists.txt
  26. CONTRIBUTING.md
  27. COPYRIGHT.txt
  28. GOVERNANCE.md
  29. LICENSE.txt
  30. README.fuchsia
  31. README.md
  32. README_FUCHSIA.md
  33. update_external_sources.bat
  34. update_external_sources.sh
README.md

Vulkan-LoaderAndValidationLayers Has Been Deprecated

This repository has been deprecated. It will continue to exist as a read-only repository servicing existing projects. Any projects utilizing this repository should be migrated to use the follow-on repositories listed below. All issues have been migrated to the new repositories.

The four new repositories are:

Repository Maintainers, May 13, 2018

Contact: mark@lunarg.com

Original README.md contents follow.

Vulkan Ecosystem Components

This project provides the Khronos official Vulkan ICD desktop loader and the Vulkan validation layers for Windows, Linux, Android, and MacOS.

CI Build Status

PlatformBuild Status
Linux/AndroidBuild Status
WindowsBuild status

Introduction

Vulkan is an Explicit API, enabling direct control over how GPUs actually work. By design, minimal error checking is done inside a Vulkan driver. Applications have full control and responsibility for correct operation. Any errors in how Vulkan is used can result in a crash. This project provides Vulkan validation layers that can be enabled to assist development by enabling developers to verify their applications correct use of the Vulkan API.

Vulkan supports multiple GPUs and multiple global contexts (VkInstance). The ICD loader is necessary to support multiple GPUs and VkInstance-level Vulkan commands. Additionally, the loader manages inserting Vulkan layer libraries such as validation layers between the application and the ICD.

The following components are available in this repository:

Contact Information

Information for Developing or Contributing:

Please see the CONTRIBUTING.md file in this repository for more details. Please see the GOVERNANCE.md file in this repository for repository management details.

How to Build and Run

BUILD.md Includes directions for building all components as well as running validation tests and demo applications.

Information on how to enable the various Validation layers is in layers/README.md.

Architecture and interface information for the loader is in loader/LoaderAndLayerInterface.md.

License

This work is released as open source under a Apache-style license from Khronos including a Khronos copyright.

See COPYRIGHT.txt for a full list of licenses used in this repository.

Acknowledgements

While this project has been developed primarily by LunarG, Inc., there are many other companies and individuals making this possible: Valve Corporation, funding project development; Google providing significant contributions to the validation layers; Khronos providing oversight and hosting of the project.