commit | 2d4ab1eddf8de04d0b486a8dde763006f0156699 | [log] [tgz] |
---|---|---|
author | Ian Elliott <ian@LunarG.com> | Tue Jan 13 17:52:38 2015 -0700 |
committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | Wed Feb 04 17:58:11 2015 -0700 |
tree | ea74596b1b30e743047cf263c61aef8a2d07566d | |
parent | 03d0bcc0af0ca52c1692c0e38bb2bfe68059584e [diff] |
Can compile "loader" and "layers" on Windows and Linux ... These directories build and are partially turned-on on Windows, using the "tri" demo (follow-on commit) and a "NULL driver" that was created out of the sample/Intel driver. The GetProcAddress() is not yet finding symbols in the NULL driver. For now: - "C:\Windows\System32" is the default XGL driver directory. The getenv() isn't yet working. I suggest creating your own #define in order to point to where a driver is. - In order to recognize a Windows driver, we must look at both its prefix and suffix (i.e. it is named "XGL_*.dll", e.g. "XGL_i965.dll). - We autogenerate Windows ".def" files for the layers. Additional info is: - This is necessary in order for a DLL to export symbols that can be queried using GetProcAddress(). We can't use the normal Windows approach of declaring these functions using "__declspec(dllexport)", because these functions are declared in "xgl.h". - This involves adding and running the new "xgl-win-def-file-generate.py" file. - NOTE: Layers don't have the xglInitAndEnumerateGpus() entrypoint, just the xglGetProcAddr() entrypoint (and now the xglEnumerateLayers() entrypoint). Generating them is pretty simple. NOTE: In order to build on a 64-bit Windows 7/8 system, I did the following: - Install VisualStudio 2013 Professional - Install CMake from: http://www.cmake.org/cmake/resources/software.html - I let it add itself to the system PATH environment variable. - Install Python 3 from: https://www.python.org/downloads - I let it add itself to the system PATH environment variable. - Obtain the Git repository, checkout the "ian-150127-WinBuild" branch. - Using a Cygwin shell: I did the following: - "cd" to the top-level directory (i.e. the one that contains the ".git" directory). - "mkdir _out64" - "cd _out64" - "cmake -G "Visual Studio 12 Win64" .." - At this point, I used WindowsExplorer to open the "XGL.sln" file. I can build. CMake causes the build shortcut to be "Ctrl-Shift-B" instead of the normal "F7". I had to right-click the "ALL_BUILD" project, go to Properties->Debugging and change the debug Command and Working Directory to point to "tri.exe" and where the executable are. At this point, I can debug (using the normal "F5" shortcut).
Version 0.7, 18 Dec 2014
This project provides open source tools for XGL Developers.
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.
New with XGL in an extensible layered architecture that enables significant innovation in tools:
The components here are being shared with the Khronos community to provide insights into the specification as we approach an alpha header, and to assists those doing demos for GDC.
The following components are available:
XGL Library and header files, which include:
Core Validation Layers
BUILD.md includes directions for building all the components, running the validation tests and running the demo applications.
Information on how to enable the various Debug and Validation layers is in layers/README.md.
This version of the components are written based on the following preliminary specs and proposals:
This work is intended to be released as open source under a BSD-style license once the XGL specification is public. Until that time, this work is covered by the Khronos NDA governing the details of the XGL API.
While this project is being developed by LunarG, Inc; there are many other companies and individuals making this possible: Valve Software, funding project development; Intel Corporation, providing full hardware specifications and valuable technical feedback; AMD, providing XGL spec editor contributions; ARM, contributing a Chairman for this working group within Khronos; Nvidia, providing an initial co-editor for the spec; Qualcomm for picking up the co-editor's chair; and Khronos, for providing hosting within GitHub.
If you have questions or comments about this driver; or you would like to contribute directly to this effort, please contact us at XGL@LunarG.com; or if you prefer, via the GL Common mailing list: gl_common@khronos.org