blob: c62fa695adfdacc3f06c7ccce098e96d54bee1ef [file] [log] [blame] [view]
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -06001# Explicit GL (VK) Ecosystem Components
Courtney Goeltzenleuchter376a71c2015-02-04 17:50:32 -07002*Version 0.8, 04 Feb 2015*
Courtney Goeltzenleuchter21f8ea52014-09-01 17:18:57 -06003
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -06004This project provides *open source* tools for VK Developers.
Courtney Goeltzenleuchter21f8ea52014-09-01 17:18:57 -06005
JensOwen95c62272014-11-01 13:05:43 -06006## Introduction
7
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -06008VK is an Explicit API, enabling direct control over how GPUs actually work. No validation, shader recompilation, memory management or synchronization is done inside an VK driver. Applications have full control and responsibility. Any errors in how VK is used are likely to result in a crash. This project provides layered utility libraries to ease development and help guide developers to proven safe patterns.
Jens Owenf27b4542014-12-17 11:58:21 -07009
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -060010New with VK in an extensible layered architecture that enables significant innovation in tools:
Jens Owenf27b4542014-12-17 11:58:21 -070011- Cross IHV support enables tools vendors to plug into a common, extensible layer architecture
12- Layered tools during development enable validating, debugging and profiling without production performance impact
13- Modular validation architecture encourages many fine-grained layers--and new layers can be added easily
14- Encourages open community of tool developers: led by Valve, LunarG, Codeplay and others
15- Customized interactive debugging and validation layers will be available together with first drivers
16
JensOwen95c62272014-11-01 13:05:43 -060017The components here are being shared with the Khronos community to provide
Jens Owen8b5ed542014-12-18 14:36:31 -070018insights into the specification as we approach an alpha header, and to assists those doing
19demos for GDC.
JensOwen786bcc62014-11-01 09:28:29 -060020
21The following components are available:
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -060022- VK Library and header files, which include:
Jens Owen00266782014-12-18 07:08:39 -070023 - [*ICD Loader*](loader) and [*Layer Manager*](layers/README.md)
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -060024 - Snapshot of *VK* and *BIL* header files from [*Khronos*](www.khronos.org)
Jens Owen00266782014-12-18 07:08:39 -070025
Jens Owen78a25a22014-12-17 12:21:12 -070026- [*GLAVE Debugger*](tools/glave)
Jens Owenc8984db2014-12-17 14:18:22 -070027
28 ![ScreenShot](docs/images/Glave-Small.png)
Jens Owen00266782014-12-18 07:08:39 -070029
30- Core [*Validation Layers*](layers/)
31
32- [*Sample Driver*](icd)
JensOwen786bcc62014-11-01 09:28:29 -060033
Courtney Goeltzenleuchter76793e62014-11-26 09:56:28 -070034## New
35
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -060036- Updated loader, driver, demos, tests and many tools to use "alpha" vulkan.h (~ version 47).
Courtney Goeltzenleuchter376a71c2015-02-04 17:50:32 -070037 Supports new resource binding model, memory allocation, pixel FORMATs and
38 other updates.
39 APIDump layer is working with these new API elements.
40 Glave can trace and replay the cube and tri demos.
41 Other layers in progress.
Courtney Goeltzenleuchterfc82da62015-02-05 17:02:39 -070042- Warning: Recent versions of 14.10 have **REMOVED** DRI 3.
43 Version: 2:2.99.914-1~exp1ubuntu4.1 is known to work.
Courtney Goeltzenleuchter376a71c2015-02-04 17:50:32 -070044
45## Prior updates
46
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -060047- VK API trace and capture tools. See tools/glave/README.md for details.
Courtney Goeltzenleuchter7b193492014-12-09 09:33:18 -070048- Sample driver now supports multiple render targets. Added TriangleMRT to test that functionality.
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -060049- Added VK_SLOT_SHADER_TEXTURE_RESOURCE to vulkan.h as a descriptor slot type to work around confusion in GLSL
Courtney Goeltzenleuchter7b193492014-12-09 09:33:18 -070050 between textures and buffers as shader resources.
51- Misc. fixes for layers and Intel sample driver
Courtney Goeltzenleuchter7b193492014-12-09 09:33:18 -070052- Added mutex to APIDump, APIDumpFile and DrawState to prevent apparent threading issues using printf
53- Fix support for {Fill,Copy}Memory
54- MemTracker can report issues to application via debug callback
55- Update test infrastructure to improve ease of writing new tests. Add image comparison feature for regression testing. Requires ImageMagick library.
56- Misc. fixes to demos, layers and Intel sample driver
Courtney Goeltzenleuchter16a0a172014-12-02 11:54:27 -070057- Added mutex to APIDump, APIDumpFile and DrawState to prevent apparent threading issues using printf
58- Fix support for {Fill,Copy}Memory
59- MemTracker can report issues to application via debug callback
60- Update test infrastructure to improve ease of writing new tests. Add image comparison feature for regression testing. Requires ImageMagick library.
61- Misc. fixes to demos, layers and Intel sample driver
Courtney Goeltzenleuchter76793e62014-11-26 09:56:28 -070062
JensOwen95c62272014-11-01 13:05:43 -060063## How to Build and Run
64
Jens Owen78a25a22014-12-17 12:21:12 -070065[BUILD.md](BUILD.md)
JensOwen3ceb4752014-11-01 13:18:21 -060066includes directions for building all the components, running the validation tests and running the demo applications.
JensOwen95c62272014-11-01 13:05:43 -060067
Courtney Goeltzenleuchter76793e62014-11-26 09:56:28 -070068Information on how to enable the various Debug and Validation layers is in
Jens Owen78a25a22014-12-17 12:21:12 -070069[layers/README.md](layers/README.md).
JensOwen95c62272014-11-01 13:05:43 -060070
71## References
JensOwen786bcc62014-11-01 09:28:29 -060072This version of the components are written based on the following preliminary specs and proposals:
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -060073- [**VK Programers Reference**, 1 Jul 2014](https://cvs.khronos.org/svn/repos/oglc/trunk/nextgen/proposals/AMD/Explicit%20GL%20Programming%20Guide%20and%20API%20Reference.pdf)
Courtney Goeltzenleuchter2016e972015-02-05 15:35:26 -070074- [**BIL**, revision 29](https://cvs.khronos.org/svn/repos/oglc/trunk/nextgen/proposals/BIL/Specification/BIL.html)
Courtney Goeltzenleuchter21f8ea52014-09-01 17:18:57 -060075
JensOwen95c62272014-11-01 13:05:43 -060076## License
Courtney Goeltzenleuchter21f8ea52014-09-01 17:18:57 -060077This work is intended to be released as open source under a BSD-style
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -060078license once the VK specification is public. Until that time, this work
79is covered by the Khronos NDA governing the details of the VK API.
Courtney Goeltzenleuchter21f8ea52014-09-01 17:18:57 -060080
JensOwen95c62272014-11-01 13:05:43 -060081## Acknowledgements
Courtney Goeltzenleuchter21f8ea52014-09-01 17:18:57 -060082While this project is being developed by LunarG, Inc; there are many other
83companies and individuals making this possible: Valve Software, funding
84project development; Intel Corporation, providing full hardware specifications
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -060085and valuable technical feedback; AMD, providing VK spec editor contributions;
Courtney Goeltzenleuchter21f8ea52014-09-01 17:18:57 -060086ARM, contributing a Chairman for this working group within Khronos; Nvidia,
87providing an initial co-editor for the spec; Qualcomm for picking up the
88co-editor's chair; and Khronos, for providing hosting within GitHub.
89
JensOwen95c62272014-11-01 13:05:43 -060090## Contact
91If you have questions or comments about this driver; or you would like to contribute
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -060092directly to this effort, please contact us at VK@LunarG.com; or if you prefer, via
JensOwen95c62272014-11-01 13:05:43 -060093the GL Common mailing list: gl_common@khronos.org