Merge branch 'master' into master

This commit is contained in:
Bill Hollings 2019-03-29 13:06:00 -04:00 committed by GitHub
commit 4183a6489b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 80 additions and 52 deletions

View File

@ -3488,6 +3488,7 @@
BITCODE_GENERATION_MODE = bitcode;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
GCC_PREPROCESSOR_DEFINITIONS = "SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross";
PRODUCT_NAME = SPIRVCross;
SDKROOT = iphoneos;
VALID_ARCHS = arm64;
@ -3501,6 +3502,7 @@
BITCODE_GENERATION_MODE = bitcode;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
GCC_PREPROCESSOR_DEFINITIONS = "SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross";
PRODUCT_NAME = SPIRVCross;
SDKROOT = iphoneos;
VALID_ARCHS = arm64;
@ -3510,6 +3512,7 @@
A90FD9E221CC4EB900B92BB2 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_PREPROCESSOR_DEFINITIONS = "SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross";
PRODUCT_NAME = SPIRVCross;
SDKROOT = macosx;
};
@ -3518,6 +3521,7 @@
A90FD9E321CC4EB900B92BB2 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_PREPROCESSOR_DEFINITIONS = "SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross";
PRODUCT_NAME = SPIRVCross;
SDKROOT = macosx;
};

View File

@ -1 +1 @@
18d4f67a8760e7cd69508d0a03ff19aad216d0b5
5c239b857b1a6504384710e175ce5c1d3d206649

View File

