blob: 794e52b0ad5d656ba85050a7677172bfa3441954 [file] [log] [blame] [view]
JensOwen786bcc62014-11-01 09:28:29 -06001# Explicit GL (XGL) Ecosystem Components
Jens Owenf27b4542014-12-17 11:58:21 -07002*Version 0.7, 17 Dec 2014*
Courtney Goeltzenleuchter21f8ea52014-09-01 17:18:57 -06003
Jens Owenf27b4542014-12-17 11:58:21 -07004This project provides *open source* tools for XGL Developers.
Courtney Goeltzenleuchter21f8ea52014-09-01 17:18:57 -06005
JensOwen95c62272014-11-01 13:05:43 -06006## Introduction
7
Jens Owenf27b4542014-12-17 11:58:21 -07008XGL is an Explicit API, enabling direct control over how GPUs actually work. No validation, shader recompilation, memory management or synchronization is done inside an XGL driver. Applications have full control and responsibility and any errors in how the XGL is used are likely to result in an application crash. This project provides layered utility libraries to ease development and help guide developers to proven safe patterns.
9
10New with XGL in an extensible layered architecture that enables significant innovation in tools:
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
JensOwen95c62272014-11-01 13:05:43 -060017The components here are being shared with the Khronos community to provide
18early insights into the specification of XGL and to assists those doing
19prototyping at this point.
JensOwen786bcc62014-11-01 09:28:29 -060020
21The following components are available:
JensOwend7e99e72014-11-01 09:37:13 -060022- Proposed Reference [*ICD Loader*](https://github.com/KhronosGroup/GL-Next/tree/master/loader) (including [*Layer Management*](https://github.com/KhronosGroup/GL-Next/tree/master/layers/README.md))
JensOwen786bcc62014-11-01 09:28:29 -060023- Proposed Reference [*Validation Layers*](https://github.com/KhronosGroup/GL-Next/tree/master/layers/)
24 - [Object Tracker](https://github.com/KhronosGroup/GL-Next/blob/master/layers/object_track.c)
25 - [Draw State](https://github.com/KhronosGroup/GL-Next/blob/master/layers/draw_state.c)
Courtney Goeltzenleuchter76793e62014-11-26 09:56:28 -070026 - [MemTracker](https://github.com/KhronosGroup/GL-Next/blob/master/layers/mem_tracker.c)
Jens Owenf27b4542014-12-17 11:58:21 -070027- [*GLAVE Debugger*](https://github.com/KhronosGroup/GL-Next/tree/master/tools/glave)
Courtney Goeltzenleuchter16a0a172014-12-02 11:54:27 -070028 - APIDump (generated)
Courtney Goeltzenleuchter76793e62014-11-26 09:56:28 -070029 - APIDumpFile (generated)
Courtney Goeltzenleuchterb66da032014-12-11 16:41:43 -070030 - glvtrace64: capture trace of XGL API of an application.
31 - glvreplay64: replay captured trace.
JensOwenf629f222014-11-01 14:05:50 -060032- [*Sample Drivers*](https://github.com/KhronosGroup/GL-Next/tree/master/icd)
JensOwen786bcc62014-11-01 09:28:29 -060033 - [Common Infrastructure](https://github.com/KhronosGroup/GL-Next/tree/master/icd/common)
34 - [Implementation for Intel GPUs](https://github.com/KhronosGroup/GL-Next/tree/master/icd/intel)
Courtney Goeltzenleuchter7b193492014-12-09 09:33:18 -070035- [*Sample Driver Tests*](https://github.com/KhronosGroup/GL-Next/tree/master/tests)
36 - Now includes Golden images to verify xgl_render_tests rendering.
JensOwen786bcc62014-11-01 09:28:29 -060037
Courtney Goeltzenleuchter76793e62014-11-26 09:56:28 -070038## New
39
Courtney Goeltzenleuchterb66da032014-12-11 16:41:43 -070040- XGL API trace and capture tools. See tools/glave/README.md for details.
Courtney Goeltzenleuchter7b193492014-12-09 09:33:18 -070041- Sample driver now supports multiple render targets. Added TriangleMRT to test that functionality.
42- Added XGL_SLOT_SHADER_TEXTURE_RESOURCE to xgl.h as a descriptor slot type to work around confusion in GLSL
43 between textures and buffers as shader resources.
44- Misc. fixes for layers and Intel sample driver
45
46## Prior updates
47
48- Added mutex to APIDump, APIDumpFile and DrawState to prevent apparent threading issues using printf
49- Fix support for {Fill,Copy}Memory
50- MemTracker can report issues to application via debug callback
51- Update test infrastructure to improve ease of writing new tests. Add image comparison feature for regression testing. Requires ImageMagick library.
52- Misc. fixes to demos, layers and Intel sample driver
Courtney Goeltzenleuchter16a0a172014-12-02 11:54:27 -070053- Added mutex to APIDump, APIDumpFile and DrawState to prevent apparent threading issues using printf
54- Fix support for {Fill,Copy}Memory
55- MemTracker can report issues to application via debug callback
56- Update test infrastructure to improve ease of writing new tests. Add image comparison feature for regression testing. Requires ImageMagick library.
57- Misc. fixes to demos, layers and Intel sample driver
Courtney Goeltzenleuchter76793e62014-11-26 09:56:28 -070058
JensOwen95c62272014-11-01 13:05:43 -060059## How to Build and Run
60
JensOwen3ceb4752014-11-01 13:18:21 -060061[BUILD.md](https://github.com/KhronosGroup/GL-Next/tree/master/BUILD.md)
62includes directions for building all the components, running the validation tests and running the demo applications.
JensOwen95c62272014-11-01 13:05:43 -060063
Courtney Goeltzenleuchter76793e62014-11-26 09:56:28 -070064Information on how to enable the various Debug and Validation layers is in
JensOwen95c62272014-11-01 13:05:43 -060065[layers/README.md](https://github.com/KhronosGroup/GL-Next/tree/master/layers/README.md).
66
67## References
JensOwen786bcc62014-11-01 09:28:29 -060068This version of the components are written based on the following preliminary specs and proposals:
69- [**XGL Programers Reference**, 1 Jul 2014](https://cvs.khronos.org/svn/repos/oglc/trunk/nextgen/proposals/AMD/Explicit%20GL%20Programming%20Guide%20and%20API%20Reference.pdf)
70- [**BIL**, version 1.0, revision 18](https://cvs.khronos.org/svn/repos/oglc/trunk/nextgen/proposals/BIL/Specification/BIL.html)
Courtney Goeltzenleuchter76793e62014-11-26 09:56:28 -070071- [**IMG's Fixed Function Proposal**, 13 Nov 2014](https://cvs.khronos.org/svn/repos/oglc/trunk/nextgen/XGL/accepted/xgl_fixed_function_vertex_fetch_proposal.txt)
JensOwene3429322014-11-01 09:39:46 -060072- [**Valve's Loader Proposal**, 7 Oct 2014](https://cvs.khronos.org/svn/repos/oglc/trunk/nextgen/proposals/Valve/xglLayers.pptx)
Courtney Goeltzenleuchter21f8ea52014-09-01 17:18:57 -060073
JensOwen95c62272014-11-01 13:05:43 -060074## License
Courtney Goeltzenleuchter21f8ea52014-09-01 17:18:57 -060075This work is intended to be released as open source under a BSD-style
76license once the XGL specification is public. Until that time, this work
77is covered by the Khronos NDA governing the details of the XGL API.
78
JensOwen95c62272014-11-01 13:05:43 -060079## Acknowledgements
Courtney Goeltzenleuchter21f8ea52014-09-01 17:18:57 -060080While this project is being developed by LunarG, Inc; there are many other
81companies and individuals making this possible: Valve Software, funding
82project development; Intel Corporation, providing full hardware specifications
83and valuable technical feedback; AMD, providing XGL spec editor contributions;
84ARM, contributing a Chairman for this working group within Khronos; Nvidia,
85providing an initial co-editor for the spec; Qualcomm for picking up the
86co-editor's chair; and Khronos, for providing hosting within GitHub.
87
JensOwen95c62272014-11-01 13:05:43 -060088## Contact
89If you have questions or comments about this driver; or you would like to contribute
90directly to this effort, please contact us at XGL@LunarG.com; or if you prefer, via
91the GL Common mailing list: gl_common@khronos.org