2017-11-17 11:14:29 -05:00
|
|
|
// !$*UTF8*$!
|
|
|
|
{
|
|
|
|
archiveVersion = 1;
|
|
|
|
classes = {
|
|
|
|
};
|
2023-06-23 10:24:35 -04:00
|
|
|
objectVersion = 54;
|
2017-11-17 11:14:29 -05:00
|
|
|
objects = {
|
|
|
|
|
|
|
|
/* Begin PBXBuildFile section */
|
2020-06-09 14:52:03 -07:00
|
|
|
2FEA0D012490381A00EEF3AD /* SPIRVReflection.h in Headers */ = {isa = PBXBuildFile; fileRef = 450A4F5E220CB180007203D7 /* SPIRVReflection.h */; };
|
|
|
|
2FEA0D022490381A00EEF3AD /* MVKStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = A98149651FB6A98A005F00B4 /* MVKStrings.h */; };
|
|
|
|
2FEA0D042490381A00EEF3AD /* SPIRVConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A928C9171D0488DC00071B88 /* SPIRVConversion.h */; };
|
|
|
|
2FEA0D052490381A00EEF3AD /* SPIRVToMSLConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = A9093F5B1C58013E0094110D /* SPIRVToMSLConverter.h */; };
|
|
|
|
2FEA0D062490381A00EEF3AD /* MVKCommonEnvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F042AA1FB4D060009FCCB8 /* MVKCommonEnvironment.h */; };
|
|
|
|
2FEA0D082490381A00EEF3AD /* FileSupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = A925B70A1C7754B2006E7ECD /* FileSupport.mm */; };
|
|
|
|
2FEA0D092490381A00EEF3AD /* SPIRVToMSLConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9093F5A1C58013E0094110D /* SPIRVToMSLConverter.cpp */; };
|
|
|
|
2FEA0D0B2490381A00EEF3AD /* SPIRVConversion.mm in Sources */ = {isa = PBXBuildFile; fileRef = A928C9181D0488DC00071B88 /* SPIRVConversion.mm */; };
|
Add support for tessellation.
At long last, tessellation comes to MoltenVK! With this change, clients
will now be able to specify tessellation shaders when creating
pipelines, and then draw tessellated patches with them.
Unfortunately, there seem to be a few gotchas with tessellation in
Metal. For one thing, tessellation pipelines in Metal are structured
very differently from Vulkan. There is no tessellation control or even
vertex stage. Instead, the tessellation evaluation shader takes the
place of the vertex function as a "post-tessellation vertex function."
The tessellation levels are supplied in a buffer to the tessellator,
which you are expected to populate. The most common way to do this is by
running a compute shader. MoltenVK thus runs the vertex shader and
tessellation control shader by themselves; a single `VkPipeline` object
then requires at least *three* `MTLPipelineState` objects.
But wait, there's more! The tessellation-control-as-compute stage uses
Metal's support for vertex-style stage input to a compute shader. But,
this support requires one to declare indexing *ahead of time*, when the
pipeline state is created. So a single `VkPipeline` object could have as
many as *five* `MTLPipelineState` objects.
Further, if there are more output than input control points for the
tessellation control stage, then later invocations may end up fetching
the wrong attributes! To get around this, this change uses index buffers
to ensure that all tessellation control shaders see the correct input.
Unfortunately, in the indexed draw case, this means that the incoming
index buffer needs to be munged.
Instancing is another pain point here. In Vulkan, as in OpenGL and
Direct3D, instancing is done in the vertex shader; but in Metal, it is
done at the tessellation evaluation stage. For this reason, only the
vertex stage of a tessellated draw supports instancing. Additional
memory is required to hold data for the extra vertices generated by
instancing. This also requires still more munging of index buffers for
indexed draws.
Indirect draws are even more painful. Because the number of vertices and
instances is unknown, storage for the maximum possible number of
vertices must be allocated. This change imposes a totally arbitrary
limit of 131072 vertices from a single draw, including all vertices
generated by instancing. On a Mac, this requires about 194-256 MB of
VRAM for all the temporary buffers.
There are some possible optimizations here. If we could prove that the
vertex shader's output doesn't depend on the instance ID, either
directly or through a per-instance attribute, then we could avoid
running the vertex and tess. control stages per instance, and take
advantage of Metal's support for tess. eval instancing. If we could
also prove that the vertex shader simply passes instance attributes
through (similarly with the tess. control shader), we could do this for
many more instanced draws as well. It should also be possible to cache
the output from the tess. control stage; if the draw comes up again, we
can then skip the vertex and tess. control stages entirely!
Fixes #56 and #501.
2019-02-18 20:56:42 -06:00
|
|
|
450A4F61220CB180007203D7 /* SPIRVReflection.h in Headers */ = {isa = PBXBuildFile; fileRef = 450A4F5E220CB180007203D7 /* SPIRVReflection.h */; };
|
|
|
|
450A4F62220CB180007203D7 /* SPIRVReflection.h in Headers */ = {isa = PBXBuildFile; fileRef = 450A4F5E220CB180007203D7 /* SPIRVReflection.h */; };
|
2017-11-17 11:14:29 -05:00
|
|
|
A909408A1C58013E0094110D /* SPIRVToMSLConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9093F5A1C58013E0094110D /* SPIRVToMSLConverter.cpp */; };
|
|
|
|
A909408B1C58013E0094110D /* SPIRVToMSLConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9093F5A1C58013E0094110D /* SPIRVToMSLConverter.cpp */; };
|
2019-02-18 22:19:37 +00:00
|
|
|
A909408C1C58013E0094110D /* SPIRVToMSLConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = A9093F5B1C58013E0094110D /* SPIRVToMSLConverter.h */; };
|
|
|
|
A909408D1C58013E0094110D /* SPIRVToMSLConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = A9093F5B1C58013E0094110D /* SPIRVToMSLConverter.h */; };
|
2020-09-23 11:09:46 -04:00
|
|
|
A920A8A3251B75B70076851C /* GLSLToSPIRVConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A920A89F251B75B70076851C /* GLSLToSPIRVConverter.cpp */; };
|
|
|
|
A920A8A4251B75B70076851C /* GLSLToSPIRVConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A920A89F251B75B70076851C /* GLSLToSPIRVConverter.cpp */; };
|
|
|
|
A920A8A5251B75B70076851C /* GLSLToSPIRVConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A920A89F251B75B70076851C /* GLSLToSPIRVConverter.cpp */; };
|
|
|
|
A920A8A6251B75B70076851C /* GLSLConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A920A8A0251B75B70076851C /* GLSLConversion.h */; };
|
|
|
|
A920A8A7251B75B70076851C /* GLSLConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A920A8A0251B75B70076851C /* GLSLConversion.h */; };
|
|
|
|
A920A8A8251B75B70076851C /* GLSLConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A920A8A0251B75B70076851C /* GLSLConversion.h */; };
|
|
|
|
A920A8A9251B75B70076851C /* GLSLConversion.mm in Sources */ = {isa = PBXBuildFile; fileRef = A920A8A1251B75B70076851C /* GLSLConversion.mm */; };
|
|
|
|
A920A8AA251B75B70076851C /* GLSLConversion.mm in Sources */ = {isa = PBXBuildFile; fileRef = A920A8A1251B75B70076851C /* GLSLConversion.mm */; };
|
|
|
|
A920A8AB251B75B70076851C /* GLSLConversion.mm in Sources */ = {isa = PBXBuildFile; fileRef = A920A8A1251B75B70076851C /* GLSLConversion.mm */; };
|
|
|
|
A920A8AC251B75B70076851C /* GLSLToSPIRVConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = A920A8A2251B75B70076851C /* GLSLToSPIRVConverter.h */; };
|
|
|
|
A920A8AD251B75B80076851C /* GLSLToSPIRVConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = A920A8A2251B75B70076851C /* GLSLToSPIRVConverter.h */; };
|
|
|
|
A920A8AE251B75B80076851C /* GLSLToSPIRVConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = A920A8A2251B75B70076851C /* GLSLToSPIRVConverter.h */; };
|
|
|
|
A920A8AF251B77900076851C /* glslang.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A98386FD24EEE93700199A05 /* glslang.xcframework */; };
|
|
|
|
A920A8B0251B77910076851C /* glslang.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A98386FD24EEE93700199A05 /* glslang.xcframework */; };
|
|
|
|
A920A8B1251B77920076851C /* glslang.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A98386FD24EEE93700199A05 /* glslang.xcframework */; };
|
|
|
|
A925B71B1C78DEB2006E7ECD /* libMoltenVKShaderConverter.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A93903C71C57E9ED00FE90DC /* libMoltenVKShaderConverter.a */; };
|
2019-02-18 22:19:37 +00:00
|
|
|
A928C9191D0488DC00071B88 /* SPIRVConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A928C9171D0488DC00071B88 /* SPIRVConversion.h */; };
|
|
|
|
A928C91A1D0488DC00071B88 /* SPIRVConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A928C9171D0488DC00071B88 /* SPIRVConversion.h */; };
|
2017-11-17 11:14:29 -05:00
|
|
|
A928C91B1D0488DC00071B88 /* SPIRVConversion.mm in Sources */ = {isa = PBXBuildFile; fileRef = A928C9181D0488DC00071B88 /* SPIRVConversion.mm */; };
|
|
|
|
A928C91C1D0488DC00071B88 /* SPIRVConversion.mm in Sources */ = {isa = PBXBuildFile; fileRef = A928C9181D0488DC00071B88 /* SPIRVConversion.mm */; };
|
2018-01-08 21:44:46 -05:00
|
|
|
A95096BB2003D00300F10950 /* FileSupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = A925B70A1C7754B2006E7ECD /* FileSupport.mm */; };
|
|
|
|
A95096BC2003D00300F10950 /* FileSupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = A925B70A1C7754B2006E7ECD /* FileSupport.mm */; };
|
2019-03-22 19:36:21 -04:00
|
|
|
A95096BF2003D32400F10950 /* OSSupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = A95096BD2003D32400F10950 /* OSSupport.mm */; };
|
2021-06-10 15:56:58 -04:00
|
|
|
A9546B252672A3B8004BA3E6 /* SPIRVSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9546B232672A3B8004BA3E6 /* SPIRVSupport.cpp */; };
|
|
|
|
A9546B262672A3B8004BA3E6 /* SPIRVSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9546B232672A3B8004BA3E6 /* SPIRVSupport.cpp */; };
|
|
|
|
A9546B272672A3B8004BA3E6 /* SPIRVSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9546B232672A3B8004BA3E6 /* SPIRVSupport.cpp */; };
|
|
|
|
A9546B282672A3B8004BA3E6 /* SPIRVSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9546B232672A3B8004BA3E6 /* SPIRVSupport.cpp */; };
|
|
|
|
A9546B292672A3B8004BA3E6 /* SPIRVSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = A9546B242672A3B8004BA3E6 /* SPIRVSupport.h */; };
|
|
|
|
A9546B2A2672A3B8004BA3E6 /* SPIRVSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = A9546B242672A3B8004BA3E6 /* SPIRVSupport.h */; };
|
|
|
|
A9546B2B2672A3B8004BA3E6 /* SPIRVSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = A9546B242672A3B8004BA3E6 /* SPIRVSupport.h */; };
|
2017-11-17 11:14:29 -05:00
|
|
|
A97CC7401C7527F3004A5C7E /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97CC73D1C7527F3004A5C7E /* main.cpp */; };
|
|
|
|
A97CC7411C7527F3004A5C7E /* MoltenVKShaderConverterTool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97CC73E1C7527F3004A5C7E /* MoltenVKShaderConverterTool.cpp */; };
|
|
|
|
A98149681FB6A98A005F00B4 /* MVKStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = A98149651FB6A98A005F00B4 /* MVKStrings.h */; };
|
|
|
|
A98149691FB6A98A005F00B4 /* MVKStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = A98149651FB6A98A005F00B4 /* MVKStrings.h */; };
|
2020-08-20 15:24:35 -04:00
|
|
|
A98386FA24EEE91A00199A05 /* SPIRVCross.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A98386F824EEE91A00199A05 /* SPIRVCross.xcframework */; };
|
|
|
|
A98386FB24EEE91A00199A05 /* SPIRVCross.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A98386F824EEE91A00199A05 /* SPIRVCross.xcframework */; };
|
|
|
|
A98386FC24EEE91A00199A05 /* SPIRVCross.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A98386F824EEE91A00199A05 /* SPIRVCross.xcframework */; };
|
|
|
|
A983870724EEE94800199A05 /* SPIRVTools.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A983870224EEE94800199A05 /* SPIRVTools.xcframework */; };
|
|
|
|
A983870824EEE94800199A05 /* SPIRVTools.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A983870224EEE94800199A05 /* SPIRVTools.xcframework */; };
|
|
|
|
A983870924EEE94800199A05 /* SPIRVTools.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A983870224EEE94800199A05 /* SPIRVTools.xcframework */; };
|
2019-03-22 19:36:21 -04:00
|
|
|
A9A14E332244388700C080F3 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9A14E322244388700C080F3 /* Metal.framework */; };
|
2019-04-11 14:26:35 -04:00
|
|
|
A9B51BDD225E98BB00AC74D2 /* MVKOSExtensions.mm in Sources */ = {isa = PBXBuildFile; fileRef = A9B51BDB225E98BB00AC74D2 /* MVKOSExtensions.mm */; };
|
2017-11-17 11:14:29 -05:00
|
|
|
A9F042B21FB4D060009FCCB8 /* MVKCommonEnvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F042AA1FB4D060009FCCB8 /* MVKCommonEnvironment.h */; };
|
|
|
|
A9F042B31FB4D060009FCCB8 /* MVKCommonEnvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F042AA1FB4D060009FCCB8 /* MVKCommonEnvironment.h */; };
|
2023-06-23 10:24:35 -04:00
|
|
|
DCFD7F712A45BDA0007BBBF7 /* SPIRVReflection.h in Headers */ = {isa = PBXBuildFile; fileRef = 450A4F5E220CB180007203D7 /* SPIRVReflection.h */; };
|
|
|
|
DCFD7F722A45BDA0007BBBF7 /* GLSLConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A920A8A0251B75B70076851C /* GLSLConversion.h */; };
|
|
|
|
DCFD7F732A45BDA0007BBBF7 /* MVKStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = A98149651FB6A98A005F00B4 /* MVKStrings.h */; };
|
|
|
|
DCFD7F742A45BDA0007BBBF7 /* SPIRVSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = A9546B242672A3B8004BA3E6 /* SPIRVSupport.h */; };
|
|
|
|
DCFD7F752A45BDA0007BBBF7 /* SPIRVConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A928C9171D0488DC00071B88 /* SPIRVConversion.h */; };
|
|
|
|
DCFD7F762A45BDA0007BBBF7 /* GLSLToSPIRVConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = A920A8A2251B75B70076851C /* GLSLToSPIRVConverter.h */; };
|
|
|
|
DCFD7F772A45BDA0007BBBF7 /* SPIRVToMSLConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = A9093F5B1C58013E0094110D /* SPIRVToMSLConverter.h */; };
|
|
|
|
DCFD7F782A45BDA0007BBBF7 /* MVKCommonEnvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F042AA1FB4D060009FCCB8 /* MVKCommonEnvironment.h */; };
|
|
|
|
DCFD7F7A2A45BDA0007BBBF7 /* FileSupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = A925B70A1C7754B2006E7ECD /* FileSupport.mm */; };
|
|
|
|
DCFD7F7B2A45BDA0007BBBF7 /* GLSLConversion.mm in Sources */ = {isa = PBXBuildFile; fileRef = A920A8A1251B75B70076851C /* GLSLConversion.mm */; };
|
|
|
|
DCFD7F7C2A45BDA0007BBBF7 /* GLSLToSPIRVConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A920A89F251B75B70076851C /* GLSLToSPIRVConverter.cpp */; };
|
|
|
|
DCFD7F7D2A45BDA0007BBBF7 /* SPIRVToMSLConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9093F5A1C58013E0094110D /* SPIRVToMSLConverter.cpp */; };
|
|
|
|
DCFD7F7E2A45BDA0007BBBF7 /* SPIRVConversion.mm in Sources */ = {isa = PBXBuildFile; fileRef = A928C9181D0488DC00071B88 /* SPIRVConversion.mm */; };
|
|
|
|
DCFD7F7F2A45BDA0007BBBF7 /* SPIRVSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9546B232672A3B8004BA3E6 /* SPIRVSupport.cpp */; };
|
|
|
|
DCFD7F812A45BDA0007BBBF7 /* SPIRVTools.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A983870224EEE94800199A05 /* SPIRVTools.xcframework */; };
|
|
|
|
DCFD7F822A45BDA0007BBBF7 /* SPIRVCross.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A98386F824EEE91A00199A05 /* SPIRVCross.xcframework */; };
|
|
|
|
DCFD7F832A45BDA0007BBBF7 /* glslang.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A98386FD24EEE93700199A05 /* glslang.xcframework */; };
|
2017-11-17 11:14:29 -05:00
|
|
|
/* End PBXBuildFile section */
|
|
|
|
|
|
|
|
/* Begin PBXContainerItemProxy section */
|
|
|
|
A925B71C1C78DEBF006E7ECD /* PBXContainerItemProxy */ = {
|
|
|
|
isa = PBXContainerItemProxy;
|
|
|
|
containerPortal = A9F55D25198BE6A7004EC31B /* Project object */;
|
|
|
|
proxyType = 1;
|
|
|
|
remoteGlobalIDString = A93903C01C57E9ED00FE90DC;
|
|
|
|
remoteInfo = "MoltenVKSPIRVToMSLConverter-macOS";
|
|
|
|
};
|
|
|
|
/* End PBXContainerItemProxy section */
|
|
|
|
|
|
|
|
/* Begin PBXFileReference section */
|
2020-09-23 11:09:46 -04:00
|
|
|
2FEA0D142490381A00EEF3AD /* libMoltenVKShaderConverter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMoltenVKShaderConverter.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
Add support for tessellation.
At long last, tessellation comes to MoltenVK! With this change, clients
will now be able to specify tessellation shaders when creating
pipelines, and then draw tessellated patches with them.
Unfortunately, there seem to be a few gotchas with tessellation in
Metal. For one thing, tessellation pipelines in Metal are structured
very differently from Vulkan. There is no tessellation control or even
vertex stage. Instead, the tessellation evaluation shader takes the
place of the vertex function as a "post-tessellation vertex function."
The tessellation levels are supplied in a buffer to the tessellator,
which you are expected to populate. The most common way to do this is by
running a compute shader. MoltenVK thus runs the vertex shader and
tessellation control shader by themselves; a single `VkPipeline` object
then requires at least *three* `MTLPipelineState` objects.
But wait, there's more! The tessellation-control-as-compute stage uses
Metal's support for vertex-style stage input to a compute shader. But,
this support requires one to declare indexing *ahead of time*, when the
pipeline state is created. So a single `VkPipeline` object could have as
many as *five* `MTLPipelineState` objects.
Further, if there are more output than input control points for the
tessellation control stage, then later invocations may end up fetching
the wrong attributes! To get around this, this change uses index buffers
to ensure that all tessellation control shaders see the correct input.
Unfortunately, in the indexed draw case, this means that the incoming
index buffer needs to be munged.
Instancing is another pain point here. In Vulkan, as in OpenGL and
Direct3D, instancing is done in the vertex shader; but in Metal, it is
done at the tessellation evaluation stage. For this reason, only the
vertex stage of a tessellated draw supports instancing. Additional
memory is required to hold data for the extra vertices generated by
instancing. This also requires still more munging of index buffers for
indexed draws.
Indirect draws are even more painful. Because the number of vertices and
instances is unknown, storage for the maximum possible number of
vertices must be allocated. This change imposes a totally arbitrary
limit of 131072 vertices from a single draw, including all vertices
generated by instancing. On a Mac, this requires about 194-256 MB of
VRAM for all the temporary buffers.
There are some possible optimizations here. If we could prove that the
vertex shader's output doesn't depend on the instance ID, either
directly or through a per-instance attribute, then we could avoid
running the vertex and tess. control stages per instance, and take
advantage of Metal's support for tess. eval instancing. If we could
also prove that the vertex shader simply passes instance attributes
through (similarly with the tess. control shader), we could do this for
many more instanced draws as well. It should also be possible to cache
the output from the tess. control stage; if the draw comes up again, we
can then skip the vertex and tess. control stages entirely!
Fixes #56 and #501.
2019-02-18 20:56:42 -06:00
|
|
|
450A4F5E220CB180007203D7 /* SPIRVReflection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPIRVReflection.h; sourceTree = "<group>"; };
|
2017-11-17 11:14:29 -05:00
|
|
|
A9093F5A1C58013E0094110D /* SPIRVToMSLConverter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SPIRVToMSLConverter.cpp; sourceTree = "<group>"; };
|
|
|
|
A9093F5B1C58013E0094110D /* SPIRVToMSLConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPIRVToMSLConverter.h; sourceTree = "<group>"; };
|
2020-09-23 11:09:46 -04:00
|
|
|
A920A89F251B75B70076851C /* GLSLToSPIRVConverter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GLSLToSPIRVConverter.cpp; sourceTree = "<group>"; };
|
|
|
|
A920A8A0251B75B70076851C /* GLSLConversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLSLConversion.h; sourceTree = "<group>"; };
|
|
|
|
A920A8A1251B75B70076851C /* GLSLConversion.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GLSLConversion.mm; sourceTree = "<group>"; };
|
|
|
|
A920A8A2251B75B70076851C /* GLSLToSPIRVConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLSLToSPIRVConverter.h; sourceTree = "<group>"; };
|
2017-11-17 11:14:29 -05:00
|
|
|
A925B70A1C7754B2006E7ECD /* FileSupport.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FileSupport.mm; sourceTree = "<group>"; };
|
|
|
|
A925B70B1C7754B2006E7ECD /* FileSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileSupport.h; sourceTree = "<group>"; };
|
|
|
|
A928C9171D0488DC00071B88 /* SPIRVConversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPIRVConversion.h; sourceTree = "<group>"; };
|
|
|
|
A928C9181D0488DC00071B88 /* SPIRVConversion.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SPIRVConversion.mm; sourceTree = "<group>"; };
|
2020-09-23 11:09:46 -04:00
|
|
|
A93903BF1C57E9D700FE90DC /* libMoltenVKShaderConverter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMoltenVKShaderConverter.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
|
|
A93903C71C57E9ED00FE90DC /* libMoltenVKShaderConverter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMoltenVKShaderConverter.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
2019-03-22 19:36:21 -04:00
|
|
|
A95096BD2003D32400F10950 /* OSSupport.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OSSupport.mm; sourceTree = "<group>"; };
|
|
|
|
A95096BE2003D32400F10950 /* OSSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OSSupport.h; sourceTree = "<group>"; };
|
2021-06-10 15:56:58 -04:00
|
|
|
A9546B232672A3B8004BA3E6 /* SPIRVSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SPIRVSupport.cpp; sourceTree = "<group>"; };
|
|
|
|
A9546B242672A3B8004BA3E6 /* SPIRVSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPIRVSupport.h; sourceTree = "<group>"; };
|
2017-11-17 11:14:29 -05:00
|
|
|
A964BD5F1C57EFBD00D930D8 /* MoltenVKShaderConverter */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = MoltenVKShaderConverter; sourceTree = BUILT_PRODUCTS_DIR; };
|
2024-03-07 17:54:28 -05:00
|
|
|
A979A9412B9A200400F69E67 /* libMoltenVKShaderConverter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMoltenVKShaderConverter.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
2017-11-17 11:14:29 -05:00
|
|
|
A97CC73D1C7527F3004A5C7E /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
|
|
|
|
A97CC73E1C7527F3004A5C7E /* MoltenVKShaderConverterTool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MoltenVKShaderConverterTool.cpp; sourceTree = "<group>"; };
|
|
|
|
A97CC73F1C7527F3004A5C7E /* MoltenVKShaderConverterTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MoltenVKShaderConverterTool.h; sourceTree = "<group>"; };
|
|
|
|
A98149651FB6A98A005F00B4 /* MVKStrings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MVKStrings.h; sourceTree = "<group>"; };
|
2020-08-27 19:29:14 -04:00
|
|
|
A98386F824EEE91A00199A05 /* SPIRVCross.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = SPIRVCross.xcframework; sourceTree = "<group>"; };
|
|
|
|
A98386FD24EEE93700199A05 /* glslang.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = glslang.xcframework; sourceTree = "<group>"; };
|
|
|
|
A983870224EEE94800199A05 /* SPIRVTools.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = SPIRVTools.xcframework; sourceTree = "<group>"; };
|
2019-03-22 19:36:21 -04:00
|
|
|
A9A14E322244388700C080F3 /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; };
|
2019-04-11 14:26:35 -04:00
|
|
|
A9B51BDB225E98BB00AC74D2 /* MVKOSExtensions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MVKOSExtensions.mm; sourceTree = "<group>"; };
|
|
|
|
A9B51BDC225E98BB00AC74D2 /* MVKOSExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MVKOSExtensions.h; sourceTree = "<group>"; };
|
2017-11-17 11:14:29 -05:00
|
|
|
A9F042AA1FB4D060009FCCB8 /* MVKCommonEnvironment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MVKCommonEnvironment.h; sourceTree = "<group>"; };
|
|
|
|
/* End PBXFileReference section */
|
|
|
|
|
|
|
|
/* Begin PBXFrameworksBuildPhase section */
|
2020-06-09 14:52:03 -07:00
|
|
|
2FEA0D0C2490381A00EEF3AD /* Frameworks */ = {
|
|
|
|
isa = PBXFrameworksBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
2020-08-20 15:24:35 -04:00
|
|
|
A983870824EEE94800199A05 /* SPIRVTools.xcframework in Frameworks */,
|
|
|
|
A98386FB24EEE91A00199A05 /* SPIRVCross.xcframework in Frameworks */,
|
2020-09-23 11:09:46 -04:00
|
|
|
A920A8B0251B77910076851C /* glslang.xcframework in Frameworks */,
|
2020-06-09 14:52:03 -07:00
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
};
|
2017-11-17 11:14:29 -05:00
|
|
|
A9092A8A1A81717B00051823 /* Frameworks */ = {
|
|
|
|
isa = PBXFrameworksBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
2019-03-22 19:36:21 -04:00
|
|
|
A9A14E332244388700C080F3 /* Metal.framework in Frameworks */,
|
2020-09-23 11:09:46 -04:00
|
|
|
A925B71B1C78DEB2006E7ECD /* libMoltenVKShaderConverter.a in Frameworks */,
|
2018-12-24 19:11:15 -05:00
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
};
|
|
|
|
A972AD2E21CEE6F50013AB25 /* Frameworks */ = {
|
|
|
|
isa = PBXFrameworksBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
2020-08-20 15:24:35 -04:00
|
|
|
A983870724EEE94800199A05 /* SPIRVTools.xcframework in Frameworks */,
|
|
|
|
A98386FA24EEE91A00199A05 /* SPIRVCross.xcframework in Frameworks */,
|
2020-09-23 11:09:46 -04:00
|
|
|
A920A8AF251B77900076851C /* glslang.xcframework in Frameworks */,
|
2018-12-24 19:11:15 -05:00
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
};
|
|
|
|
A972AD3321CEE7230013AB25 /* Frameworks */ = {
|
|
|
|
isa = PBXFrameworksBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
2020-08-20 15:24:35 -04:00
|
|
|
A983870924EEE94800199A05 /* SPIRVTools.xcframework in Frameworks */,
|
|
|
|
A98386FC24EEE91A00199A05 /* SPIRVCross.xcframework in Frameworks */,
|
2020-09-23 11:09:46 -04:00
|
|
|
A920A8B1251B77920076851C /* glslang.xcframework in Frameworks */,
|
2018-12-24 19:11:15 -05:00
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
};
|
2023-06-23 10:24:35 -04:00
|
|
|
DCFD7F802A45BDA0007BBBF7 /* Frameworks */ = {
|
|
|
|
isa = PBXFrameworksBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
|
|
|
DCFD7F812A45BDA0007BBBF7 /* SPIRVTools.xcframework in Frameworks */,
|
|
|
|
DCFD7F822A45BDA0007BBBF7 /* SPIRVCross.xcframework in Frameworks */,
|
|
|
|
DCFD7F832A45BDA0007BBBF7 /* glslang.xcframework in Frameworks */,
|
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
};
|
2017-11-17 11:14:29 -05:00
|
|
|
/* End PBXFrameworksBuildPhase section */
|
|
|
|
|
|
|
|
/* Begin PBXGroup section */
|
2020-09-23 11:09:46 -04:00
|
|
|
A9093C561C58013D0094110D /* MoltenVKShaderConverter */ = {
|
2017-11-17 11:14:29 -05:00
|
|
|
isa = PBXGroup;
|
|
|
|
children = (
|
2018-01-08 21:44:46 -05:00
|
|
|
A925B70B1C7754B2006E7ECD /* FileSupport.h */,
|
|
|
|
A925B70A1C7754B2006E7ECD /* FileSupport.mm */,
|
2020-09-23 11:09:46 -04:00
|
|
|
A920A8A0251B75B70076851C /* GLSLConversion.h */,
|
|
|
|
A920A8A1251B75B70076851C /* GLSLConversion.mm */,
|
|
|
|
A920A89F251B75B70076851C /* GLSLToSPIRVConverter.cpp */,
|
|
|
|
A920A8A2251B75B70076851C /* GLSLToSPIRVConverter.h */,
|
2017-11-17 11:14:29 -05:00
|
|
|
A928C9171D0488DC00071B88 /* SPIRVConversion.h */,
|
|
|
|
A928C9181D0488DC00071B88 /* SPIRVConversion.mm */,
|
2020-04-09 14:19:46 -04:00
|
|
|
450A4F5E220CB180007203D7 /* SPIRVReflection.h */,
|
2021-06-10 15:56:58 -04:00
|
|
|
A9546B232672A3B8004BA3E6 /* SPIRVSupport.cpp */,
|
|
|
|
A9546B242672A3B8004BA3E6 /* SPIRVSupport.h */,
|
2017-11-17 11:14:29 -05:00
|
|
|
A9093F5A1C58013E0094110D /* SPIRVToMSLConverter.cpp */,
|
|
|
|
A9093F5B1C58013E0094110D /* SPIRVToMSLConverter.h */,
|
|
|
|
);
|
2020-09-23 11:09:46 -04:00
|
|
|
path = MoltenVKShaderConverter;
|
2017-11-17 11:14:29 -05:00
|
|
|
sourceTree = "<group>";
|
|
|
|
};
|
2018-03-12 10:02:13 -04:00
|
|
|
A964B28D1C57EBC400D930D8 /* Products */ = {
|
2017-11-17 11:14:29 -05:00
|
|
|
isa = PBXGroup;
|
|
|
|
children = (
|
2020-09-23 11:09:46 -04:00
|
|
|
A93903C71C57E9ED00FE90DC /* libMoltenVKShaderConverter.a */,
|
|
|
|
A93903BF1C57E9D700FE90DC /* libMoltenVKShaderConverter.a */,
|
|
|
|
2FEA0D142490381A00EEF3AD /* libMoltenVKShaderConverter.a */,
|
2018-03-12 10:02:13 -04:00
|
|
|
A964BD5F1C57EFBD00D930D8 /* MoltenVKShaderConverter */,
|
2017-11-17 11:14:29 -05:00
|
|
|
);
|
2018-03-12 10:02:13 -04:00
|
|
|
name = Products;
|
2017-11-17 11:14:29 -05:00
|
|
|
sourceTree = "<group>";
|
|
|
|
};
|
2018-12-24 19:11:15 -05:00
|
|
|
A972AD2921CEE6A80013AB25 /* Frameworks */ = {
|
2017-11-17 11:14:29 -05:00
|
|
|
isa = PBXGroup;
|
|
|
|
children = (
|
2020-08-20 15:24:35 -04:00
|
|
|
A98386F824EEE91A00199A05 /* SPIRVCross.xcframework */,
|
|
|
|
A98386FD24EEE93700199A05 /* glslang.xcframework */,
|
|
|
|
A983870224EEE94800199A05 /* SPIRVTools.xcframework */,
|
2019-03-22 19:36:21 -04:00
|
|
|
A9A14E322244388700C080F3 /* Metal.framework */,
|
2018-12-24 19:11:15 -05:00
|
|
|
);
|
|
|
|
name = Frameworks;
|
2019-04-18 15:08:39 -04:00
|
|
|
path = ../External/build/Latest;
|
2019-02-24 15:21:30 -05:00
|
|
|
sourceTree = SOURCE_ROOT;
|
2018-07-29 17:41:14 -04:00
|
|
|
};
|
2018-09-20 21:02:39 -04:00
|
|
|
A97CC73C1C7527F3004A5C7E /* MoltenVKShaderConverterTool */ = {
|
2018-07-29 17:41:14 -04:00
|
|
|
isa = PBXGroup;
|
|
|
|
children = (
|
2018-09-20 21:02:39 -04:00
|
|
|
A97CC73D1C7527F3004A5C7E /* main.cpp */,
|
|
|
|
A97CC73E1C7527F3004A5C7E /* MoltenVKShaderConverterTool.cpp */,
|
|
|
|
A97CC73F1C7527F3004A5C7E /* MoltenVKShaderConverterTool.h */,
|
2020-04-09 14:19:46 -04:00
|
|
|
A95096BE2003D32400F10950 /* OSSupport.h */,
|
|
|
|
A95096BD2003D32400F10950 /* OSSupport.mm */,
|
2018-07-29 17:41:14 -04:00
|
|
|
);
|
2018-09-20 21:02:39 -04:00
|
|
|
path = MoltenVKShaderConverterTool;
|
2018-07-29 17:41:14 -04:00
|
|
|
sourceTree = "<group>";
|
|
|
|
};
|
2017-11-17 11:14:29 -05:00
|
|
|
A9F042A81FB4D060009FCCB8 /* Common */ = {
|
|
|
|
isa = PBXGroup;
|
|
|
|
children = (
|
|
|
|
A9F042AA1FB4D060009FCCB8 /* MVKCommonEnvironment.h */,
|
2019-04-11 14:26:35 -04:00
|
|
|
A9B51BDC225E98BB00AC74D2 /* MVKOSExtensions.h */,
|
|
|
|
A9B51BDB225E98BB00AC74D2 /* MVKOSExtensions.mm */,
|
2017-11-17 11:14:29 -05:00
|
|
|
A98149651FB6A98A005F00B4 /* MVKStrings.h */,
|
|
|
|
);
|
|
|
|
name = Common;
|
|
|
|
path = ../Common;
|
|
|
|
sourceTree = "<group>";
|
|
|
|
};
|
|
|
|
A9F55D24198BE6A7004EC31B = {
|
|
|
|
isa = PBXGroup;
|
|
|
|
children = (
|
2020-09-23 11:09:46 -04:00
|
|
|
A9093C561C58013D0094110D /* MoltenVKShaderConverter */,
|
2017-11-17 11:14:29 -05:00
|
|
|
A97CC73C1C7527F3004A5C7E /* MoltenVKShaderConverterTool */,
|
|
|
|
A9F042A81FB4D060009FCCB8 /* Common */,
|
|
|
|
A964B28D1C57EBC400D930D8 /* Products */,
|
2018-12-24 19:11:15 -05:00
|
|
|
A972AD2921CEE6A80013AB25 /* Frameworks */,
|
2024-03-07 17:54:28 -05:00
|
|
|
A979A9412B9A200400F69E67 /* libMoltenVKShaderConverter.a */,
|
2017-11-17 11:14:29 -05:00
|
|
|
);
|
|
|
|
sourceTree = "<group>";
|
|
|
|
};
|
|
|
|
/* End PBXGroup section */
|
|
|
|
|
|
|
|
/* Begin PBXHeadersBuildPhase section */
|
2020-06-09 14:52:03 -07:00
|
|
|
2FEA0D002490381A00EEF3AD /* Headers */ = {
|
|
|
|
isa = PBXHeadersBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
|
|
|
2FEA0D012490381A00EEF3AD /* SPIRVReflection.h in Headers */,
|
2020-09-23 11:09:46 -04:00
|
|
|
A920A8A7251B75B70076851C /* GLSLConversion.h in Headers */,
|
2020-06-09 14:52:03 -07:00
|
|
|
2FEA0D022490381A00EEF3AD /* MVKStrings.h in Headers */,
|
2021-06-10 15:56:58 -04:00
|
|
|
A9546B2A2672A3B8004BA3E6 /* SPIRVSupport.h in Headers */,
|
2020-06-09 14:52:03 -07:00
|
|
|
2FEA0D042490381A00EEF3AD /* SPIRVConversion.h in Headers */,
|
2020-09-23 11:09:46 -04:00
|
|
|
A920A8AD251B75B80076851C /* GLSLToSPIRVConverter.h in Headers */,
|
2020-06-09 14:52:03 -07:00
|
|
|
2FEA0D052490381A00EEF3AD /* SPIRVToMSLConverter.h in Headers */,
|
|
|
|
2FEA0D062490381A00EEF3AD /* MVKCommonEnvironment.h in Headers */,
|
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
};
|
2017-11-17 11:14:29 -05:00
|
|
|
A93903B91C57E9D700FE90DC /* Headers */ = {
|
|
|
|
isa = PBXHeadersBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
Add support for tessellation.
At long last, tessellation comes to MoltenVK! With this change, clients
will now be able to specify tessellation shaders when creating
pipelines, and then draw tessellated patches with them.
Unfortunately, there seem to be a few gotchas with tessellation in
Metal. For one thing, tessellation pipelines in Metal are structured
very differently from Vulkan. There is no tessellation control or even
vertex stage. Instead, the tessellation evaluation shader takes the
place of the vertex function as a "post-tessellation vertex function."
The tessellation levels are supplied in a buffer to the tessellator,
which you are expected to populate. The most common way to do this is by
running a compute shader. MoltenVK thus runs the vertex shader and
tessellation control shader by themselves; a single `VkPipeline` object
then requires at least *three* `MTLPipelineState` objects.
But wait, there's more! The tessellation-control-as-compute stage uses
Metal's support for vertex-style stage input to a compute shader. But,
this support requires one to declare indexing *ahead of time*, when the
pipeline state is created. So a single `VkPipeline` object could have as
many as *five* `MTLPipelineState` objects.
Further, if there are more output than input control points for the
tessellation control stage, then later invocations may end up fetching
the wrong attributes! To get around this, this change uses index buffers
to ensure that all tessellation control shaders see the correct input.
Unfortunately, in the indexed draw case, this means that the incoming
index buffer needs to be munged.
Instancing is another pain point here. In Vulkan, as in OpenGL and
Direct3D, instancing is done in the vertex shader; but in Metal, it is
done at the tessellation evaluation stage. For this reason, only the
vertex stage of a tessellated draw supports instancing. Additional
memory is required to hold data for the extra vertices generated by
instancing. This also requires still more munging of index buffers for
indexed draws.
Indirect draws are even more painful. Because the number of vertices and
instances is unknown, storage for the maximum possible number of
vertices must be allocated. This change imposes a totally arbitrary
limit of 131072 vertices from a single draw, including all vertices
generated by instancing. On a Mac, this requires about 194-256 MB of
VRAM for all the temporary buffers.
There are some possible optimizations here. If we could prove that the
vertex shader's output doesn't depend on the instance ID, either
directly or through a per-instance attribute, then we could avoid
running the vertex and tess. control stages per instance, and take
advantage of Metal's support for tess. eval instancing. If we could
also prove that the vertex shader simply passes instance attributes
through (similarly with the tess. control shader), we could do this for
many more instanced draws as well. It should also be possible to cache
the output from the tess. control stage; if the draw comes up again, we
can then skip the vertex and tess. control stages entirely!
Fixes #56 and #501.
2019-02-18 20:56:42 -06:00
|
|
|
450A4F61220CB180007203D7 /* SPIRVReflection.h in Headers */,
|
2020-09-23 11:09:46 -04:00
|
|
|
A920A8A6251B75B70076851C /* GLSLConversion.h in Headers */,
|
2017-11-17 11:14:29 -05:00
|
|
|
A98149681FB6A98A005F00B4 /* MVKStrings.h in Headers */,
|
2021-06-10 15:56:58 -04:00
|
|
|
A9546B292672A3B8004BA3E6 /* SPIRVSupport.h in Headers */,
|
2017-11-17 11:14:29 -05:00
|
|
|
A928C9191D0488DC00071B88 /* SPIRVConversion.h in Headers */,
|
2020-09-23 11:09:46 -04:00
|
|
|
A920A8AC251B75B70076851C /* GLSLToSPIRVConverter.h in Headers */,
|
2017-11-17 11:14:29 -05:00
|
|
|
A909408C1C58013E0094110D /* SPIRVToMSLConverter.h in Headers */,
|
|
|
|
A9F042B21FB4D060009FCCB8 /* MVKCommonEnvironment.h in Headers */,
|
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
};
|
|
|
|
A93903C11C57E9ED00FE90DC /* Headers */ = {
|
|
|
|
isa = PBXHeadersBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
Add support for tessellation.
At long last, tessellation comes to MoltenVK! With this change, clients
will now be able to specify tessellation shaders when creating
pipelines, and then draw tessellated patches with them.
Unfortunately, there seem to be a few gotchas with tessellation in
Metal. For one thing, tessellation pipelines in Metal are structured
very differently from Vulkan. There is no tessellation control or even
vertex stage. Instead, the tessellation evaluation shader takes the
place of the vertex function as a "post-tessellation vertex function."
The tessellation levels are supplied in a buffer to the tessellator,
which you are expected to populate. The most common way to do this is by
running a compute shader. MoltenVK thus runs the vertex shader and
tessellation control shader by themselves; a single `VkPipeline` object
then requires at least *three* `MTLPipelineState` objects.
But wait, there's more! The tessellation-control-as-compute stage uses
Metal's support for vertex-style stage input to a compute shader. But,
this support requires one to declare indexing *ahead of time*, when the
pipeline state is created. So a single `VkPipeline` object could have as
many as *five* `MTLPipelineState` objects.
Further, if there are more output than input control points for the
tessellation control stage, then later invocations may end up fetching
the wrong attributes! To get around this, this change uses index buffers
to ensure that all tessellation control shaders see the correct input.
Unfortunately, in the indexed draw case, this means that the incoming
index buffer needs to be munged.
Instancing is another pain point here. In Vulkan, as in OpenGL and
Direct3D, instancing is done in the vertex shader; but in Metal, it is
done at the tessellation evaluation stage. For this reason, only the
vertex stage of a tessellated draw supports instancing. Additional
memory is required to hold data for the extra vertices generated by
instancing. This also requires still more munging of index buffers for
indexed draws.
Indirect draws are even more painful. Because the number of vertices and
instances is unknown, storage for the maximum possible number of
vertices must be allocated. This change imposes a totally arbitrary
limit of 131072 vertices from a single draw, including all vertices
generated by instancing. On a Mac, this requires about 194-256 MB of
VRAM for all the temporary buffers.
There are some possible optimizations here. If we could prove that the
vertex shader's output doesn't depend on the instance ID, either
directly or through a per-instance attribute, then we could avoid
running the vertex and tess. control stages per instance, and take
advantage of Metal's support for tess. eval instancing. If we could
also prove that the vertex shader simply passes instance attributes
through (similarly with the tess. control shader), we could do this for
many more instanced draws as well. It should also be possible to cache
the output from the tess. control stage; if the draw comes up again, we
can then skip the vertex and tess. control stages entirely!
Fixes #56 and #501.
2019-02-18 20:56:42 -06:00
|
|
|
450A4F62220CB180007203D7 /* SPIRVReflection.h in Headers */,
|
2020-09-23 11:09:46 -04:00
|
|
|
A920A8A8251B75B70076851C /* GLSLConversion.h in Headers */,
|
2017-11-17 11:14:29 -05:00
|
|
|
A98149691FB6A98A005F00B4 /* MVKStrings.h in Headers */,
|
2021-06-10 15:56:58 -04:00
|
|
|
A9546B2B2672A3B8004BA3E6 /* SPIRVSupport.h in Headers */,
|
2017-11-17 11:14:29 -05:00
|
|
|
A928C91A1D0488DC00071B88 /* SPIRVConversion.h in Headers */,
|
2020-09-23 11:09:46 -04:00
|
|
|
A920A8AE251B75B80076851C /* GLSLToSPIRVConverter.h in Headers */,
|
2017-11-17 11:14:29 -05:00
|
|
|
A909408D1C58013E0094110D /* SPIRVToMSLConverter.h in Headers */,
|
|
|
|
A9F042B31FB4D060009FCCB8 /* MVKCommonEnvironment.h in Headers */,
|
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
};
|
2023-06-23 10:24:35 -04:00
|
|
|
DCFD7F702A45BDA0007BBBF7 /* Headers */ = {
|
|
|
|
isa = PBXHeadersBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
|
|
|
DCFD7F712A45BDA0007BBBF7 /* SPIRVReflection.h in Headers */,
|
|
|
|
DCFD7F722A45BDA0007BBBF7 /* GLSLConversion.h in Headers */,
|
|
|
|
DCFD7F732A45BDA0007BBBF7 /* MVKStrings.h in Headers */,
|
|
|
|
DCFD7F742A45BDA0007BBBF7 /* SPIRVSupport.h in Headers */,
|
|
|
|
DCFD7F752A45BDA0007BBBF7 /* SPIRVConversion.h in Headers */,
|
|
|
|
DCFD7F762A45BDA0007BBBF7 /* GLSLToSPIRVConverter.h in Headers */,
|
|
|
|
DCFD7F772A45BDA0007BBBF7 /* SPIRVToMSLConverter.h in Headers */,
|
|
|
|
DCFD7F782A45BDA0007BBBF7 /* MVKCommonEnvironment.h in Headers */,
|
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
};
|
2017-11-17 11:14:29 -05:00
|
|
|
/* End PBXHeadersBuildPhase section */
|
|
|
|
|
|
|
|
/* Begin PBXNativeTarget section */
|
2020-09-23 11:09:46 -04:00
|
|
|
2FEA0CFF2490381A00EEF3AD /* MoltenVKShaderConverter-tvOS */ = {
|
2020-06-09 14:52:03 -07:00
|
|
|
isa = PBXNativeTarget;
|
2020-09-23 11:09:46 -04:00
|
|
|
buildConfigurationList = 2FEA0D112490381A00EEF3AD /* Build configuration list for PBXNativeTarget "MoltenVKShaderConverter-tvOS" */;
|
2020-06-09 14:52:03 -07:00
|
|
|
buildPhases = (
|
|
|
|
2FEA0D002490381A00EEF3AD /* Headers */,
|
|
|
|
2FEA0D072490381A00EEF3AD /* Sources */,
|
|
|
|
2FEA0D0C2490381A00EEF3AD /* Frameworks */,
|
2020-08-27 19:29:14 -04:00
|
|
|
A93ED4E824F59E1100FEB018 /* Copy to Staging */,
|
2020-06-09 14:52:03 -07:00
|
|
|
);
|
|
|
|
buildRules = (
|
|
|
|
);
|
|
|
|
dependencies = (
|
|
|
|
);
|
2020-09-23 11:09:46 -04:00
|
|
|
name = "MoltenVKShaderConverter-tvOS";
|
2020-06-09 14:52:03 -07:00
|
|
|
productName = "MetalGLShaderConverter-iOS";
|
2020-09-23 11:09:46 -04:00
|
|
|
productReference = 2FEA0D142490381A00EEF3AD /* libMoltenVKShaderConverter.a */;
|
2020-06-09 14:52:03 -07:00
|
|
|
productType = "com.apple.product-type.library.static";
|
|
|
|
};
|
2017-11-17 11:14:29 -05:00
|
|
|
A9092A8C1A81717B00051823 /* MoltenVKShaderConverter */ = {
|
|
|
|
isa = PBXNativeTarget;
|
|
|
|
buildConfigurationList = A9092A931A81717C00051823 /* Build configuration list for PBXNativeTarget "MoltenVKShaderConverter" */;
|
|
|
|
buildPhases = (
|
|
|
|
A9092A891A81717B00051823 /* Sources */,
|
|
|
|
A9092A8A1A81717B00051823 /* Frameworks */,
|
|
|
|
);
|
|
|
|
buildRules = (
|
|
|
|
);
|
|
|
|
dependencies = (
|
|
|
|
A925B71D1C78DEBF006E7ECD /* PBXTargetDependency */,
|
|
|
|
);
|
|
|
|
name = MoltenVKShaderConverter;
|
|
|
|
productName = MetalGLShaderConverterTool;
|
|
|
|
productReference = A964BD5F1C57EFBD00D930D8 /* MoltenVKShaderConverter */;
|
|
|
|
productType = "com.apple.product-type.tool";
|
|
|
|
};
|
2020-09-23 11:09:46 -04:00
|
|
|
A93903B81C57E9D700FE90DC /* MoltenVKShaderConverter-iOS */ = {
|
2017-11-17 11:14:29 -05:00
|
|
|
isa = PBXNativeTarget;
|
2020-09-23 11:09:46 -04:00
|
|
|
buildConfigurationList = A93903BC1C57E9D700FE90DC /* Build configuration list for PBXNativeTarget "MoltenVKShaderConverter-iOS" */;
|
2017-11-17 11:14:29 -05:00
|
|
|
buildPhases = (
|
|
|
|
A93903B91C57E9D700FE90DC /* Headers */,
|
|
|
|
A93903BA1C57E9D700FE90DC /* Sources */,
|
2018-12-24 19:11:15 -05:00
|
|
|
A972AD2E21CEE6F50013AB25 /* Frameworks */,
|
2020-08-27 19:29:14 -04:00
|
|
|
A93ED4E724F59E0900FEB018 /* Copy to Staging */,
|
2017-11-17 11:14:29 -05:00
|
|
|
);
|
|
|
|
buildRules = (
|
|
|
|
);
|
|
|
|
dependencies = (
|
|
|
|
);
|
2020-09-23 11:09:46 -04:00
|
|
|
name = "MoltenVKShaderConverter-iOS";
|
2017-11-17 11:14:29 -05:00
|
|
|
productName = "MetalGLShaderConverter-iOS";
|
2020-09-23 11:09:46 -04:00
|
|
|
productReference = A93903BF1C57E9D700FE90DC /* libMoltenVKShaderConverter.a */;
|
2019-02-18 22:19:37 +00:00
|
|
|
productType = "com.apple.product-type.library.static";
|
2017-11-17 11:14:29 -05:00
|
|
|
};
|
2020-09-23 11:09:46 -04:00
|
|
|
A93903C01C57E9ED00FE90DC /* MoltenVKShaderConverter-macOS */ = {
|
2017-11-17 11:14:29 -05:00
|
|
|
isa = PBXNativeTarget;
|
2020-09-23 11:09:46 -04:00
|
|
|
buildConfigurationList = A93903C41C57E9ED00FE90DC /* Build configuration list for PBXNativeTarget "MoltenVKShaderConverter-macOS" */;
|
2017-11-17 11:14:29 -05:00
|
|
|
buildPhases = (
|
|
|
|
A93903C11C57E9ED00FE90DC /* Headers */,
|
|
|
|
A93903C21C57E9ED00FE90DC /* Sources */,
|
2018-12-24 19:11:15 -05:00
|
|
|
A972AD3321CEE7230013AB25 /* Frameworks */,
|
2020-08-27 19:29:14 -04:00
|
|
|
A93ED4E924F59E1800FEB018 /* Copy to Staging */,
|
2017-11-17 11:14:29 -05:00
|
|
|
);
|
|
|
|
buildRules = (
|
|
|
|
);
|
|
|
|
dependencies = (
|
|
|
|
);
|
2020-09-23 11:09:46 -04:00
|
|
|
name = "MoltenVKShaderConverter-macOS";
|
2017-11-17 11:14:29 -05:00
|
|
|
productName = "MetalGLShaderConverter-macOS";
|
2020-09-23 11:09:46 -04:00
|
|
|
productReference = A93903C71C57E9ED00FE90DC /* libMoltenVKShaderConverter.a */;
|
2019-02-18 22:19:37 +00:00
|
|
|
productType = "com.apple.product-type.library.static";
|
2017-11-17 11:14:29 -05:00
|
|
|
};
|
2023-06-23 10:24:35 -04:00
|
|
|
DCFD7F6F2A45BDA0007BBBF7 /* MoltenVKShaderConverter-xrOS */ = {
|
|
|
|
isa = PBXNativeTarget;
|
|
|
|
buildConfigurationList = DCFD7F852A45BDA0007BBBF7 /* Build configuration list for PBXNativeTarget "MoltenVKShaderConverter-xrOS" */;
|
|
|
|
buildPhases = (
|
|
|
|
DCFD7F702A45BDA0007BBBF7 /* Headers */,
|
|
|
|
DCFD7F792A45BDA0007BBBF7 /* Sources */,
|
|
|
|
DCFD7F802A45BDA0007BBBF7 /* Frameworks */,
|
|
|
|
DCFD7F842A45BDA0007BBBF7 /* Copy to Staging */,
|
|
|
|
);
|
|
|
|
buildRules = (
|
|
|
|
);
|
|
|
|
dependencies = (
|
|
|
|
);
|
|
|
|
name = "MoltenVKShaderConverter-xrOS";
|
|
|
|
productName = "MetalGLShaderConverter-macOS";
|
2024-03-07 17:54:28 -05:00
|
|
|
productReference = A979A9412B9A200400F69E67 /* libMoltenVKShaderConverter.a */;
|
2023-06-23 10:24:35 -04:00
|
|
|
productType = "com.apple.product-type.library.static";
|
|
|
|
};
|
2017-11-17 11:14:29 -05:00
|
|
|
/* End PBXNativeTarget section */
|
|
|
|
|
|
|
|
/* Begin PBXProject section */
|
|
|
|
A9F55D25198BE6A7004EC31B /* Project object */ = {
|
|
|
|
isa = PBXProject;
|
|
|
|
attributes = {
|
2024-03-07 17:54:28 -05:00
|
|
|
LastUpgradeCheck = 9999;
|
2017-11-17 11:14:29 -05:00
|
|
|
ORGANIZATIONNAME = "The Brenwill Workshop Ltd.";
|
|
|
|
TargetAttributes = {
|
|
|
|
A9092A8C1A81717B00051823 = {
|
|
|
|
CreatedOnToolsVersion = 6.1.1;
|
|
|
|
DevelopmentTeam = VU3TCKU48B;
|
|
|
|
};
|
|
|
|
A93903B81C57E9D700FE90DC = {
|
|
|
|
DevelopmentTeam = VU3TCKU48B;
|
|
|
|
};
|
|
|
|
A93903C01C57E9ED00FE90DC = {
|
|
|
|
DevelopmentTeam = VU3TCKU48B;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
buildConfigurationList = A9F55D28198BE6A7004EC31B /* Build configuration list for PBXProject "MoltenVKShaderConverter" */;
|
|
|
|
compatibilityVersion = "Xcode 8.0";
|
2019-03-26 11:50:39 -04:00
|
|
|
developmentRegion = en;
|
2017-11-17 11:14:29 -05:00
|
|
|
hasScannedForEncodings = 0;
|
|
|
|
knownRegions = (
|
|
|
|
en,
|
2019-03-26 11:50:39 -04:00
|
|
|
Base,
|
2017-11-17 11:14:29 -05:00
|
|
|
);
|
|
|
|
mainGroup = A9F55D24198BE6A7004EC31B;
|
|
|
|
productRefGroup = A9F55D24198BE6A7004EC31B;
|
|
|
|
projectDirPath = "";
|
|
|
|
projectRoot = "";
|
|
|
|
targets = (
|
|
|
|
A9092A8C1A81717B00051823 /* MoltenVKShaderConverter */,
|
2020-09-23 11:09:46 -04:00
|
|
|
A93903B81C57E9D700FE90DC /* MoltenVKShaderConverter-iOS */,
|
|
|
|
2FEA0CFF2490381A00EEF3AD /* MoltenVKShaderConverter-tvOS */,
|
|
|
|
A93903C01C57E9ED00FE90DC /* MoltenVKShaderConverter-macOS */,
|
2023-06-23 10:24:35 -04:00
|
|
|
DCFD7F6F2A45BDA0007BBBF7 /* MoltenVKShaderConverter-xrOS */,
|
2017-11-17 11:14:29 -05:00
|
|
|
);
|
|
|
|
};
|
|
|
|
/* End PBXProject section */
|
|
|
|
|
2019-02-18 22:19:37 +00:00
|
|
|
/* Begin PBXShellScriptBuildPhase section */
|
2020-08-27 19:29:14 -04:00
|
|
|
A93ED4E724F59E0900FEB018 /* Copy to Staging */ = {
|
2020-06-09 14:52:03 -07:00
|
|
|
isa = PBXShellScriptBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
|
|
|
);
|
|
|
|
inputFileListPaths = (
|
|
|
|
);
|
|
|
|
inputPaths = (
|
2022-07-08 18:07:18 -04:00
|
|
|
"${BUILT_PRODUCTS_DIR}/lib${PRODUCT_NAME}.a",
|
2020-06-09 14:52:03 -07:00
|
|
|
);
|
2020-08-27 19:29:14 -04:00
|
|
|
name = "Copy to Staging";
|
2020-06-09 14:52:03 -07:00
|
|
|
outputFileListPaths = (
|
|
|
|
);
|
|
|
|
outputPaths = (
|
2022-07-07 22:28:02 -04:00
|
|
|
"$(DERIVED_FILE_DIR)/$(TARGET_NAME)/CopyPhaseDummyOutputFile",
|
2020-06-09 14:52:03 -07:00
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
shellPath = /bin/sh;
|
Improve support for iOS App Store rules by using dynamic XCFramework.
Apple's iOS App Store does not permit an app to link to naked dylibs.
Instead, these must be placed in frameworks, which are embedded in a
dynamic version of MoltenVK.xcframework.
- Use Xcode to directly generate a MoltenVK.framework for each platform,
and remove create_dylib*.sh scripts.
- Move static XCFramework, containing libMoltenVK.a static libraries,
to Package/Latest/MoltenVK/static/MoltenVK.xcframework.
- Generate dynamic XCFramework, containing MoltenVK.framework dynamic
libraries, in Package/Latest/MoltenVK/dynamic/MoltenVK.xcframework.
- Add macro MVK_VERSION_STRING to create version string at compile time,
use it to validate the CURRENT_PROJECT_VERSION build setting at compile time,
and use it at runtime instead of mvkGetMoltenVKVersionString() function.
- Add -w to OTHER_LDFLAGS to dynamic framework builds to suppress
spurious linker warnings of the type
"ld: warning: no platform load command found in '...', assuming: iOS"
issued from the new linker introduced in Xcode 15.
- Add MoltenVK-MacCat Xcode target and MoltenVK Package (MacCat only)
Xcode scheme to avoid building dynamic MoltenVK.framework for the
Mac Catalyst platform, because Xcode does not support doing so.
- Always run MoltenVK build scripts, to ensure all components are
added to the XCFrameworks, and MoltenVK/Package is always refreshed,
even if code compilation is not required.
- Cube demo link to dynamic MoltenVK.framework through
dynamic/MoltenVK.xcframework, instead of to naked libMoltenVK.dylib.
- Update the version of Volk used by the Cube demo, to support
loading MoltenVK from dynamic frameworks inside Volk.
- Update README.md and MoltenVK_Runtime_UserGuide.md documents.
- Update MVK_PRIVATE_API_VERSION to 40.
- Fix make install to install /usr/local/lib/libMoltenVK.dylib on macOS (unrelated).
- Remove unused MTLAttributeStrideStatic declaration prior to Xcode 15 (unrelated).
2024-02-29 22:03:44 -05:00
|
|
|
shellScript = ". \"${SRCROOT}/../Scripts/copy_to_staging.sh\" \"lib${PRODUCT_NAME}.a\"\n";
|
2020-06-09 14:52:03 -07:00
|
|
|
};
|
2020-08-27 19:29:14 -04:00
|
|
|
A93ED4E824F59E1100FEB018 /* Copy to Staging */ = {
|
2020-06-19 09:53:43 -04:00
|
|
|
isa = PBXShellScriptBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
|
|
|
);
|
|
|
|
inputFileListPaths = (
|
|
|
|
);
|
|
|
|
inputPaths = (
|
2022-07-08 18:07:18 -04:00
|
|
|
"${BUILT_PRODUCTS_DIR}/lib${PRODUCT_NAME}.a",
|
2020-06-19 09:53:43 -04:00
|
|
|
);
|
2020-08-27 19:29:14 -04:00
|
|
|
name = "Copy to Staging";
|
2020-06-19 09:53:43 -04:00
|
|
|
outputFileListPaths = (
|
|
|
|
);
|
|
|
|
outputPaths = (
|
2022-07-07 22:28:02 -04:00
|
|
|
"$(DERIVED_FILE_DIR)/$(TARGET_NAME)/CopyPhaseDummyOutputFile",
|
2020-06-19 09:53:43 -04:00
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
shellPath = /bin/sh;
|
Improve support for iOS App Store rules by using dynamic XCFramework.
Apple's iOS App Store does not permit an app to link to naked dylibs.
Instead, these must be placed in frameworks, which are embedded in a
dynamic version of MoltenVK.xcframework.
- Use Xcode to directly generate a MoltenVK.framework for each platform,
and remove create_dylib*.sh scripts.
- Move static XCFramework, containing libMoltenVK.a static libraries,
to Package/Latest/MoltenVK/static/MoltenVK.xcframework.
- Generate dynamic XCFramework, containing MoltenVK.framework dynamic
libraries, in Package/Latest/MoltenVK/dynamic/MoltenVK.xcframework.
- Add macro MVK_VERSION_STRING to create version string at compile time,
use it to validate the CURRENT_PROJECT_VERSION build setting at compile time,
and use it at runtime instead of mvkGetMoltenVKVersionString() function.
- Add -w to OTHER_LDFLAGS to dynamic framework builds to suppress
spurious linker warnings of the type
"ld: warning: no platform load command found in '...', assuming: iOS"
issued from the new linker introduced in Xcode 15.
- Add MoltenVK-MacCat Xcode target and MoltenVK Package (MacCat only)
Xcode scheme to avoid building dynamic MoltenVK.framework for the
Mac Catalyst platform, because Xcode does not support doing so.
- Always run MoltenVK build scripts, to ensure all components are
added to the XCFrameworks, and MoltenVK/Package is always refreshed,
even if code compilation is not required.
- Cube demo link to dynamic MoltenVK.framework through
dynamic/MoltenVK.xcframework, instead of to naked libMoltenVK.dylib.
- Update the version of Volk used by the Cube demo, to support
loading MoltenVK from dynamic frameworks inside Volk.
- Update README.md and MoltenVK_Runtime_UserGuide.md documents.
- Update MVK_PRIVATE_API_VERSION to 40.
- Fix make install to install /usr/local/lib/libMoltenVK.dylib on macOS (unrelated).
- Remove unused MTLAttributeStrideStatic declaration prior to Xcode 15 (unrelated).
2024-02-29 22:03:44 -05:00
|
|
|
shellScript = ". \"${SRCROOT}/../Scripts/copy_to_staging.sh\" \"lib${PRODUCT_NAME}.a\"\n";
|
2020-06-19 09:53:43 -04:00
|
|
|
};
|
2020-08-27 19:29:14 -04:00
|
|
|
A93ED4E924F59E1800FEB018 /* Copy to Staging */ = {
|
2020-06-19 09:53:43 -04:00
|
|
|
isa = PBXShellScriptBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
|
|
|
);
|
|
|
|
inputFileListPaths = (
|
|
|
|
);
|
|
|
|
inputPaths = (
|
2022-07-08 18:07:18 -04:00
|
|
|
"${BUILT_PRODUCTS_DIR}/lib${PRODUCT_NAME}.a",
|
2020-06-19 09:53:43 -04:00
|
|
|
);
|
2020-08-27 19:29:14 -04:00
|
|
|
name = "Copy to Staging";
|
2020-06-19 09:53:43 -04:00
|
|
|
outputFileListPaths = (
|
|
|
|
);
|
|
|
|
outputPaths = (
|
2022-07-07 22:28:02 -04:00
|
|
|
"$(DERIVED_FILE_DIR)/$(TARGET_NAME)/CopyPhaseDummyOutputFile",
|
2020-06-19 09:53:43 -04:00
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
shellPath = /bin/sh;
|
Improve support for iOS App Store rules by using dynamic XCFramework.
Apple's iOS App Store does not permit an app to link to naked dylibs.
Instead, these must be placed in frameworks, which are embedded in a
dynamic version of MoltenVK.xcframework.
- Use Xcode to directly generate a MoltenVK.framework for each platform,
and remove create_dylib*.sh scripts.
- Move static XCFramework, containing libMoltenVK.a static libraries,
to Package/Latest/MoltenVK/static/MoltenVK.xcframework.
- Generate dynamic XCFramework, containing MoltenVK.framework dynamic
libraries, in Package/Latest/MoltenVK/dynamic/MoltenVK.xcframework.
- Add macro MVK_VERSION_STRING to create version string at compile time,
use it to validate the CURRENT_PROJECT_VERSION build setting at compile time,
and use it at runtime instead of mvkGetMoltenVKVersionString() function.
- Add -w to OTHER_LDFLAGS to dynamic framework builds to suppress
spurious linker warnings of the type
"ld: warning: no platform load command found in '...', assuming: iOS"
issued from the new linker introduced in Xcode 15.
- Add MoltenVK-MacCat Xcode target and MoltenVK Package (MacCat only)
Xcode scheme to avoid building dynamic MoltenVK.framework for the
Mac Catalyst platform, because Xcode does not support doing so.
- Always run MoltenVK build scripts, to ensure all components are
added to the XCFrameworks, and MoltenVK/Package is always refreshed,
even if code compilation is not required.
- Cube demo link to dynamic MoltenVK.framework through
dynamic/MoltenVK.xcframework, instead of to naked libMoltenVK.dylib.
- Update the version of Volk used by the Cube demo, to support
loading MoltenVK from dynamic frameworks inside Volk.
- Update README.md and MoltenVK_Runtime_UserGuide.md documents.
- Update MVK_PRIVATE_API_VERSION to 40.
- Fix make install to install /usr/local/lib/libMoltenVK.dylib on macOS (unrelated).
- Remove unused MTLAttributeStrideStatic declaration prior to Xcode 15 (unrelated).
2024-02-29 22:03:44 -05:00
|
|
|
shellScript = ". \"${SRCROOT}/../Scripts/copy_to_staging.sh\" \"lib${PRODUCT_NAME}.a\"\n";
|
2020-06-19 15:05:43 -04:00
|
|
|
};
|
2023-06-23 10:24:35 -04:00
|
|
|
DCFD7F842A45BDA0007BBBF7 /* Copy to Staging */ = {
|
|
|
|
isa = PBXShellScriptBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
|
|
|
);
|
|
|
|
inputFileListPaths = (
|
|
|
|
);
|
|
|
|
inputPaths = (
|
|
|
|
"${BUILT_PRODUCTS_DIR}/lib${PRODUCT_NAME}.a",
|
|
|
|
);
|
|
|
|
name = "Copy to Staging";
|
|
|
|
outputFileListPaths = (
|
|
|
|
);
|
|
|
|
outputPaths = (
|
|
|
|
"$(DERIVED_FILE_DIR)/$(TARGET_NAME)/CopyPhaseDummyOutputFile",
|
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
shellPath = /bin/sh;
|
Improve support for iOS App Store rules by using dynamic XCFramework.
Apple's iOS App Store does not permit an app to link to naked dylibs.
Instead, these must be placed in frameworks, which are embedded in a
dynamic version of MoltenVK.xcframework.
- Use Xcode to directly generate a MoltenVK.framework for each platform,
and remove create_dylib*.sh scripts.
- Move static XCFramework, containing libMoltenVK.a static libraries,
to Package/Latest/MoltenVK/static/MoltenVK.xcframework.
- Generate dynamic XCFramework, containing MoltenVK.framework dynamic
libraries, in Package/Latest/MoltenVK/dynamic/MoltenVK.xcframework.
- Add macro MVK_VERSION_STRING to create version string at compile time,
use it to validate the CURRENT_PROJECT_VERSION build setting at compile time,
and use it at runtime instead of mvkGetMoltenVKVersionString() function.
- Add -w to OTHER_LDFLAGS to dynamic framework builds to suppress
spurious linker warnings of the type
"ld: warning: no platform load command found in '...', assuming: iOS"
issued from the new linker introduced in Xcode 15.
- Add MoltenVK-MacCat Xcode target and MoltenVK Package (MacCat only)
Xcode scheme to avoid building dynamic MoltenVK.framework for the
Mac Catalyst platform, because Xcode does not support doing so.
- Always run MoltenVK build scripts, to ensure all components are
added to the XCFrameworks, and MoltenVK/Package is always refreshed,
even if code compilation is not required.
- Cube demo link to dynamic MoltenVK.framework through
dynamic/MoltenVK.xcframework, instead of to naked libMoltenVK.dylib.
- Update the version of Volk used by the Cube demo, to support
loading MoltenVK from dynamic frameworks inside Volk.
- Update README.md and MoltenVK_Runtime_UserGuide.md documents.
- Update MVK_PRIVATE_API_VERSION to 40.
- Fix make install to install /usr/local/lib/libMoltenVK.dylib on macOS (unrelated).
- Remove unused MTLAttributeStrideStatic declaration prior to Xcode 15 (unrelated).
2024-02-29 22:03:44 -05:00
|
|
|
shellScript = ". \"${SRCROOT}/../Scripts/copy_to_staging.sh\" \"lib${PRODUCT_NAME}.a\"\n";
|
2023-06-23 10:24:35 -04:00
|
|
|
};
|
2019-02-18 22:19:37 +00:00
|
|
|
/* End PBXShellScriptBuildPhase section */
|
|
|
|
|
2017-11-17 11:14:29 -05:00
|
|
|
/* Begin PBXSourcesBuildPhase section */
|
2020-06-09 14:52:03 -07:00
|
|
|
2FEA0D072490381A00EEF3AD /* Sources */ = {
|
|
|
|
isa = PBXSourcesBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
|
|
|
2FEA0D082490381A00EEF3AD /* FileSupport.mm in Sources */,
|
2020-09-23 11:09:46 -04:00
|
|
|
A920A8AA251B75B70076851C /* GLSLConversion.mm in Sources */,
|
|
|
|
A920A8A4251B75B70076851C /* GLSLToSPIRVConverter.cpp in Sources */,
|
2020-06-09 14:52:03 -07:00
|
|
|
2FEA0D092490381A00EEF3AD /* SPIRVToMSLConverter.cpp in Sources */,
|
|
|
|
2FEA0D0B2490381A00EEF3AD /* SPIRVConversion.mm in Sources */,
|
2021-06-10 15:56:58 -04:00
|
|
|
A9546B272672A3B8004BA3E6 /* SPIRVSupport.cpp in Sources */,
|
2020-06-09 14:52:03 -07:00
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
};
|
2017-11-17 11:14:29 -05:00
|
|
|
A9092A891A81717B00051823 /* Sources */ = {
|
|
|
|
isa = PBXSourcesBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
|
|
|
A97CC7411C7527F3004A5C7E /* MoltenVKShaderConverterTool.cpp in Sources */,
|
2019-03-22 19:36:21 -04:00
|
|
|
A95096BF2003D32400F10950 /* OSSupport.mm in Sources */,
|
2019-04-11 14:26:35 -04:00
|
|
|
A9B51BDD225E98BB00AC74D2 /* MVKOSExtensions.mm in Sources */,
|
2021-06-10 15:56:58 -04:00
|
|
|
A9546B252672A3B8004BA3E6 /* SPIRVSupport.cpp in Sources */,
|
2017-11-17 11:14:29 -05:00
|
|
|
A97CC7401C7527F3004A5C7E /* main.cpp in Sources */,
|
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
};
|
|
|
|
A93903BA1C57E9D700FE90DC /* Sources */ = {
|
|
|
|
isa = PBXSourcesBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
2018-01-08 21:44:46 -05:00
|
|
|
A95096BB2003D00300F10950 /* FileSupport.mm in Sources */,
|
2020-09-23 11:09:46 -04:00
|
|
|
A920A8A9251B75B70076851C /* GLSLConversion.mm in Sources */,
|
|
|
|
A920A8A3251B75B70076851C /* GLSLToSPIRVConverter.cpp in Sources */,
|
2017-11-17 11:14:29 -05:00
|
|
|
A909408A1C58013E0094110D /* SPIRVToMSLConverter.cpp in Sources */,
|
|
|
|
A928C91B1D0488DC00071B88 /* SPIRVConversion.mm in Sources */,
|
2021-06-10 15:56:58 -04:00
|
|
|
A9546B262672A3B8004BA3E6 /* SPIRVSupport.cpp in Sources */,
|
2017-11-17 11:14:29 -05:00
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
};
|
|
|
|
A93903C21C57E9ED00FE90DC /* Sources */ = {
|
|
|
|
isa = PBXSourcesBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
2018-01-08 21:44:46 -05:00
|
|
|
A95096BC2003D00300F10950 /* FileSupport.mm in Sources */,
|
2020-09-23 11:09:46 -04:00
|
|
|
A920A8AB251B75B70076851C /* GLSLConversion.mm in Sources */,
|
|
|
|
A920A8A5251B75B70076851C /* GLSLToSPIRVConverter.cpp in Sources */,
|
2017-11-17 11:14:29 -05:00
|
|
|
A909408B1C58013E0094110D /* SPIRVToMSLConverter.cpp in Sources */,
|
|
|
|
A928C91C1D0488DC00071B88 /* SPIRVConversion.mm in Sources */,
|
2021-06-10 15:56:58 -04:00
|
|
|
A9546B282672A3B8004BA3E6 /* SPIRVSupport.cpp in Sources */,
|
2017-11-17 11:14:29 -05:00
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
};
|
2023-06-23 10:24:35 -04:00
|
|
|
DCFD7F792A45BDA0007BBBF7 /* Sources */ = {
|
|
|
|
isa = PBXSourcesBuildPhase;
|
|
|
|
buildActionMask = 2147483647;
|
|
|
|
files = (
|
|
|
|
DCFD7F7A2A45BDA0007BBBF7 /* FileSupport.mm in Sources */,
|
|
|
|
DCFD7F7B2A45BDA0007BBBF7 /* GLSLConversion.mm in Sources */,
|
|
|
|
DCFD7F7C2A45BDA0007BBBF7 /* GLSLToSPIRVConverter.cpp in Sources */,
|
|
|
|
DCFD7F7D2A45BDA0007BBBF7 /* SPIRVToMSLConverter.cpp in Sources */,
|
|
|
|
DCFD7F7E2A45BDA0007BBBF7 /* SPIRVConversion.mm in Sources */,
|
|
|
|
DCFD7F7F2A45BDA0007BBBF7 /* SPIRVSupport.cpp in Sources */,
|
|
|
|
);
|
|
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
|
|
};
|
2017-11-17 11:14:29 -05:00
|
|
|
/* End PBXSourcesBuildPhase section */
|
|
|
|
|
|
|
|
/* Begin PBXTargetDependency section */
|
|
|
|
A925B71D1C78DEBF006E7ECD /* PBXTargetDependency */ = {
|
|
|
|
isa = PBXTargetDependency;
|
2020-09-23 11:09:46 -04:00
|
|
|
target = A93903C01C57E9ED00FE90DC /* MoltenVKShaderConverter-macOS */;
|
2017-11-17 11:14:29 -05:00
|
|
|
targetProxy = A925B71C1C78DEBF006E7ECD /* PBXContainerItemProxy */;
|
|
|
|
};
|
|
|
|
/* End PBXTargetDependency section */
|
|
|
|
|
|
|
|
/* Begin XCBuildConfiguration section */
|
2020-06-09 14:52:03 -07:00
|
|
|
2FEA0D122490381A00EEF3AD /* Debug */ = {
|
|
|
|
isa = XCBuildConfiguration;
|
|
|
|
buildSettings = {
|
|
|
|
SDKROOT = appletvos;
|
|
|
|
};
|
|
|
|
name = Debug;
|
|
|
|
};
|
|
|
|
2FEA0D132490381A00EEF3AD /* Release */ = {
|
|
|
|
isa = XCBuildConfiguration;
|
|
|
|
buildSettings = {
|
|
|
|
SDKROOT = appletvos;
|
|
|
|
};
|
|
|
|
name = Release;
|
|
|
|
};
|
2017-11-17 11:14:29 -05:00
|
|
|
A9092A911A81717C00051823 /* Debug */ = {
|
|
|
|
isa = XCBuildConfiguration;
|
|
|
|
buildSettings = {
|
2019-02-18 22:19:37 +00:00
|
|
|
MACH_O_TYPE = mh_execute;
|
2019-04-02 12:25:49 -04:00
|
|
|
OTHER_LDFLAGS = (
|
|
|
|
"-ObjC",
|
|
|
|
"-w",
|
|
|
|
);
|
2017-11-17 11:14:29 -05:00
|
|
|
SDKROOT = macosx;
|
|
|
|
};
|
|
|
|
name = Debug;
|
|
|
|
};
|
|
|
|
A9092A921A81717C00051823 /* Release */ = {
|
|
|
|
isa = XCBuildConfiguration;
|
|
|
|
buildSettings = {
|
2019-02-18 22:19:37 +00:00
|
|
|
MACH_O_TYPE = mh_execute;
|
2019-04-18 15:08:39 -04:00
|
|
|
OTHER_LDFLAGS = (
|
|
|
|
"-ObjC",
|
|
|
|
"-w",
|
|
|
|
);
|
2017-11-17 11:14:29 -05:00
|
|
|
SDKROOT = macosx;
|
|
|
|
};
|
|
|
|
name = Release;
|
|
|
|
};
|
|
|
|
A93903BD1C57E9D700FE90DC /* Debug */ = {
|
|
|
|
isa = XCBuildConfiguration;
|
|
|
|
buildSettings = {
|
|
|
|
SDKROOT = iphoneos;
|
|
|
|
};
|
|
|
|
name = Debug;
|
|
|
|
};
|
|
|
|
A93903BE1C57E9D700FE90DC /* Release */ = {
|
|
|
|
isa = XCBuildConfiguration;
|
|
|
|
buildSettings = {
|
|
|
|
SDKROOT = iphoneos;
|
|
|
|
};
|
|
|
|
name = Release;
|
|
|
|
};
|
|
|
|
A93903C51C57E9ED00FE90DC /* Debug */ = {
|
|
|
|
isa = XCBuildConfiguration;
|
|
|
|
buildSettings = {
|
|
|
|
SDKROOT = macosx;
|
|
|
|
};
|
|
|
|
name = Debug;
|
|
|
|
};
|
|
|
|
A93903C61C57E9ED00FE90DC /* Release */ = {
|
|
|
|
isa = XCBuildConfiguration;
|
|
|
|
buildSettings = {
|
|
|
|
SDKROOT = macosx;
|
|
|
|
};
|
|
|
|
name = Release;
|
|
|
|
};
|
|
|
|
A9F55D3F198BE6A8004EC31B /* Debug */ = {
|
|
|
|
isa = XCBuildConfiguration;
|
|
|
|
buildSettings = {
|
|
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
2020-06-09 16:39:23 -04:00
|
|
|
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
2020-08-11 20:18:50 -04:00
|
|
|
BITCODE_GENERATION_MODE = marker;
|
2021-06-14 10:39:42 -04:00
|
|
|
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
|
2017-11-17 11:14:29 -05:00
|
|
|
CLANG_CXX_LIBRARY = "libc++";
|
|
|
|
CLANG_ENABLE_MODULES = NO;
|
|
|
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
|
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
|
|
CLANG_WARN_CXX0X_EXTENSIONS = YES;
|
|
|
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
|
|
CLANG_WARN_EMPTY_BODY = YES;
|
|
|
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
|
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
|
|
CLANG_WARN_INT_CONVERSION = YES;
|
|
|
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
|
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
|
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
2020-06-11 12:43:38 -04:00
|
|
|
CLANG_WARN_UNGUARDED_AVAILABILITY = NO;
|
2017-11-17 11:14:29 -05:00
|
|
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
|
|
COPY_PHASE_STRIP = NO;
|
|
|
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
|
|
ENABLE_TESTABILITY = YES;
|
Improve support for iOS App Store rules by using dynamic XCFramework.
Apple's iOS App Store does not permit an app to link to naked dylibs.
Instead, these must be placed in frameworks, which are embedded in a
dynamic version of MoltenVK.xcframework.
- Use Xcode to directly generate a MoltenVK.framework for each platform,
and remove create_dylib*.sh scripts.
- Move static XCFramework, containing libMoltenVK.a static libraries,
to Package/Latest/MoltenVK/static/MoltenVK.xcframework.
- Generate dynamic XCFramework, containing MoltenVK.framework dynamic
libraries, in Package/Latest/MoltenVK/dynamic/MoltenVK.xcframework.
- Add macro MVK_VERSION_STRING to create version string at compile time,
use it to validate the CURRENT_PROJECT_VERSION build setting at compile time,
and use it at runtime instead of mvkGetMoltenVKVersionString() function.
- Add -w to OTHER_LDFLAGS to dynamic framework builds to suppress
spurious linker warnings of the type
"ld: warning: no platform load command found in '...', assuming: iOS"
issued from the new linker introduced in Xcode 15.
- Add MoltenVK-MacCat Xcode target and MoltenVK Package (MacCat only)
Xcode scheme to avoid building dynamic MoltenVK.framework for the
Mac Catalyst platform, because Xcode does not support doing so.
- Always run MoltenVK build scripts, to ensure all components are
added to the XCFrameworks, and MoltenVK/Package is always refreshed,
even if code compilation is not required.
- Cube demo link to dynamic MoltenVK.framework through
dynamic/MoltenVK.xcframework, instead of to naked libMoltenVK.dylib.
- Update the version of Volk used by the Cube demo, to support
loading MoltenVK from dynamic frameworks inside Volk.
- Update README.md and MoltenVK_Runtime_UserGuide.md documents.
- Update MVK_PRIVATE_API_VERSION to 40.
- Fix make install to install /usr/local/lib/libMoltenVK.dylib on macOS (unrelated).
- Remove unused MTLAttributeStrideStatic declaration prior to Xcode 15 (unrelated).
2024-02-29 22:03:44 -05:00
|
|
|
GCC_DYNAMIC_NO_PIC = NO;
|
2019-02-18 22:19:37 +00:00
|
|
|
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
2017-11-17 11:14:29 -05:00
|
|
|
GCC_NO_COMMON_BLOCKS = YES;
|
|
|
|
GCC_OPTIMIZATION_LEVEL = 0;
|
2020-10-06 11:40:45 -04:00
|
|
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
|
|
"DEBUG=1",
|
2021-03-04 13:47:25 -05:00
|
|
|
"SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross",
|
2020-10-06 11:40:45 -04:00
|
|
|
);
|
2017-11-17 11:14:29 -05:00
|
|
|
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
|
|
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
|
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
|
|
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
2020-09-23 11:09:46 -04:00
|
|
|
GCC_WARN_CHECK_SWITCH_STATEMENTS = NO;
|
2017-11-17 11:14:29 -05:00
|
|
|
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
|
|
|
|
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
|
|
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
2020-06-11 12:43:38 -04:00
|
|
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
2017-11-17 11:14:29 -05:00
|
|
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
2019-02-18 22:19:37 +00:00
|
|
|
HEADER_SEARCH_PATHS = (
|
|
|
|
"$(inherited)",
|
2021-03-01 17:44:13 -05:00
|
|
|
"\"$(SRCROOT)\"",
|
2021-02-28 18:22:52 -05:00
|
|
|
"\"$(SRCROOT)/SPIRV-Cross\"",
|
2019-12-16 14:24:57 -05:00
|
|
|
"\"$(SRCROOT)/glslang\"",
|
2019-02-18 22:19:37 +00:00
|
|
|
"\"$(SRCROOT)/glslang/External/spirv-tools/include\"",
|
|
|
|
);
|
2024-03-12 11:49:11 -04:00
|
|
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
2019-02-18 22:19:37 +00:00
|
|
|
MACH_O_TYPE = staticlib;
|
2024-03-12 11:49:11 -04:00
|
|
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
2020-09-23 11:09:46 -04:00
|
|
|
PRODUCT_NAME = MoltenVKShaderConverter;
|
2017-11-17 11:14:29 -05:00
|
|
|
SKIP_INSTALL = YES;
|
2024-03-12 11:49:11 -04:00
|
|
|
TVOS_DEPLOYMENT_TARGET = 13.0;
|
2022-05-30 18:12:14 -04:00
|
|
|
WARNING_CFLAGS = "-Wreorder";
|
2017-11-17 11:14:29 -05:00
|
|
|
};
|
|
|
|
name = Debug;
|
|
|
|
};
|
|
|
|
A9F55D40198BE6A8004EC31B /* Release */ = {
|
|
|
|
isa = XCBuildConfiguration;
|
|
|
|
buildSettings = {
|
|
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
2020-06-09 16:39:23 -04:00
|
|
|
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
2020-08-11 20:18:50 -04:00
|
|
|
BITCODE_GENERATION_MODE = bitcode;
|
2021-06-14 10:39:42 -04:00
|
|
|
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
|
2017-11-17 11:14:29 -05:00
|
|
|
CLANG_CXX_LIBRARY = "libc++";
|
|
|
|
CLANG_ENABLE_MODULES = NO;
|
|
|
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
|
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
|
|
CLANG_WARN_CXX0X_EXTENSIONS = YES;
|
|
|
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
|
|
CLANG_WARN_EMPTY_BODY = YES;
|
|
|
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
|
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
|
|
CLANG_WARN_INT_CONVERSION = YES;
|
|
|
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
|
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
|
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
2020-06-11 12:43:38 -04:00
|
|
|
CLANG_WARN_UNGUARDED_AVAILABILITY = NO;
|
2017-11-17 11:14:29 -05:00
|
|
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
|
|
COPY_PHASE_STRIP = YES;
|
|
|
|
ENABLE_NS_ASSERTIONS = NO;
|
|
|
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
Improve support for iOS App Store rules by using dynamic XCFramework.
Apple's iOS App Store does not permit an app to link to naked dylibs.
Instead, these must be placed in frameworks, which are embedded in a
dynamic version of MoltenVK.xcframework.
- Use Xcode to directly generate a MoltenVK.framework for each platform,
and remove create_dylib*.sh scripts.
- Move static XCFramework, containing libMoltenVK.a static libraries,
to Package/Latest/MoltenVK/static/MoltenVK.xcframework.
- Generate dynamic XCFramework, containing MoltenVK.framework dynamic
libraries, in Package/Latest/MoltenVK/dynamic/MoltenVK.xcframework.
- Add macro MVK_VERSION_STRING to create version string at compile time,
use it to validate the CURRENT_PROJECT_VERSION build setting at compile time,
and use it at runtime instead of mvkGetMoltenVKVersionString() function.
- Add -w to OTHER_LDFLAGS to dynamic framework builds to suppress
spurious linker warnings of the type
"ld: warning: no platform load command found in '...', assuming: iOS"
issued from the new linker introduced in Xcode 15.
- Add MoltenVK-MacCat Xcode target and MoltenVK Package (MacCat only)
Xcode scheme to avoid building dynamic MoltenVK.framework for the
Mac Catalyst platform, because Xcode does not support doing so.
- Always run MoltenVK build scripts, to ensure all components are
added to the XCFrameworks, and MoltenVK/Package is always refreshed,
even if code compilation is not required.
- Cube demo link to dynamic MoltenVK.framework through
dynamic/MoltenVK.xcframework, instead of to naked libMoltenVK.dylib.
- Update the version of Volk used by the Cube demo, to support
loading MoltenVK from dynamic frameworks inside Volk.
- Update README.md and MoltenVK_Runtime_UserGuide.md documents.
- Update MVK_PRIVATE_API_VERSION to 40.
- Fix make install to install /usr/local/lib/libMoltenVK.dylib on macOS (unrelated).
- Remove unused MTLAttributeStrideStatic declaration prior to Xcode 15 (unrelated).
2024-02-29 22:03:44 -05:00
|
|
|
GCC_DYNAMIC_NO_PIC = NO;
|
2017-11-17 11:14:29 -05:00
|
|
|
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
|
2019-02-18 22:19:37 +00:00
|
|
|
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
2017-11-17 11:14:29 -05:00
|
|
|
GCC_NO_COMMON_BLOCKS = YES;
|
2021-06-10 18:32:38 -04:00
|
|
|
GCC_OPTIMIZATION_LEVEL = 2;
|
2021-03-04 13:47:25 -05:00
|
|
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
|
|
"NDEBUG=1",
|
|
|
|
"SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross",
|
|
|
|
);
|
2017-11-17 11:14:29 -05:00
|
|
|
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
|
|
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
|
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
|
|
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
2020-09-23 11:09:46 -04:00
|
|
|
GCC_WARN_CHECK_SWITCH_STATEMENTS = NO;
|
2017-11-17 11:14:29 -05:00
|
|
|
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
|
|
|
|
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
|
|
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
2020-06-11 12:43:38 -04:00
|
|
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
2017-11-17 11:14:29 -05:00
|
|
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
2019-02-18 22:19:37 +00:00
|
|
|
HEADER_SEARCH_PATHS = (
|
|
|
|
"$(inherited)",
|
2021-03-01 17:44:13 -05:00
|
|
|
"\"$(SRCROOT)\"",
|
2021-02-28 18:22:52 -05:00
|
|
|
"\"$(SRCROOT)/SPIRV-Cross\"",
|
2019-12-16 14:24:57 -05:00
|
|
|
"\"$(SRCROOT)/glslang\"",
|
2019-02-18 22:19:37 +00:00
|
|
|
"\"$(SRCROOT)/glslang/External/spirv-tools/include\"",
|
|
|
|
);
|
2024-03-12 11:49:11 -04:00
|
|
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
2019-02-18 22:19:37 +00:00
|
|
|
MACH_O_TYPE = staticlib;
|
2024-03-12 11:49:11 -04:00
|
|
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
2020-09-23 11:09:46 -04:00
|
|
|
PRODUCT_NAME = MoltenVKShaderConverter;
|
2017-11-17 11:14:29 -05:00
|
|
|
SKIP_INSTALL = YES;
|
2024-03-12 11:49:11 -04:00
|
|
|
TVOS_DEPLOYMENT_TARGET = 13.0;
|
2017-11-17 11:14:29 -05:00
|
|
|
VALIDATE_PRODUCT = YES;
|
2022-05-30 18:12:14 -04:00
|
|
|
WARNING_CFLAGS = "-Wreorder";
|
2017-11-17 11:14:29 -05:00
|
|
|
};
|
|
|
|
name = Release;
|
|
|
|
};
|
2023-06-23 10:24:35 -04:00
|
|
|
DCFD7F862A45BDA0007BBBF7 /* Debug */ = {
|
|
|
|
isa = XCBuildConfiguration;
|
|
|
|
buildSettings = {
|
|
|
|
SDKROOT = xros;
|
|
|
|
};
|
|
|
|
name = Debug;
|
|
|
|
};
|
|
|
|
DCFD7F872A45BDA0007BBBF7 /* Release */ = {
|
|
|
|
isa = XCBuildConfiguration;
|
|
|
|
buildSettings = {
|
|
|
|
SDKROOT = xros;
|
|
|
|
};
|
|
|
|
name = Release;
|
|
|
|
};
|
2017-11-17 11:14:29 -05:00
|
|
|
/* End XCBuildConfiguration section */
|
|
|
|
|
|
|
|
/* Begin XCConfigurationList section */
|
2020-09-23 11:09:46 -04:00
|
|
|
2FEA0D112490381A00EEF3AD /* Build configuration list for PBXNativeTarget "MoltenVKShaderConverter-tvOS" */ = {
|
2020-06-09 14:52:03 -07:00
|
|
|
isa = XCConfigurationList;
|
|
|
|
buildConfigurations = (
|
|
|
|
2FEA0D122490381A00EEF3AD /* Debug */,
|
|
|
|
2FEA0D132490381A00EEF3AD /* Release */,
|
|
|
|
);
|
|
|
|
defaultConfigurationIsVisible = 0;
|
|
|
|
defaultConfigurationName = Release;
|
|
|
|
};
|
2017-11-17 11:14:29 -05:00
|
|
|
A9092A931A81717C00051823 /* Build configuration list for PBXNativeTarget "MoltenVKShaderConverter" */ = {
|
|
|
|
isa = XCConfigurationList;
|
|
|
|
buildConfigurations = (
|
|
|
|
A9092A911A81717C00051823 /* Debug */,
|
|
|
|
A9092A921A81717C00051823 /* Release */,
|
|
|
|
);
|
|
|
|
defaultConfigurationIsVisible = 0;
|
|
|
|
defaultConfigurationName = Release;
|
|
|
|
};
|
2020-09-23 11:09:46 -04:00
|
|
|
A93903BC1C57E9D700FE90DC /* Build configuration list for PBXNativeTarget "MoltenVKShaderConverter-iOS" */ = {
|
2017-11-17 11:14:29 -05:00
|
|
|
isa = XCConfigurationList;
|
|
|
|
buildConfigurations = (
|
|
|
|
A93903BD1C57E9D700FE90DC /* Debug */,
|
|
|
|
A93903BE1C57E9D700FE90DC /* Release */,
|
|
|
|
);
|
|
|
|
defaultConfigurationIsVisible = 0;
|
|
|
|
defaultConfigurationName = Release;
|
|
|
|
};
|
2020-09-23 11:09:46 -04:00
|
|
|
A93903C41C57E9ED00FE90DC /* Build configuration list for PBXNativeTarget "MoltenVKShaderConverter-macOS" */ = {
|
2017-11-17 11:14:29 -05:00
|
|
|
isa = XCConfigurationList;
|
|
|
|
buildConfigurations = (
|
|
|
|
A93903C51C57E9ED00FE90DC /* Debug */,
|
|
|
|
A93903C61C57E9ED00FE90DC /* Release */,
|
|
|
|
);
|
|
|
|
defaultConfigurationIsVisible = 0;
|
|
|
|
defaultConfigurationName = Release;
|
|
|
|
};
|
|
|
|
A9F55D28198BE6A7004EC31B /* Build configuration list for PBXProject "MoltenVKShaderConverter" */ = {
|
|
|
|
isa = XCConfigurationList;
|
|
|
|
buildConfigurations = (
|
|
|
|
A9F55D3F198BE6A8004EC31B /* Debug */,
|
|
|
|
A9F55D40198BE6A8004EC31B /* Release */,
|
|
|
|
);
|
|
|
|
defaultConfigurationIsVisible = 0;
|
|
|
|
defaultConfigurationName = Release;
|
|
|
|
};
|
2023-06-23 10:24:35 -04:00
|
|
|
DCFD7F852A45BDA0007BBBF7 /* Build configuration list for PBXNativeTarget "MoltenVKShaderConverter-xrOS" */ = {
|
|
|
|
isa = XCConfigurationList;
|
|
|
|
buildConfigurations = (
|
|
|
|
DCFD7F862A45BDA0007BBBF7 /* Debug */,
|
|
|
|
DCFD7F872A45BDA0007BBBF7 /* Release */,
|
|
|
|
);
|
|
|
|
defaultConfigurationIsVisible = 0;
|
|
|
|
defaultConfigurationName = Release;
|
|
|
|
};
|
2017-11-17 11:14:29 -05:00
|
|
|
/* End XCConfigurationList section */
|
|
|
|
};
|
|
|
|
rootObject = A9F55D25198BE6A7004EC31B /* Project object */;
|
|
|
|
}
|