Update to latest version of SPIRV-Cross.
Add additional SPIRV-Cross header files to ExternalDependencies.xcodeproj to allow browsing these files in Xcode.
This commit is contained in:
parent
f78ab20b79
commit
ba9623cad5
@ -21,7 +21,15 @@ Released TBD
|
||||
- Support maximum point primitive size of 511.
|
||||
- Improved checks for timestamp GPU counter support on older devices.
|
||||
- Update to latest SPIRV-Cross version:
|
||||
- Add support for `OpSpecConstantOp` ops `OpQuantizeToF16` and `OpSRem`.
|
||||
- MSL: Add support for `OpSpecConstantOp` ops `OpQuantizeToF16` and `OpSRem`.
|
||||
- MSL: Return fragment function value even when last SPIR-V Op is discard (`OpKill`).
|
||||
- MSL: Fix location and component variable matching between shader stages.
|
||||
- MSL: Track location component to match vecsize between shader stages.
|
||||
- MSL: Selectively enable `fast-math` in MSL code to match Vulkan CTS results.
|
||||
- MSL: Honor `DecorationNoContraction` when compiling using `fast-math`.
|
||||
- MSL: Honor infinities in `OpQuantizeToF16` when compiling using `fast-math`.
|
||||
- MSL: Support synthetic functions in function constants.
|
||||
- MSL: Improve handling of `INT_MIN/INT64_MIN` literals.
|
||||
|
||||
|
||||
|
||||
|
@ -1226,6 +1226,18 @@
|
||||
A9560DDC25E46D1F008BC84F /* decoration.h in Headers */ = {isa = PBXBuildFile; fileRef = A95604FC25E46D1D008BC84F /* decoration.h */; };
|
||||
A9560DDD25E46D1F008BC84F /* decoration.h in Headers */ = {isa = PBXBuildFile; fileRef = A95604FC25E46D1D008BC84F /* decoration.h */; };
|
||||
A9560DDE25E46D1F008BC84F /* decoration.h in Headers */ = {isa = PBXBuildFile; fileRef = A95604FC25E46D1D008BC84F /* decoration.h */; };
|
||||
A9717C0526EE8C570041AE82 /* spirv_cross_containers.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9717C0326EE8C570041AE82 /* spirv_cross_containers.hpp */; };
|
||||
A9717C0626EE8C570041AE82 /* spirv_cross_containers.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9717C0326EE8C570041AE82 /* spirv_cross_containers.hpp */; };
|
||||
A9717C0726EE8C570041AE82 /* spirv_cross_containers.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9717C0326EE8C570041AE82 /* spirv_cross_containers.hpp */; };
|
||||
A9717C0826EE8C570041AE82 /* spirv_cross_error_handling.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9717C0426EE8C570041AE82 /* spirv_cross_error_handling.hpp */; };
|
||||
A9717C0926EE8C570041AE82 /* spirv_cross_error_handling.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9717C0426EE8C570041AE82 /* spirv_cross_error_handling.hpp */; };
|
||||
A9717C0A26EE8C570041AE82 /* spirv_cross_error_handling.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9717C0426EE8C570041AE82 /* spirv_cross_error_handling.hpp */; };
|
||||
A9717C0C26EE8C730041AE82 /* spirv_cross_util.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9717C0B26EE8C730041AE82 /* spirv_cross_util.hpp */; };
|
||||
A9717C0D26EE8C730041AE82 /* spirv_cross_util.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9717C0B26EE8C730041AE82 /* spirv_cross_util.hpp */; };
|
||||
A9717C0E26EE8C730041AE82 /* spirv_cross_util.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9717C0B26EE8C730041AE82 /* spirv_cross_util.hpp */; };
|
||||
A9717C1026EE8C9D0041AE82 /* spirv.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9717C0F26EE8C9D0041AE82 /* spirv.hpp */; };
|
||||
A9717C1126EE8C9D0041AE82 /* spirv.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9717C0F26EE8C9D0041AE82 /* spirv.hpp */; };
|
||||
A9717C1226EE8C9D0041AE82 /* spirv.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9717C0F26EE8C9D0041AE82 /* spirv.hpp */; };
|
||||
A976290F21CC60BC00B52A68 /* spirv_msl.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A976290221CC60BC00B52A68 /* spirv_msl.hpp */; };
|
||||
A976291021CC60BC00B52A68 /* spirv_msl.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A976290221CC60BC00B52A68 /* spirv_msl.hpp */; };
|
||||
A976291121CC60BC00B52A68 /* spirv_cross.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A976290321CC60BC00B52A68 /* spirv_cross.hpp */; };
|
||||
@ -2025,6 +2037,10 @@
|
||||
A95604FA25E46D1D008BC84F /* validation_state.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validation_state.cpp; sourceTree = "<group>"; };
|
||||
A95604FB25E46D1D008BC84F /* validate_primitives.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_primitives.cpp; sourceTree = "<group>"; };
|
||||
A95604FC25E46D1D008BC84F /* decoration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decoration.h; sourceTree = "<group>"; };
|
||||
A9717C0326EE8C570041AE82 /* spirv_cross_containers.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = spirv_cross_containers.hpp; path = spirv_cross_containers.hpp; sourceTree = "<group>"; };
|
||||
A9717C0426EE8C570041AE82 /* spirv_cross_error_handling.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = spirv_cross_error_handling.hpp; path = spirv_cross_error_handling.hpp; sourceTree = "<group>"; };
|
||||
A9717C0B26EE8C730041AE82 /* spirv_cross_util.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = spirv_cross_util.hpp; path = spirv_cross_util.hpp; sourceTree = "<group>"; };
|
||||
A9717C0F26EE8C9D0041AE82 /* spirv.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = spirv.hpp; path = spirv.hpp; sourceTree = "<group>"; };
|
||||
A972A80F21CECBBF0013AB25 /* libSPIRVTools.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSPIRVTools.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
A972A82321CECBE90013AB25 /* libSPIRVTools.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSPIRVTools.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
A972ABDC21CED7BC0013AB25 /* libglslang.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libglslang.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
@ -2648,8 +2664,11 @@
|
||||
A976290B21CC60BC00B52A68 /* spirv_cfg.cpp */,
|
||||
A976290921CC60BC00B52A68 /* spirv_cfg.hpp */,
|
||||
A976290721CC60BC00B52A68 /* spirv_common.hpp */,
|
||||
A9717C0326EE8C570041AE82 /* spirv_cross_containers.hpp */,
|
||||
A9717C0426EE8C570041AE82 /* spirv_cross_error_handling.hpp */,
|
||||
A976290E21CC60BC00B52A68 /* spirv_cross_parsed_ir.cpp */,
|
||||
A976290821CC60BC00B52A68 /* spirv_cross_parsed_ir.hpp */,
|
||||
A9717C0B26EE8C730041AE82 /* spirv_cross_util.hpp */,
|
||||
A976290521CC60BC00B52A68 /* spirv_cross.cpp */,
|
||||
A976290321CC60BC00B52A68 /* spirv_cross.hpp */,
|
||||
A976290621CC60BC00B52A68 /* spirv_glsl.cpp */,
|
||||
@ -2660,6 +2679,7 @@
|
||||
A976290C21CC60BC00B52A68 /* spirv_parser.hpp */,
|
||||
450A4F64221C5A95007203D7 /* spirv_reflect.cpp */,
|
||||
450A4F63221C5A95007203D7 /* spirv_reflect.hpp */,
|
||||
A9717C0F26EE8C9D0041AE82 /* spirv.hpp */,
|
||||
);
|
||||
path = "SPIRV-Cross";
|
||||
sourceTree = "<group>";
|
||||
@ -3133,6 +3153,10 @@
|
||||
2FEA0CDD2490322B00EEF3AD /* spirv_common.hpp in Headers */,
|
||||
2FEA0CDE2490322B00EEF3AD /* spirv_glsl.hpp in Headers */,
|
||||
2FEA0CDF2490322B00EEF3AD /* spirv_parser.hpp in Headers */,
|
||||
A9717C0D26EE8C730041AE82 /* spirv_cross_util.hpp in Headers */,
|
||||
A9717C0626EE8C570041AE82 /* spirv_cross_containers.hpp in Headers */,
|
||||
A9717C1126EE8C9D0041AE82 /* spirv.hpp in Headers */,
|
||||
A9717C0926EE8C570041AE82 /* spirv_cross_error_handling.hpp in Headers */,
|
||||
2FEA0CE02490322B00EEF3AD /* spirv_cross.hpp in Headers */,
|
||||
2FEA0CE12490322B00EEF3AD /* spirv_msl.hpp in Headers */,
|
||||
2FEA0CE22490322B00EEF3AD /* spirv_reflect.hpp in Headers */,
|
||||
@ -3650,6 +3674,10 @@
|
||||
A976291A21CC60BC00B52A68 /* spirv_common.hpp in Headers */,
|
||||
A976292021CC60BC00B52A68 /* spirv_glsl.hpp in Headers */,
|
||||
A976292421CC60BC00B52A68 /* spirv_parser.hpp in Headers */,
|
||||
A9717C0E26EE8C730041AE82 /* spirv_cross_util.hpp in Headers */,
|
||||
A9717C0726EE8C570041AE82 /* spirv_cross_containers.hpp in Headers */,
|
||||
A9717C1226EE8C9D0041AE82 /* spirv.hpp in Headers */,
|
||||
A9717C0A26EE8C570041AE82 /* spirv_cross_error_handling.hpp in Headers */,
|
||||
A976291221CC60BC00B52A68 /* spirv_cross.hpp in Headers */,
|
||||
A976291021CC60BC00B52A68 /* spirv_msl.hpp in Headers */,
|
||||
450A4F66221C5A95007203D7 /* spirv_reflect.hpp in Headers */,
|
||||
@ -3665,6 +3693,10 @@
|
||||
A976291921CC60BC00B52A68 /* spirv_common.hpp in Headers */,
|
||||
A976291F21CC60BC00B52A68 /* spirv_glsl.hpp in Headers */,
|
||||
A976292321CC60BC00B52A68 /* spirv_parser.hpp in Headers */,
|
||||
A9717C0C26EE8C730041AE82 /* spirv_cross_util.hpp in Headers */,
|
||||
A9717C0526EE8C570041AE82 /* spirv_cross_containers.hpp in Headers */,
|
||||
A9717C1026EE8C9D0041AE82 /* spirv.hpp in Headers */,
|
||||
A9717C0826EE8C570041AE82 /* spirv_cross_error_handling.hpp in Headers */,
|
||||
A976291121CC60BC00B52A68 /* spirv_cross.hpp in Headers */,
|
||||
A976290F21CC60BC00B52A68 /* spirv_msl.hpp in Headers */,
|
||||
450A4F65221C5A95007203D7 /* spirv_reflect.hpp in Headers */,
|
||||
|
@ -124,8 +124,11 @@ if you encounter any building errors, you may need to re-add the *SPIRV-Cross* l
|
||||
spirv_cfg.cpp
|
||||
spirv_cfg.hpp
|
||||
spirv_common.hpp
|
||||
spirv_cross_containers.hpp
|
||||
spirv_cross_error_handling.hpp
|
||||
spirv_cross_parsed_ir.cpp
|
||||
spirv_cross_parsed_ir.hpp
|
||||
spirv_cross_util.hpp
|
||||
spirv_cross.cpp
|
||||
spirv_cross.hpp
|
||||
spirv_glsl.cpp
|
||||
@ -134,6 +137,9 @@ if you encounter any building errors, you may need to re-add the *SPIRV-Cross* l
|
||||
spirv_msl.hpp
|
||||
spirv_parser.cpp
|
||||
spirv_parser.hpp
|
||||
spirv_reflect.cpp
|
||||
spirv_reflect.hpp
|
||||
spirv.hpp
|
||||
|
||||
In the ***Choose options for adding these files*** dialog that opens, select the ***Create groups*** option,
|
||||
add the files to *all* of the `SPIRV-Cross-macOS`, `SPIRV-Cross-iOS`, and `SPIRV-Cross-tvOS` targets,
|
||||
|
@ -1655,6 +1655,7 @@ void MVKGraphicsPipeline::addPrevStageOutputToShaderConversionConfig(SPIRVToMSLC
|
||||
|
||||
mvk::MSLShaderInput si;
|
||||
si.shaderInput.location = shaderOutputs[siIdx].location;
|
||||
si.shaderInput.component = shaderOutputs[siIdx].component;
|
||||
si.shaderInput.builtin = shaderOutputs[siIdx].builtin;
|
||||
si.shaderInput.vecsize = shaderOutputs[siIdx].vecWidth;
|
||||
|
||||
@ -2129,6 +2130,7 @@ namespace SPIRV_CROSS_NAMESPACE {
|
||||
template<class Archive>
|
||||
void serialize(Archive & archive, MSLShaderInput& si) {
|
||||
archive(si.location,
|
||||
si.component,
|
||||
si.format,
|
||||
si.builtin,
|
||||
si.vecsize);
|
||||
|
@ -64,6 +64,9 @@ namespace mvk {
|
||||
/** The location number of the output. */
|
||||
uint32_t location;
|
||||
|
||||
/** The component index of the output. */
|
||||
uint32_t component;
|
||||
|
||||
/** If this is a builtin, the kind of builtin this is. */
|
||||
spv::BuiltIn builtin;
|
||||
|
||||
@ -202,9 +205,13 @@ namespace mvk {
|
||||
isUsed = reflect.has_active_builtin(biType, storage);
|
||||
}
|
||||
uint32_t loc = -1;
|
||||
uint32_t cmp = 0;
|
||||
if (reflect.has_decoration(varID, spv::DecorationLocation)) {
|
||||
loc = reflect.get_decoration(varID, spv::DecorationLocation);
|
||||
}
|
||||
if (reflect.has_decoration(varID, spv::DecorationComponent)) {
|
||||
cmp = reflect.get_decoration(varID, spv::DecorationComponent);
|
||||
}
|
||||
if (model == spv::ExecutionModelTessellationControl && !patch)
|
||||
type = &reflect.get_type(type->parent_type);
|
||||
|
||||
@ -213,8 +220,10 @@ namespace mvk {
|
||||
// Each member may have a location decoration. If not, each member
|
||||
// gets an incrementing location.
|
||||
uint32_t memberLoc = addSat(loc, idx);
|
||||
uint32_t memberCmp = 0;
|
||||
if (reflect.has_member_decoration(type->self, idx, spv::DecorationLocation)) {
|
||||
memberLoc = reflect.get_member_decoration(type->self, idx, spv::DecorationLocation);
|
||||
memberCmp = reflect.get_member_decoration(type->self, idx, spv::DecorationComponent);
|
||||
}
|
||||
patch = patch || reflect.has_member_decoration(type->self, idx, spv::DecorationPatch);
|
||||
if (reflect.has_member_decoration(type->self, idx, spv::DecorationBuiltIn)) {
|
||||
@ -224,26 +233,26 @@ namespace mvk {
|
||||
const SPIRV_CROSS_NAMESPACE::SPIRType& memberType = reflect.get_type(type->member_types[idx]);
|
||||
if (memberType.columns > 1) {
|
||||
for (uint32_t i = 0; i < memberType.columns; i++) {
|
||||
outputs.push_back({memberType.basetype, memberType.vecsize, addSat(memberLoc, i), biType, patch, isUsed});
|
||||
outputs.push_back({memberType.basetype, memberType.vecsize, addSat(memberLoc, i), memberCmp, biType, patch, isUsed});
|
||||
}
|
||||
} else if (!memberType.array.empty()) {
|
||||
for (uint32_t i = 0; i < memberType.array[0]; i++) {
|
||||
outputs.push_back({memberType.basetype, memberType.vecsize, addSat(memberLoc, i), biType, patch, isUsed});
|
||||
outputs.push_back({memberType.basetype, memberType.vecsize, addSat(memberLoc, i), memberCmp, biType, patch, isUsed});
|
||||
}
|
||||
} else {
|
||||
outputs.push_back({memberType.basetype, memberType.vecsize, memberLoc, biType, patch, isUsed});
|
||||
outputs.push_back({memberType.basetype, memberType.vecsize, memberLoc, memberCmp, biType, patch, isUsed});
|
||||
}
|
||||
}
|
||||
} else if (type->columns > 1) {
|
||||
for (uint32_t i = 0; i < type->columns; i++) {
|
||||
outputs.push_back({type->basetype, type->vecsize, addSat(loc, i), biType, patch, isUsed});
|
||||
outputs.push_back({type->basetype, type->vecsize, addSat(loc, i), cmp, biType, patch, isUsed});
|
||||
}
|
||||
} else if (!type->array.empty()) {
|
||||
for (uint32_t i = 0; i < type->array[0]; i++) {
|
||||
outputs.push_back({type->basetype, type->vecsize, addSat(loc, i), biType, patch, isUsed});
|
||||
outputs.push_back({type->basetype, type->vecsize, addSat(loc, i), cmp, biType, patch, isUsed});
|
||||
}
|
||||
} else {
|
||||
outputs.push_back({type->basetype, type->vecsize, loc, biType, patch, isUsed});
|
||||
outputs.push_back({type->basetype, type->vecsize, loc, cmp, biType, patch, isUsed});
|
||||
}
|
||||
}
|
||||
// Sort outputs by ascending location.
|
||||
|
Loading…
x
Reference in New Issue
Block a user