Merge pull request #1 from KhronosGroup/master
sync to KhronosGroup/glslang
This commit is contained in:
commit
575f9df9f7
18 changed files with 60 additions and 50 deletions
|
|
@ -142,7 +142,10 @@ if(ENABLE_GLSLANG_JS)
|
||||||
add_compile_options(/Os /GR-)
|
add_compile_options(/Os /GR-)
|
||||||
else()
|
else()
|
||||||
add_compile_options(-Os -fno-exceptions)
|
add_compile_options(-Os -fno-exceptions)
|
||||||
add_link_options(-Os)
|
if(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
|
||||||
|
add_compile_options(-Wno-unused-parameter)
|
||||||
|
add_compile_options(-Wno-unused-variable -Wno-unused-const-variable)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif(ENABLE_GLSLANG_JS)
|
endif(ENABLE_GLSLANG_JS)
|
||||||
|
|
||||||
|
|
@ -150,7 +153,7 @@ endif(ENABLE_GLSLANG_JS)
|
||||||
if(${CMAKE_VERSION} VERSION_LESS 3.1)
|
if(${CMAKE_VERSION} VERSION_LESS 3.1)
|
||||||
# CMake versions before 3.1 do not understand CMAKE_CXX_STANDARD
|
# CMake versions before 3.1 do not understand CMAKE_CXX_STANDARD
|
||||||
# remove this block once CMake >=3.1 has fixated in the ecosystem
|
# remove this block once CMake >=3.1 has fixated in the ecosystem
|
||||||
add_compile_options(-std=c++11)
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||||
else()
|
else()
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
|
||||||
24
README.md
24
README.md
|
|
@ -209,27 +209,29 @@ With no arguments it builds the full grammar, and with a "web" argument,
|
||||||
the web grammar subset (see more about the web subset in the next section).
|
the web grammar subset (see more about the web subset in the next section).
|
||||||
|
|
||||||
### Building to WASM for the Web and Node
|
### Building to WASM for the Web and Node
|
||||||
|
### Building a standalone JS/WASM library for the Web and Node
|
||||||
|
|
||||||
Use the steps in [Build Steps](#build-steps), with the following notes/exceptions:
|
Use the steps in [Build Steps](#build-steps), with the following notes/exceptions:
|
||||||
* For building the web subset of core glslang:
|
* `emsdk` needs to be present in your executable search path, *PATH* for
|
||||||
|
Bash-like environments:
|
||||||
|
+ [Instructions located here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install)
|
||||||
|
* Wrap cmake call: `emcmake cmake`
|
||||||
|
* Set `-DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF`.
|
||||||
|
* Set `-DENABLE_HLSL=OFF` if HLSL is not needed.
|
||||||
|
* For a standalone JS/WASM library, turn on `-DENABLE_GLSLANG_JS=ON`.
|
||||||
|
* For building a minimum-size web subset of core glslang:
|
||||||
|
+ turn on `-DENABLE_GLSLANG_WEBMIN=ON` (disables HLSL)
|
||||||
+ execute `updateGrammar web` from the glslang subdirectory
|
+ execute `updateGrammar web` from the glslang subdirectory
|
||||||
(or if using your own scripts, `m4` needs a `-DGLSLANG_WEB` argument)
|
(or if using your own scripts, `m4` needs a `-DGLSLANG_WEB` argument)
|
||||||
+ set `-DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF`
|
+ optionally, for GLSL compilation error messages, turn on
|
||||||
+ turn on `-DENABLE_GLSLANG_JS=ON`
|
`-DENABLE_GLSLANG_WEBMIN_DEVEL=ON`
|
||||||
+ optionally, for a minimum-size binary, turn on `-DENABLE_GLSLANG_WEBMIN=ON`
|
|
||||||
+ optionally, for GLSL compilation error messages, turn on `-DENABLE_GLSLANG_WEB_DEVEL=ON`
|
|
||||||
* `emsdk` needs to be present in your executable search path, *PATH* for
|
|
||||||
Bash-like environments
|
|
||||||
+ [Instructions located
|
|
||||||
here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install)
|
|
||||||
* Wrap cmake call: `emcmake cmake`
|
|
||||||
* To get a fully minimized build, make sure to use `brotli` to compress the .js
|
* To get a fully minimized build, make sure to use `brotli` to compress the .js
|
||||||
and .wasm files
|
and .wasm files
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
emcmake cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_WEB=ON \
|
emcmake cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON \
|
||||||
-DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF ..
|
-DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF ..
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -946,7 +946,7 @@ public:
|
||||||
bool hasAttachment() const { return false; }
|
bool hasAttachment() const { return false; }
|
||||||
TLayoutFormat getFormat() const { return ElfNone; }
|
TLayoutFormat getFormat() const { return ElfNone; }
|
||||||
bool isPushConstant() const { return false; }
|
bool isPushConstant() const { return false; }
|
||||||
bool isShaderRecordNV() const { return false; }
|
bool isShaderRecord() const { return false; }
|
||||||
bool hasBufferReference() const { return false; }
|
bool hasBufferReference() const { return false; }
|
||||||
bool hasBufferReferenceAlign() const { return false; }
|
bool hasBufferReferenceAlign() const { return false; }
|
||||||
bool isNonUniform() const { return false; }
|
bool isNonUniform() const { return false; }
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
/**
|
/**
|
||||||
This code is based on the glslang_c_interface implementation by Viktor Latypov
|
This code is based on the glslang_c_interface implementation by Viktor Latypov
|
||||||
**/
|
**/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8983,9 +8983,10 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EShLangIntersect:
|
case EShLangIntersect:
|
||||||
if (profile != EEsProfile && version >= 460)
|
if (profile != EEsProfile && version >= 460) {
|
||||||
symbolTable.relateToOperator("reportIntersectionNV", EOpReportIntersection);
|
symbolTable.relateToOperator("reportIntersectionNV", EOpReportIntersection);
|
||||||
symbolTable.relateToOperator("reportIntersectionEXT", EOpReportIntersection);
|
symbolTable.relateToOperator("reportIntersectionEXT", EOpReportIntersection);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case EShLangAnyHit:
|
case EShLangAnyHit:
|
||||||
if (profile != EEsProfile && version >= 460) {
|
if (profile != EEsProfile && version >= 460) {
|
||||||
|
|
|
||||||
|
|
@ -503,7 +503,7 @@ public:
|
||||||
bool getAutoMapBindings() const { return false; }
|
bool getAutoMapBindings() const { return false; }
|
||||||
bool getAutoMapLocations() const { return false; }
|
bool getAutoMapLocations() const { return false; }
|
||||||
int getNumPushConstants() const { return 0; }
|
int getNumPushConstants() const { return 0; }
|
||||||
void addShaderRecordNVCount() { }
|
void addShaderRecordCount() { }
|
||||||
void addTaskNVCount() { }
|
void addTaskNVCount() { }
|
||||||
void setUseVulkanMemoryModel() { }
|
void setUseVulkanMemoryModel() { }
|
||||||
bool usingVulkanMemoryModel() const { return false; }
|
bool usingVulkanMemoryModel() const { return false; }
|
||||||
|
|
|
||||||
|
|
@ -175,7 +175,7 @@ void TConstTraverser::visitConstantUnion(TIntermConstantUnion* node)
|
||||||
if (nodeComps == 1) {
|
if (nodeComps == 1) {
|
||||||
// If there is a single scalar parameter to a matrix
|
// If there is a single scalar parameter to a matrix
|
||||||
// constructor, it is used to initialize all the
|
// constructor, it is used to initialize all the
|
||||||
// components on the matrix’s diagonal, with the
|
// components on the matrix's diagonal, with the
|
||||||
// remaining components initialized to 0.0.
|
// remaining components initialized to 0.0.
|
||||||
if (i == startIndex || (i - startIndex) % (matrixRows + 1) == 0 )
|
if (i == startIndex || (i - startIndex) % (matrixRows + 1) == 0 )
|
||||||
leftUnionArray[i] = rightUnionArray[count];
|
leftUnionArray[i] = rightUnionArray[count];
|
||||||
|
|
|
||||||
|
|
@ -3,27 +3,31 @@ if(ENABLE_GLSLANG_JS)
|
||||||
glslang_set_link_args(glslang.js)
|
glslang_set_link_args(glslang.js)
|
||||||
target_link_libraries(glslang.js glslang SPIRV)
|
target_link_libraries(glslang.js glslang SPIRV)
|
||||||
|
|
||||||
|
# Link library names that start with "-" are treated as link flags.
|
||||||
|
# "-Os" should be OK in MSVC; don't use /Os because CMake won't
|
||||||
|
# treat it as a link flag.
|
||||||
|
target_link_libraries(glslang.js "-Os")
|
||||||
|
|
||||||
if(EMSCRIPTEN)
|
if(EMSCRIPTEN)
|
||||||
set_target_properties(glslang.js PROPERTIES
|
set_target_properties(glslang.js PROPERTIES
|
||||||
OUTPUT_NAME "glslang"
|
OUTPUT_NAME "glslang"
|
||||||
SUFFIX ".js")
|
SUFFIX ".js")
|
||||||
em_link_pre_js(glslang.js "${CMAKE_CURRENT_SOURCE_DIR}/glslang.pre.js")
|
em_link_pre_js(glslang.js "${CMAKE_CURRENT_SOURCE_DIR}/glslang.pre.js")
|
||||||
|
|
||||||
target_link_options(glslang.js PRIVATE "SHELL: -Os")
|
target_link_libraries(glslang.js "--llvm-lto 1")
|
||||||
target_link_options(glslang.js PRIVATE "SHELL: --llvm-lto 1")
|
target_link_libraries(glslang.js "--closure 1")
|
||||||
target_link_options(glslang.js PRIVATE "SHELL: --closure 1")
|
target_link_libraries(glslang.js "-s MODULARIZE=1")
|
||||||
target_link_options(glslang.js PRIVATE "SHELL: -s MODULARIZE=1")
|
target_link_libraries(glslang.js "-s ALLOW_MEMORY_GROWTH=1")
|
||||||
target_link_options(glslang.js PRIVATE "SHELL: -s ALLOW_MEMORY_GROWTH=1")
|
target_link_libraries(glslang.js "-s FILESYSTEM=0")
|
||||||
target_link_options(glslang.js PRIVATE "SHELL: -s FILESYSTEM=0")
|
|
||||||
|
|
||||||
if(ENABLE_EMSCRIPTEN_SINGLE_FILE)
|
if(ENABLE_EMSCRIPTEN_SINGLE_FILE)
|
||||||
target_link_options(glslang.js PRIVATE "SHELL: -s SINGLE_FILE=1")
|
target_link_libraries(glslang.js "-s SINGLE_FILE=1")
|
||||||
endif(ENABLE_EMSCRIPTEN_SINGLE_FILE)
|
endif(ENABLE_EMSCRIPTEN_SINGLE_FILE)
|
||||||
|
|
||||||
if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE)
|
if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE)
|
||||||
target_link_options(glslang.js PRIVATE "SHELL: -s ENVIRONMENT=node -s BINARYEN_ASYNC_COMPILATION=0")
|
target_link_libraries(glslang.js "-s ENVIRONMENT=node -s BINARYEN_ASYNC_COMPILATION=0")
|
||||||
else()
|
else()
|
||||||
target_link_options(glslang.js PRIVATE "SHELL: -s ENVIRONMENT=web,worker")
|
target_link_libraries(glslang.js "-s ENVIRONMENT=web,worker")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE)
|
if(NOT ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue