| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame^] | 1 | # Explicit GL (VK) Ecosystem Components
|
| Courtney Goeltzenleuchter | 376a71c | 2015-02-04 17:50:32 -0700 | [diff] [blame] | 2 | *Version 0.8, 04 Feb 2015*
|
| Courtney Goeltzenleuchter | 21f8ea5 | 2014-09-01 17:18:57 -0600 | [diff] [blame] | 3 |
|
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame^] | 4 | This project provides *open source* tools for VK Developers.
|
| Courtney Goeltzenleuchter | 21f8ea5 | 2014-09-01 17:18:57 -0600 | [diff] [blame] | 5 |
|
| JensOwen | 95c6227 | 2014-11-01 13:05:43 -0600 | [diff] [blame] | 6 | ## Introduction
|
| 7 |
|
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame^] | 8 | VK 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 Owen | f27b454 | 2014-12-17 11:58:21 -0700 | [diff] [blame] | 9 |
|
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame^] | 10 | New with VK in an extensible layered architecture that enables significant innovation in tools:
|
| Jens Owen | f27b454 | 2014-12-17 11:58:21 -0700 | [diff] [blame] | 11 | - 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 |
|
| JensOwen | 95c6227 | 2014-11-01 13:05:43 -0600 | [diff] [blame] | 17 | The components here are being shared with the Khronos community to provide
|
| Jens Owen | 8b5ed54 | 2014-12-18 14:36:31 -0700 | [diff] [blame] | 18 | insights into the specification as we approach an alpha header, and to assists those doing
|
| 19 | demos for GDC.
|
| JensOwen | 786bcc6 | 2014-11-01 09:28:29 -0600 | [diff] [blame] | 20 |
|
| 21 | The following components are available:
|
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame^] | 22 | - VK Library and header files, which include:
|
| Jens Owen | 0026678 | 2014-12-18 07:08:39 -0700 | [diff] [blame] | 23 | - [*ICD Loader*](loader) and [*Layer Manager*](layers/README.md)
|
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame^] | 24 | - Snapshot of *VK* and *BIL* header files from [*Khronos*](www.khronos.org)
|
| Jens Owen | 0026678 | 2014-12-18 07:08:39 -0700 | [diff] [blame] | 25 |
|
| Jens Owen | 78a25a2 | 2014-12-17 12:21:12 -0700 | [diff] [blame] | 26 | - [*GLAVE Debugger*](tools/glave)
|
| Jens Owen | c8984db | 2014-12-17 14:18:22 -0700 | [diff] [blame] | 27 |
|
| 28 | 
|
| Jens Owen | 0026678 | 2014-12-18 07:08:39 -0700 | [diff] [blame] | 29 |
|
| 30 | - Core [*Validation Layers*](layers/)
|
| 31 |
|
| 32 | - [*Sample Driver*](icd)
|
| JensOwen | 786bcc6 | 2014-11-01 09:28:29 -0600 | [diff] [blame] | 33 |
|
| Courtney Goeltzenleuchter | 76793e6 | 2014-11-26 09:56:28 -0700 | [diff] [blame] | 34 | ## New
|
| 35 |
|
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame^] | 36 | - Updated loader, driver, demos, tests and many tools to use "alpha" vulkan.h (~ version 47).
|
| Courtney Goeltzenleuchter | 376a71c | 2015-02-04 17:50:32 -0700 | [diff] [blame] | 37 | 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 Goeltzenleuchter | fc82da6 | 2015-02-05 17:02:39 -0700 | [diff] [blame] | 42 | - Warning: Recent versions of 14.10 have **REMOVED** DRI 3.
|
| 43 | Version: 2:2.99.914-1~exp1ubuntu4.1 is known to work.
|
| Courtney Goeltzenleuchter | 376a71c | 2015-02-04 17:50:32 -0700 | [diff] [blame] | 44 |
|
| 45 | ## Prior updates
|
| 46 |
|
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame^] | 47 | - VK API trace and capture tools. See tools/glave/README.md for details.
|
| Courtney Goeltzenleuchter | 7b19349 | 2014-12-09 09:33:18 -0700 | [diff] [blame] | 48 | - Sample driver now supports multiple render targets. Added TriangleMRT to test that functionality.
|
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame^] | 49 | - Added VK_SLOT_SHADER_TEXTURE_RESOURCE to vulkan.h as a descriptor slot type to work around confusion in GLSL
|
| Courtney Goeltzenleuchter | 7b19349 | 2014-12-09 09:33:18 -0700 | [diff] [blame] | 50 | between textures and buffers as shader resources.
|
| 51 | - Misc. fixes for layers and Intel sample driver
|
| Courtney Goeltzenleuchter | 7b19349 | 2014-12-09 09:33:18 -0700 | [diff] [blame] | 52 | - 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 Goeltzenleuchter | 16a0a17 | 2014-12-02 11:54:27 -0700 | [diff] [blame] | 57 | - 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 Goeltzenleuchter | 76793e6 | 2014-11-26 09:56:28 -0700 | [diff] [blame] | 62 |
|
| JensOwen | 95c6227 | 2014-11-01 13:05:43 -0600 | [diff] [blame] | 63 | ## How to Build and Run
|
| 64 |
|
| Jens Owen | 78a25a2 | 2014-12-17 12:21:12 -0700 | [diff] [blame] | 65 | [BUILD.md](BUILD.md)
|
| JensOwen | 3ceb475 | 2014-11-01 13:18:21 -0600 | [diff] [blame] | 66 | includes directions for building all the components, running the validation tests and running the demo applications.
|
| JensOwen | 95c6227 | 2014-11-01 13:05:43 -0600 | [diff] [blame] | 67 |
|
| Courtney Goeltzenleuchter | 76793e6 | 2014-11-26 09:56:28 -0700 | [diff] [blame] | 68 | Information on how to enable the various Debug and Validation layers is in
|
| Jens Owen | 78a25a2 | 2014-12-17 12:21:12 -0700 | [diff] [blame] | 69 | [layers/README.md](layers/README.md).
|
| JensOwen | 95c6227 | 2014-11-01 13:05:43 -0600 | [diff] [blame] | 70 |
|
| 71 | ## References
|
| JensOwen | 786bcc6 | 2014-11-01 09:28:29 -0600 | [diff] [blame] | 72 | This version of the components are written based on the following preliminary specs and proposals:
|
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame^] | 73 | - [**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 Goeltzenleuchter | 2016e97 | 2015-02-05 15:35:26 -0700 | [diff] [blame] | 74 | - [**BIL**, revision 29](https://cvs.khronos.org/svn/repos/oglc/trunk/nextgen/proposals/BIL/Specification/BIL.html)
|
| Courtney Goeltzenleuchter | 21f8ea5 | 2014-09-01 17:18:57 -0600 | [diff] [blame] | 75 |
|
| JensOwen | 95c6227 | 2014-11-01 13:05:43 -0600 | [diff] [blame] | 76 | ## License
|
| Courtney Goeltzenleuchter | 21f8ea5 | 2014-09-01 17:18:57 -0600 | [diff] [blame] | 77 | This work is intended to be released as open source under a BSD-style
|
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame^] | 78 | license once the VK specification is public. Until that time, this work
|
| 79 | is covered by the Khronos NDA governing the details of the VK API.
|
| Courtney Goeltzenleuchter | 21f8ea5 | 2014-09-01 17:18:57 -0600 | [diff] [blame] | 80 |
|
| JensOwen | 95c6227 | 2014-11-01 13:05:43 -0600 | [diff] [blame] | 81 | ## Acknowledgements
|
| Courtney Goeltzenleuchter | 21f8ea5 | 2014-09-01 17:18:57 -0600 | [diff] [blame] | 82 | While this project is being developed by LunarG, Inc; there are many other
|
| 83 | companies and individuals making this possible: Valve Software, funding
|
| 84 | project development; Intel Corporation, providing full hardware specifications
|
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame^] | 85 | and valuable technical feedback; AMD, providing VK spec editor contributions;
|
| Courtney Goeltzenleuchter | 21f8ea5 | 2014-09-01 17:18:57 -0600 | [diff] [blame] | 86 | ARM, contributing a Chairman for this working group within Khronos; Nvidia,
|
| 87 | providing an initial co-editor for the spec; Qualcomm for picking up the
|
| 88 | co-editor's chair; and Khronos, for providing hosting within GitHub.
|
| 89 |
|
| JensOwen | 95c6227 | 2014-11-01 13:05:43 -0600 | [diff] [blame] | 90 | ## Contact
|
| 91 | If you have questions or comments about this driver; or you would like to contribute
|
| Courtney Goeltzenleuchter | 9cc421e | 2015-04-08 15:36:08 -0600 | [diff] [blame^] | 92 | directly to this effort, please contact us at VK@LunarG.com; or if you prefer, via
|
| JensOwen | 95c6227 | 2014-11-01 13:05:43 -0600 | [diff] [blame] | 93 | the GL Common mailing list: gl_common@khronos.org
|