1 # Explicit GL (XGL) Ecosystem Components
\r
2 *Version 0.7, 17 Dec 2014*
\r
4 This project provides *open source* tools for XGL Developers.
\r
8 XGL 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. Any errors in how XGL 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.
\r
10 New with XGL in an extensible layered architecture that enables significant innovation in tools:
\r
11 - Cross IHV support enables tools vendors to plug into a common, extensible layer architecture
\r
12 - Layered tools during development enable validating, debugging and profiling without production performance impact
\r
13 - Modular validation architecture encourages many fine-grained layers--and new layers can be added easily
\r
14 - Encourages open community of tool developers: led by Valve, LunarG, Codeplay and others
\r
15 - Customized interactive debugging and validation layers will be available together with first drivers
\r
17 The components here are being shared with the Khronos community to provide
\r
18 early insights into the specification of XGL and to assists those doing
\r
19 prototyping at this point.
\r
21 The following components are available:
\r
22 - Proposed Reference [*ICD Loader*](loader) (including [*Layer Management*](layers/README.md))
\r
23 - Proposed Reference [*Validation Layers*](layers/)
\r
24 - [Object Tracker](layers/object_track.c)
\r
25 - [Draw State](layers/draw_state.c)
\r
26 - [MemTracker](layers/mem_tracker.c)
\r
27 - [*GLAVE Debugger*](tools/glave)
\r
28 - APIDump (generated)
\r
29 - APIDumpFile (generated)
\r
30 - glvtrace64: capture trace of XGL API of an application.
\r
31 - glvreplay64: replay captured trace.
\r
32 - screenshot: ![ScreenShot](http://www.lunarg.com/wp-content/themes/LunarG/images/logo.png)
\r
33 - [*Sample Drivers*](icd)
\r
34 - [Common Infrastructure](icd/common)
\r
35 - [Implementation for Intel GPUs](icd/intel)
\r
36 - [*Sample Driver Tests*](tests)
\r
37 - Now includes Golden images to verify xgl_render_tests rendering.
\r
41 - XGL API trace and capture tools. See tools/glave/README.md for details.
\r
42 - Sample driver now supports multiple render targets. Added TriangleMRT to test that functionality.
\r
43 - Added XGL_SLOT_SHADER_TEXTURE_RESOURCE to xgl.h as a descriptor slot type to work around confusion in GLSL
\r
44 between textures and buffers as shader resources.
\r
45 - Misc. fixes for layers and Intel sample driver
\r
49 - Added mutex to APIDump, APIDumpFile and DrawState to prevent apparent threading issues using printf
\r
50 - Fix support for {Fill,Copy}Memory
\r
51 - MemTracker can report issues to application via debug callback
\r
52 - Update test infrastructure to improve ease of writing new tests. Add image comparison feature for regression testing. Requires ImageMagick library.
\r
53 - Misc. fixes to demos, layers and Intel sample driver
\r
54 - Added mutex to APIDump, APIDumpFile and DrawState to prevent apparent threading issues using printf
\r
55 - Fix support for {Fill,Copy}Memory
\r
56 - MemTracker can report issues to application via debug callback
\r
57 - Update test infrastructure to improve ease of writing new tests. Add image comparison feature for regression testing. Requires ImageMagick library.
\r
58 - Misc. fixes to demos, layers and Intel sample driver
\r
60 ## How to Build and Run
\r
62 [BUILD.md](BUILD.md)
\r
63 includes directions for building all the components, running the validation tests and running the demo applications.
\r
65 Information on how to enable the various Debug and Validation layers is in
\r
66 [layers/README.md](layers/README.md).
\r
69 This version of the components are written based on the following preliminary specs and proposals:
\r
70 - [**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)
\r
71 - [**BIL**, version 1.0, revision 18](https://cvs.khronos.org/svn/repos/oglc/trunk/nextgen/proposals/BIL/Specification/BIL.html)
\r
72 - [**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)
\r
73 - [**Valve's Loader Proposal**, 7 Oct 2014](https://cvs.khronos.org/svn/repos/oglc/trunk/nextgen/proposals/Valve/xglLayers.pptx)
\r
76 This work is intended to be released as open source under a BSD-style
\r
77 license once the XGL specification is public. Until that time, this work
\r
78 is covered by the Khronos NDA governing the details of the XGL API.
\r
81 While this project is being developed by LunarG, Inc; there are many other
\r
82 companies and individuals making this possible: Valve Software, funding
\r
83 project development; Intel Corporation, providing full hardware specifications
\r
84 and valuable technical feedback; AMD, providing XGL spec editor contributions;
\r
85 ARM, contributing a Chairman for this working group within Khronos; Nvidia,
\r
86 providing an initial co-editor for the spec; Qualcomm for picking up the
\r
87 co-editor's chair; and Khronos, for providing hosting within GitHub.
\r
90 If you have questions or comments about this driver; or you would like to contribute
\r
91 directly to this effort, please contact us at XGL@LunarG.com; or if you prefer, via
\r
92 the GL Common mailing list: gl_common@khronos.org
\r