Lines Matching +full:out +full:- +full:of +full:- +full:source +full:- +full:and +full:- +full:install
5 …roup/glslang/blob/9eef54b2513ca6b40b47b07d24f453848b65c0df/README.md#planned-deprecationsremovals),
9 2. The versioning scheme is being improved, and you might notice some differences. This is current…
13 **SPIRV Folder, 1-May, 2020.** Glslang, when installed through CMake,
14 will install a `SPIRV` folder into `${CMAKE_INSTALL_INCLUDEDIR}`.
17 The old install of `SPIRV/` will be removed as a CMake install target no sooner than May 1, 2020.
20 …get spirv.hpp, I recommend they get that from [SPIRV-Headers](https://github.com/KhronosGroup/SPIR…
22 [](https://travis-ci.o…
25 # Glslang Components and Status
29 ### Reference Validator and GLSL/ESSL -> AST Front End
31 An OpenGL GLSL and OpenGL|ES GLSL (ESSL) front-end for reference validation and translation of GLSL…
35 ### HLSL -> AST Front End
37 An HLSL front-end for translation of an approximation of HLSL to glslang's AST form.
39 **Status**: Partially complete. Semantics are not reference quality and input is not validated.
40 …aderCompiler), which receives a much larger investment and attempts to have definitive/reference-l…
42 See [issue 362](https://github.com/KhronosGroup/glslang/issues/362) and [issue 701](https://github.…
44 ### AST -> SPIR-V Back End
46 Translates glslang's AST to the Khronos-specified SPIR-V intermediate language.
52 …ion information from the AST, reflection types/variables/etc. from the HLL source (not the SPIR-V).
54 …of functionality present, but no specification/goal to measure completeness against. It is accura…
58 `glslangValidator` is command-line tool for accessing the functionality above.
68 https://www.khronos.org/opengles/sdk/tools/Reference-Compiler/
74 ## Execution of Standalone Wrapper
76 To use the standalone binary form, execute `glslangValidator`, and it will print
78 and it will print out warnings/errors and optionally an AST.
80 The applied stage-specific rules are based on the file extension:
88 There is also a non-shader extension
89 * `.conf` for a configuration file of limits, see usage statement for example
93 Instead of building manually, you can also download the binaries for your
94 platform directly from the [master-tot release][master-tot-release] on GitHub.
96 testing and they always reflect the current top of the tree of the master
105 * [Python 3.x][python]: for executing SPIRV-Tools scripts. (Optional if not using SPIRV-Tools and t…
112 shell or some other shell of your choosing.
114 #### 1) Check-Out this project
117 cd <parent of where you want glslang to be>
121 #### 2) Check-Out External Projects
128 If you wish to assure that SPIR-V generated from HLSL is legal for Vulkan,
129 wish to invoke -Os to reduce SPIR-V size from HLSL or GLSL, or wish to run the
130 integrated test suite, install spirv-tools with this:
138 Assume the source directory is `$SOURCE_DIR` and the build directory is
142 mkdir -p $BUILD_DIR
149 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(pwd)/install" $SOURCE_DIR
155 …-G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DANDROID_ABI=arm64-v8a -DCMAKE_BUILD_…
156 # If on Windows will be -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK_ROOT%\prebuilt\windows-x86_64\bin\make.exe
157 # -G is needed for building on Windows
158 # -DANDROID_ABI can also be armeabi-v7a for 32 bit
164 cmake $SOURCE_DIR -DCMAKE_INSTALL_PREFIX="$(pwd)/install"
170 Also, consider using `git config --global core.fileMode false` (or with `--local`) on Windows
171 to prevent the addition of execution permission on files.
173 #### 4) Build and Install
177 make -j4 install
180 cmake --build . --config Release --target install
181 # "Release" (for --config) could also be "Debug", "MinSizeRel", or "RelWithDebInfo"
185 Configuration Manager to check the `INSTALL` project.
191 #### 1) Install `depot_tools`
193 Download [depot_tools.zip](https://storage.googleapis.com/chrome-infra/depot_tools.zip),
194 extract to a directory, and add this directory to your `PATH`.
196 #### 2) Synchronize dependencies and generate build files
204 gclient sync --gclientfile=standalone.gclient
205 gn gen out/Default
213 cd out/Default
223 [GnuWin32][bison-gnu-win32].
228 m4 -P MachineIndependent/glslang.m4 > MachineIndependent/glslang.y
229 bison --defines=MachineIndependent/glslang_tab.cpp.h
230 -t MachineIndependent/glslang.y
231 -o MachineIndependent/glslang_tab.cpp
235 when executed from the glslang subdirectory of the glslang repository.
236 With no arguments it builds the full grammar, and with a "web" argument,
239 ### Building to WASM for the Web and Node
240 ### Building a standalone JS/WASM library for the Web and Node
242 Use the steps in [Build Steps](#build-steps), with the following notes/exceptions:
244 Bash-like environments:
245 … located here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install)
247 * Set `-DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF`.
248 * Set `-DENABLE_HLSL=OFF` if HLSL is not needed.
249 * For a standalone JS/WASM library, turn on `-DENABLE_GLSLANG_JS=ON`.
250 * For building a minimum-size web subset of core glslang:
251 + turn on `-DENABLE_GLSLANG_WEBMIN=ON` (disables HLSL)
253 (or if using your own scripts, `m4` needs a `-DGLSLANG_WEB` argument)
255 `-DENABLE_GLSLANG_WEBMIN_DEVEL=ON`
257 and .wasm files
262 emcmake cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON \
263 -DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF ..
266 ## Building glslang - Using vcpkg
268 You can download and install glslang using the [vcpkg](https://github.com/Microsoft/vcpkg) dependen…
272 ./bootstrap-vcpkg.sh
273 ./vcpkg integrate install
274 ./vcpkg install glslang
276 …cpkg is kept up to date by Microsoft team members and community contributors. If the version is ou…
282 runs unit tests and single-shader single-threaded integration tests, while
283 the latter runs multiple-shader linking tests and multi-threaded tests.
288 installed into `$BUILD_DIR/install`. Please make sure you have supplied the
289 correct configuration to CMake (using `-DCMAKE_INSTALL_PREFIX`) when building;
292 Running Google Test-backed tests:
301 ctest -C {Debug|Release|RelWithDebInfo|MinSizeRel}
304 # (which gives more fine-grained control like filtering):
305 <dir-to-glslangtests-in-build-dir>/glslangtests
308 Running `runtests` script-backed tests:
315 version of `spirv-val` on the system and the version of glslang. In this
316 case, it is necessary to run `update_glslang_sources.py`. See "Check-Out
324 If you are writing unit tests, please use the Google Test framework and
328 and a subdirectory `baseResults/` that contains the expected results of the
329 tests. Both the tests and `baseResults/` are under source-code control.
332 them, and then compare against the expected results in `baseResults/`. The
334 `gtests/*.FromFile.cpp` source files. `glslangtests` provides a command-line
335 option `--update-mode`, which, if supplied, will overwrite the golden files
341 `localResults/` directory and `diff` them against the `baseResults/`.
346 You can add your own private list of tests, not tracked publicly, by using
347 `localtestlist` to list non-tracked tests. This is automatically read
348 by `runtests` and included in the `diff` and `bump` process.
352 Another piece of software can programmatically translate shaders to an AST
353 using one of two different interfaces:
354 * A new C++ class-oriented interface, or
361 This interface is in roughly the last 1/3 of `ShaderLang.h`. It is in the
362 glslang namespace and contains the following, here with suggested calls
363 for generating SPIR-V:
394 See `ShaderLang.h` and the usage of it in `StandAlone/StandAlone.cpp` for more
396 `setEnvInput, setEnvClient, and setEnvTarget`.
400 This interface is in roughly the first 2/3 of `ShaderLang.h`, and referred to
403 The `Sh*()` interface takes a "compiler" call-back object, which it calls after
404 building call back that is passed the AST and can then execute a back end on it.
406 The following is a simplified resulting run-time call stack:
409 ShCompile(shader, compiler) -> compiler(AST) -> <back end>
412 In practice, `ShCompile()` takes shader strings, default version, and
413 warning/error and other options for controlling compilation.
418 `MachineIndependent/Preprocessor`, and then refined by a GLSL scanner
419 in `MachineIndependent/Scan.cpp`. There is currently no use of flex.
422 aid of a symbol table and an AST. The symbol table is not passed on to
423 the back-end; the intermediate representation stands on its own.
424 The tree is built by the grammar productions, many of which are
425 offloaded into `ParseHelper.cpp`, and by `Intermediate.cpp`.
427 * The intermediate representation is very high-level, and represented
428 as an in-memory tree. This serves to lose no information from the
429 original program, and to have efficient transfer of the result from
430 parsing to the back-end. In the AST, constants are propagated and
431 folded, and a very small amount of dead code is eliminated.
433 To aid linking and reflection, the last top-level branch in the AST
436 * The primary algorithm of the back-end compiler is to traverse the
437 tree (high-level intermediate representation), and create an internal
438 object code representation. There is an example of how to do this
441 * Reduction of the tree to a linear byte-code style low-level intermediate
444 * There is currently some dead old-style linker-type code still lying around.
448 of individual container/contents just few cycles and deallocation free.
449 This pool is popped after the AST is made and processed.
453 - the object comes from the pool (its base class has the macro
454 `POOL_ALLOCATOR_NEW_DELETE` in it) and you do not have to call `delete`
456 - it is a `TString`, in which case call `NewPoolTString()`, which gets
457 it from the pool, and there is no corresponding `delete`
459 - the object does not come from the pool, and you have to do normal
460 C++ memory management of what you `new`
469 [bison-gnu-win32]: http://gnuwin32.sourceforge.net/packages/bison.htm
470 [master-tot-release]: https://github.com/KhronosGroup/glslang/releases/tag/master-tot