@ -1054,6 +1054,7 @@
buildSettings = {
ARCHS = arm64;
BITCODE_GENERATION_MODE = bitcode;
GCC_PREPROCESSOR_DEFINITIONS = "SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
@ -1066,6 +1067,7 @@
buildSettings = {
ARCHS = arm64;
BITCODE_GENERATION_MODE = bitcode;
GCC_PREPROCESSOR_DEFINITIONS = "SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
@ -1076,6 +1078,7 @@
A9CBEDFF1B6299D800E45FDC /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_PREPROCESSOR_DEFINITIONS = "SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross";
MACOSX_DEPLOYMENT_TARGET = 10.11;
SDKROOT = macosx;
VALID_ARCHS = x86_64;
@ -1085,6 +1088,7 @@
A9CBEE001B6299D800E45FDC /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_PREPROCESSOR_DEFINITIONS = "SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross";
MACOSX_DEPLOYMENT_TARGET = 10.11;
SDKROOT = macosx;
VALID_ARCHS = x86_64;

View File

@ -1092,8 +1092,10 @@ void MVKCmdFillBuffer::setContent(VkBuffer dstBuffer,
void MVKCmdFillBuffer::encode(MVKCommandEncoder* cmdEncoder) {
id<MTLBuffer> dstMTLBuff = _dstBuffer->getMTLBuffer();
VkDeviceSize dstMTLBuffOffset = _dstBuffer->getMTLBufferOffset();
VkDeviceSize byteCnt = (_size == VK_WHOLE_SIZE) ? (_dstBuffer->getByteCount() - (dstMTLBuffOffset + _dstOffset)) : _size;
VkDeviceSize wordCnt = byteCnt >> 2;
VkDeviceSize byteCnt = (_size == VK_WHOLE_SIZE) ? (_dstBuffer->getByteCount() - _dstOffset) : _size;
// Round up in case of VK_WHOLE_SIZE on a buffer size which is not aligned to 4 bytes.
VkDeviceSize wordCnt = (byteCnt + 3) >> 2;
MVKAssert(mvkFits<uint32_t>(wordCnt),
"Buffer fill size must fit into a 32-bit unsigned integer.");

View File

@ -56,6 +56,9 @@ public:
MVKCommandEncoder* cmdEncoder,
MVKCommandUse cmdUse);
/** Returns the intended usage of this buffer. */
VkBufferUsageFlags getUsage() const { return _usage; }
#pragma mark Metal
@ -78,6 +81,8 @@ protected:
bool needsHostReadSync(VkPipelineStageFlags srcStageMask,
VkPipelineStageFlags dstStageMask,
VkBufferMemoryBarrier* pBufferMemoryBarrier);
VkBufferUsageFlags _usage;
};

View File

@ -116,7 +116,7 @@ bool MVKBuffer::needsHostReadSync(VkPipelineStageFlags srcStageMask,
#pragma mark Construction
MVKBuffer::MVKBuffer(MVKDevice* device, const VkBufferCreateInfo* pCreateInfo) : MVKResource(device) {
MVKBuffer::MVKBuffer(MVKDevice* device, const VkBufferCreateInfo* pCreateInfo) : MVKResource(device), _usage(pCreateInfo->usage) {
_byteAlignment = _device->_pMetalFeatures->mtlBufferAlignment;
_byteCount = pCreateInfo->size;
}
@ -142,6 +142,12 @@ id<MTLTexture> MVKBufferView::getMTLTexture() {
width: _textureSize.width
height: _textureSize.height
mipmapped: NO];
mtlTexDesc.storageMode = _buffer->getMTLBuffer().storageMode;
mtlTexDesc.cpuCacheMode = _buffer->getMTLBuffer().cpuCacheMode;
mtlTexDesc.usage = MTLTextureUsageShaderRead;
if ( mvkIsAnyFlagEnabled(_buffer->getUsage(), VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT) ) {
mtlTexDesc.usage |= MTLTextureUsageShaderWrite;
}
_mtlTexture = [_buffer->getMTLBuffer() newTextureWithDescriptor: mtlTexDesc
offset: _mtlBufferOffset
bytesPerRow: _mtlBytesPerRow];

View File

@ -456,16 +456,16 @@ static uint32_t sizeOfOutput(const SPIRVShaderOutput& output) {
// Round up to 4 elements for 3-vectors, since that reflects how Metal lays them out.
if (vecWidth == 3) { vecWidth = 4; }
switch (output.baseType) {
case spirv_cross::SPIRType::SByte:
case spirv_cross::SPIRType::UByte:
case SPIRV_CROSS_NAMESPACE::SPIRType::SByte:
case SPIRV_CROSS_NAMESPACE::SPIRType::UByte:
return 1 * vecWidth;
case spirv_cross::SPIRType::Short:
case spirv_cross::SPIRType::UShort:
case spirv_cross::SPIRType::Half:
case SPIRV_CROSS_NAMESPACE::SPIRType::Short:
case SPIRV_CROSS_NAMESPACE::SPIRType::UShort:
case SPIRV_CROSS_NAMESPACE::SPIRType::Half:
return 2 * vecWidth;
case spirv_cross::SPIRType::Int:
case spirv_cross::SPIRType::UInt:
case spirv_cross::SPIRType::Float:
case SPIRV_CROSS_NAMESPACE::SPIRType::Int:
case SPIRV_CROSS_NAMESPACE::SPIRType::UInt:
case SPIRV_CROSS_NAMESPACE::SPIRType::Float:
default:
return 4 * vecWidth;
}
@ -473,7 +473,7 @@ static uint32_t sizeOfOutput(const SPIRVShaderOutput& output) {
static VkFormat mvkFormatFromOutput(const SPIRVShaderOutput& output) {
switch (output.baseType) {
case spirv_cross::SPIRType::SByte:
case SPIRV_CROSS_NAMESPACE::SPIRType::SByte:
switch (output.vecWidth) {
case 1: return VK_FORMAT_R8_SINT;
case 2: return VK_FORMAT_R8G8_SINT;
@ -481,7 +481,7 @@ static VkFormat mvkFormatFromOutput(const SPIRVShaderOutput& output) {
case 4: return VK_FORMAT_R8G8B8A8_SINT;
}
break;
case spirv_cross::SPIRType::UByte:
case SPIRV_CROSS_NAMESPACE::SPIRType::UByte:
switch (output.vecWidth) {
case 1: return VK_FORMAT_R8_UINT;
case 2: return VK_FORMAT_R8G8_UINT;
@ -489,7 +489,7 @@ static VkFormat mvkFormatFromOutput(const SPIRVShaderOutput& output) {
case 4: return VK_FORMAT_R8G8B8A8_UINT;
}
break;
case spirv_cross::SPIRType::Short:
case SPIRV_CROSS_NAMESPACE::SPIRType::Short:
switch (output.vecWidth) {
case 1: return VK_FORMAT_R16_SINT;
case 2: return VK_FORMAT_R16G16_SINT;
@ -497,7 +497,7 @@ static VkFormat mvkFormatFromOutput(const SPIRVShaderOutput& output) {
case 4: return VK_FORMAT_R16G16B16A16_SINT;
}
break;
case spirv_cross::SPIRType::UShort:
case SPIRV_CROSS_NAMESPACE::SPIRType::UShort:
switch (output.vecWidth) {
case 1: return VK_FORMAT_R16_UINT;
case 2: return VK_FORMAT_R16G16_UINT;
@ -505,7 +505,7 @@ static VkFormat mvkFormatFromOutput(const SPIRVShaderOutput& output) {
case 4: return VK_FORMAT_R16G16B16A16_UINT;
}
break;
case spirv_cross::SPIRType::Half:
case SPIRV_CROSS_NAMESPACE::SPIRType::Half:
switch (output.vecWidth) {
case 1: return VK_FORMAT_R16_SFLOAT;
case 2: return VK_FORMAT_R16G16_SFLOAT;
@ -513,7 +513,7 @@ static VkFormat mvkFormatFromOutput(const SPIRVShaderOutput& output) {
case 4: return VK_FORMAT_R16G16B16A16_SFLOAT;
}
break;
case spirv_cross::SPIRType::Int:
case SPIRV_CROSS_NAMESPACE::SPIRType::Int:
switch (output.vecWidth) {
case 1: return VK_FORMAT_R32_SINT;
case 2: return VK_FORMAT_R32G32_SINT;
@ -521,7 +521,7 @@ static VkFormat mvkFormatFromOutput(const SPIRVShaderOutput& output) {
case 4: return VK_FORMAT_R32G32B32A32_SINT;
}
break;
case spirv_cross::SPIRType::UInt:
case SPIRV_CROSS_NAMESPACE::SPIRType::UInt:
switch (output.vecWidth) {
case 1: return VK_FORMAT_R32_UINT;
case 2: return VK_FORMAT_R32G32_UINT;
@ -529,7 +529,7 @@ static VkFormat mvkFormatFromOutput(const SPIRVShaderOutput& output) {
case 4: return VK_FORMAT_R32G32B32A32_UINT;
}
break;
case spirv_cross::SPIRType::Float:
case SPIRV_CROSS_NAMESPACE::SPIRType::Float:
switch (output.vecWidth) {
case 1: return VK_FORMAT_R32_SFLOAT;
case 2: return VK_FORMAT_R32G32_SFLOAT;

View File

@ -32,8 +32,8 @@ bool getTessReflectionData(const std::vector<uint32_t>& tesc, const std::string&
#ifndef SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS
try {
#endif
spirv_cross::CompilerReflection tescReflect(tesc);
spirv_cross::CompilerReflection teseReflect(tese);
SPIRV_CROSS_NAMESPACE::CompilerReflection tescReflect(tesc);
SPIRV_CROSS_NAMESPACE::CompilerReflection teseReflect(tese);
if (!tescEntryName.empty()) {
tescReflect.set_entry_point(tescEntryName, spv::ExecutionModelTessellationControl);
@ -45,8 +45,8 @@ bool getTessReflectionData(const std::vector<uint32_t>& tesc, const std::string&
tescReflect.compile();
teseReflect.compile();
const spirv_cross::Bitset& tescModes = tescReflect.get_execution_mode_bitset();
const spirv_cross::Bitset& teseModes = teseReflect.get_execution_mode_bitset();
const SPIRV_CROSS_NAMESPACE::Bitset& tescModes = tescReflect.get_execution_mode_bitset();
const SPIRV_CROSS_NAMESPACE::Bitset& teseModes = teseReflect.get_execution_mode_bitset();
// Extract the parameters from the shaders.
if (tescModes.get(spv::ExecutionModeTriangles)) {
@ -110,7 +110,7 @@ bool getTessReflectionData(const std::vector<uint32_t>& tesc, const std::string&
return true;
#ifndef SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS
} catch (spirv_cross::CompilerError& ex) {
} catch (SPIRV_CROSS_NAMESPACE::CompilerError& ex) {
errorLog = ex.what();
return false;
}
@ -122,9 +122,9 @@ bool getShaderOutputs(const std::vector<uint32_t>& spirv, spv::ExecutionModel mo
#ifndef SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS
try {
#endif
spirv_cross::Parser parser(spirv);
SPIRV_CROSS_NAMESPACE::Parser parser(spirv);
parser.parse();
spirv_cross::CompilerReflection reflect(parser.get_parsed_ir());
SPIRV_CROSS_NAMESPACE::CompilerReflection reflect(parser.get_parsed_ir());
if (!entryName.empty()) {
reflect.set_entry_point(entryName, model);
}
@ -133,7 +133,7 @@ bool getShaderOutputs(const std::vector<uint32_t>& spirv, spv::ExecutionModel mo
outputs.clear();
auto addSat = [](uint32_t a, uint32_t b) { return a == uint32_t(-1) ? a : a + b; };
parser.get_parsed_ir().for_each_typed_id<spirv_cross::SPIRVariable>([&reflect, &outputs, model, addSat](uint32_t varID, const spirv_cross::SPIRVariable& var) {
parser.get_parsed_ir().for_each_typed_id<SPIRV_CROSS_NAMESPACE::SPIRVariable>([&reflect, &outputs, model, addSat](uint32_t varID, const SPIRV_CROSS_NAMESPACE::SPIRVariable& var) {
if (var.storage != spv::StorageClassOutput) { return; }
const auto* type = &reflect.get_type(reflect.get_type_from_variable(varID).parent_type);
@ -149,7 +149,7 @@ bool getShaderOutputs(const std::vector<uint32_t>& spirv, spv::ExecutionModel mo
if (model == spv::ExecutionModelTessellationControl && !patch)
type = &reflect.get_type(type->parent_type);
if (type->basetype == spirv_cross::SPIRType::Struct) {
if (type->basetype == SPIRV_CROSS_NAMESPACE::SPIRType::Struct) {
for (uint32_t i = 0; i < type->member_types.size(); i++) {
// Each member may have a location decoration. If not, each member
// gets an incrementing location.
@ -161,7 +161,7 @@ bool getShaderOutputs(const std::vector<uint32_t>& spirv, spv::ExecutionModel mo
if (reflect.has_member_decoration(type->self, i, spv::DecorationBuiltIn)) {
biType = (spv::BuiltIn)reflect.get_member_decoration(type->self, i, spv::DecorationBuiltIn);
}
const spirv_cross::SPIRType& memberType = reflect.get_type(type->member_types[i]);
const SPIRV_CROSS_NAMESPACE::SPIRType& memberType = reflect.get_type(type->member_types[i]);
if (memberType.columns > 1) {
for (uint32_t i = 0; i < memberType.columns; i++) {
outputs.push_back({memberType.basetype, memberType.vecsize, addSat(memberLoc, i), patch, biType});
@ -198,7 +198,7 @@ bool getShaderOutputs(const std::vector<uint32_t>& spirv, spv::ExecutionModel mo
}
return true;
#ifndef SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS
} catch (spirv_cross::CompilerError& ex) {
} catch (SPIRV_CROSS_NAMESPACE::CompilerError& ex) {
errorLog = ex.what();
return false;
}

View File

@ -53,7 +53,7 @@ namespace mvk {
/** Reflection data on a single output of a shader. This contains the information needed to construct a stage-input descriptor for the next stage of a pipeline. */
struct SPIRVShaderOutput {
/** The type of the output. */
spirv_cross::SPIRType::BaseType baseType;
SPIRV_CROSS_NAMESPACE::SPIRType::BaseType baseType;
/** The vector size, if a vector. */
uint32_t vecWidth;

View File

@ -183,7 +183,7 @@ MVK_PUBLIC_SYMBOL void SPIRVToMSLConverterContext::alignWith(const SPIRVToMSLCon
#pragma mark SPIRVToMSLConverter
// Populates the entry point with info extracted from the SPRI-V compiler.
void populateEntryPoint(SPIRVEntryPoint& entryPoint, spirv_cross::Compiler* pCompiler, SPIRVToMSLConverterOptions& options);
void populateEntryPoint(SPIRVEntryPoint& entryPoint, SPIRV_CROSS_NAMESPACE::Compiler* pCompiler, SPIRVToMSLConverterOptions& options);
MVK_PUBLIC_SYMBOL void SPIRVToMSLConverter::setSPIRV(const vector<uint32_t>& spirv) { _spirv = spirv; }
@ -213,12 +213,12 @@ MVK_PUBLIC_SYMBOL bool SPIRVToMSLConverter::convert(SPIRVToMSLConverterContext&
if (shouldLogSPIRV) { logSPIRV("Converting"); }
spirv_cross::CompilerMSL* pMSLCompiler = nullptr;
SPIRV_CROSS_NAMESPACE::CompilerMSL* pMSLCompiler = nullptr;
#ifndef SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS
try {
#endif
pMSLCompiler = new spirv_cross::CompilerMSL(_spirv);
pMSLCompiler = new SPIRV_CROSS_NAMESPACE::CompilerMSL(_spirv);
if (context.options.hasEntryPoint()) {
pMSLCompiler->set_entry_point(context.options.entryPointName, context.options.entryPointStage);
@ -240,10 +240,10 @@ MVK_PUBLIC_SYMBOL bool SPIRVToMSLConverter::convert(SPIRVToMSLConverterContext&
auto mslOpts = pMSLCompiler->get_msl_options();
#if MVK_MACOS
mslOpts.platform = spirv_cross::CompilerMSL::Options::macOS;
mslOpts.platform = SPIRV_CROSS_NAMESPACE::CompilerMSL::Options::macOS;
#endif
#if MVK_IOS
mslOpts.platform = spirv_cross::CompilerMSL::Options::iOS;
mslOpts.platform = SPIRV_CROSS_NAMESPACE::CompilerMSL::Options::iOS;
#endif
mslOpts.msl_version = context.options.mslVersion;
@ -268,7 +268,7 @@ MVK_PUBLIC_SYMBOL bool SPIRVToMSLConverter::convert(SPIRVToMSLConverterContext&
// Add vertex attributes
if (context.stageSupportsVertexAttributes()) {
spirv_cross::MSLVertexAttr va;
SPIRV_CROSS_NAMESPACE::MSLVertexAttr va;
for (auto& ctxVA : context.vertexAttributes) {
va.location = ctxVA.location;
va.msl_buffer = ctxVA.mslBuffer;
@ -277,13 +277,13 @@ MVK_PUBLIC_SYMBOL bool SPIRVToMSLConverter::convert(SPIRVToMSLConverterContext&
va.per_instance = ctxVA.isPerInstance;
switch (ctxVA.format) {
case MSLVertexFormat::Other:
va.format = spirv_cross::MSL_VERTEX_FORMAT_OTHER;
va.format = SPIRV_CROSS_NAMESPACE::MSL_VERTEX_FORMAT_OTHER;
break;
case MSLVertexFormat::UInt8:
va.format = spirv_cross::MSL_VERTEX_FORMAT_UINT8;
va.format = SPIRV_CROSS_NAMESPACE::MSL_VERTEX_FORMAT_UINT8;
break;
case MSLVertexFormat::UInt16:
va.format = spirv_cross::MSL_VERTEX_FORMAT_UINT16;
va.format = SPIRV_CROSS_NAMESPACE::MSL_VERTEX_FORMAT_UINT16;
break;
}
pMSLCompiler->add_msl_vertex_attribute(va);
@ -291,7 +291,7 @@ MVK_PUBLIC_SYMBOL bool SPIRVToMSLConverter::convert(SPIRVToMSLConverterContext&
}
// Add resource bindings
spirv_cross::MSLResourceBinding rb;
SPIRV_CROSS_NAMESPACE::MSLResourceBinding rb;
for (auto& ctxRB : context.resourceBindings) {
rb.desc_set = ctxRB.descriptorSet;
rb.binding = ctxRB.binding;
@ -307,7 +307,7 @@ MVK_PUBLIC_SYMBOL bool SPIRVToMSLConverter::convert(SPIRVToMSLConverterContext&
if (shouldLogMSL) { logSource(_msl, "MSL", "Converted"); }
#ifndef SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS
} catch (spirv_cross::CompilerError& ex) {
} catch (SPIRV_CROSS_NAMESPACE::CompilerError& ex) {
string errMsg("MSL conversion error: ");
errMsg += ex.what();
logError(errMsg.data());
@ -340,12 +340,12 @@ MVK_PUBLIC_SYMBOL bool SPIRVToMSLConverter::convert(SPIRVToMSLConverterContext&
// To check GLSL conversion
if (shouldLogGLSL) {
spirv_cross::CompilerGLSL* pGLSLCompiler = nullptr;
SPIRV_CROSS_NAMESPACE::CompilerGLSL* pGLSLCompiler = nullptr;
#ifndef SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS
try {
#endif
pGLSLCompiler = new spirv_cross::CompilerGLSL(_spirv);
pGLSLCompiler = new SPIRV_CROSS_NAMESPACE::CompilerGLSL(_spirv);
auto options = pGLSLCompiler->get_common_options();
options.vulkan_semantics = true;
options.separate_shader_objects = true;
@ -353,7 +353,7 @@ MVK_PUBLIC_SYMBOL bool SPIRVToMSLConverter::convert(SPIRVToMSLConverterContext&
string glsl = pGLSLCompiler->compile();
logSource(glsl, "GLSL", "Estimated original");
#ifndef SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS
} catch (spirv_cross::CompilerError& ex) {
} catch (SPIRV_CROSS_NAMESPACE::CompilerError& ex) {
string errMsg("Original GLSL extraction error: ");
errMsg += ex.what();
logMsg(errMsg.data());
@ -442,17 +442,17 @@ void SPIRVToMSLConverter::logSource(string& src, const char* srcLang, const char
#pragma mark Support functions
// Populate a workgroup size dimension.
void populateWorkgroupDimension(SPIRVWorkgroupSizeDimension& wgDim, uint32_t size, spirv_cross::SpecializationConstant& spvSpecConst) {
void populateWorkgroupDimension(SPIRVWorkgroupSizeDimension& wgDim, uint32_t size, SPIRV_CROSS_NAMESPACE::SpecializationConstant& spvSpecConst) {
wgDim.size = max(size, 1u);
wgDim.isSpecialized = (spvSpecConst.id != 0);
wgDim.specializationID = spvSpecConst.constant_id;
}
void populateEntryPoint(SPIRVEntryPoint& entryPoint, spirv_cross::Compiler* pCompiler, SPIRVToMSLConverterOptions& options) {
void populateEntryPoint(SPIRVEntryPoint& entryPoint, SPIRV_CROSS_NAMESPACE::Compiler* pCompiler, SPIRVToMSLConverterOptions& options) {
if ( !pCompiler ) { return; }
spirv_cross::SPIREntryPoint spvEP;
SPIRV_CROSS_NAMESPACE::SPIREntryPoint spvEP;
if (options.hasEntryPoint()) {
spvEP = pCompiler->get_entry_point(options.entryPointName, options.entryPointStage);
} else {
@ -463,7 +463,7 @@ void populateEntryPoint(SPIRVEntryPoint& entryPoint, spirv_cross::Compiler* pCom
}
}
spirv_cross::SpecializationConstant widthSC, heightSC, depthSC;
SPIRV_CROSS_NAMESPACE::SpecializationConstant widthSC, heightSC, depthSC;
pCompiler->get_work_group_size_specialization_constants(widthSC, heightSC, depthSC);
entryPoint.mtlFunctionName = spvEP.name;

View File

@ -717,6 +717,7 @@
BITCODE_GENERATION_MODE = bitcode;
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = NO;
CLANG_WARN_UNREACHABLE_CODE = NO;
GCC_PREPROCESSOR_DEFINITIONS = "SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross";
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_CHECK_SWITCH_STATEMENTS = NO;
GCC_WARN_UNUSED_PARAMETER = NO;
@ -735,6 +736,7 @@
BITCODE_GENERATION_MODE = bitcode;
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = NO;
CLANG_WARN_UNREACHABLE_CODE = NO;
GCC_PREPROCESSOR_DEFINITIONS = "SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross";
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_CHECK_SWITCH_STATEMENTS = NO;
GCC_WARN_UNUSED_PARAMETER = NO;
@ -751,6 +753,7 @@
buildSettings = {
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = NO;
CLANG_WARN_UNREACHABLE_CODE = NO;
GCC_PREPROCESSOR_DEFINITIONS = "SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross";
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_CHECK_SWITCH_STATEMENTS = NO;
GCC_WARN_UNUSED_PARAMETER = NO;
@ -769,6 +772,7 @@
buildSettings = {
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = NO;
CLANG_WARN_UNREACHABLE_CODE = NO;
GCC_PREPROCESSOR_DEFINITIONS = "SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross";
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_CHECK_SWITCH_STATEMENTS = NO;
GCC_WARN_UNUSED_PARAMETER = NO;
@ -787,6 +791,7 @@
buildSettings = {
ARCHS = arm64;
BITCODE_GENERATION_MODE = bitcode;
GCC_PREPROCESSOR_DEFINITIONS = "SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross";
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
HEADER_SEARCH_PATHS = (
"$(inherited)",
@ -807,6 +812,7 @@
buildSettings = {
ARCHS = arm64;
BITCODE_GENERATION_MODE = bitcode;
GCC_PREPROCESSOR_DEFINITIONS = "SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross";
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
HEADER_SEARCH_PATHS = (
"$(inherited)",
@ -825,6 +831,7 @@
A93903C51C57E9ED00FE90DC /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_PREPROCESSOR_DEFINITIONS = "SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross";
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
HEADER_SEARCH_PATHS = (
"$(inherited)",
@ -841,6 +848,7 @@
A93903C61C57E9ED00FE90DC /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_PREPROCESSOR_DEFINITIONS = "SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross";
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
HEADER_SEARCH_PATHS = (
"$(inherited)",
@ -884,7 +892,6 @@
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
"SPIRV_CROSS_FLT_FMT=\\\"%.6g\\\"",
);
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@ -939,7 +946,7 @@
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = fast;
GCC_PREPROCESSOR_DEFINITIONS = "SPIRV_CROSS_FLT_FMT=\\\"%.6g\\\"";
GCC_PREPROCESSOR_DEFINITIONS = "";
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;