SPB Git

spb/forge Public MIT

Forge — LLM training from scratch in pure C++20 + Metal on Apple Silicon.

C++ 61.2% C 23% Python 7.6% TeX 7.2% CMake 1.1%
76.8 KB · 1,877 lines cpp
Raw Blame History
1//-------------------------------------------------------------------------------------------------------------------------------------------------------------2//3// Metal/MTLRenderPipeline.hpp4//5// Copyright 2020-2025 Apple Inc.6//7// Licensed under the Apache License, Version 2.0 (the "License");8// you may not use this file except in compliance with the License.9// You may obtain a copy of the License at10//11//     http://www.apache.org/licenses/LICENSE-2.012//13// Unless required by applicable law or agreed to in writing, software14// distributed under the License is distributed on an "AS IS" BASIS,15// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.16// See the License for the specific language governing permissions and17// limitations under the License.18//19//-------------------------------------------------------------------------------------------------------------------------------------------------------------2021#pragma once2223#include "../Foundation/Foundation.hpp"24#include "MTLAllocation.hpp"25#include "MTLDefines.hpp"26#include "MTLHeaderBridge.hpp"27#include "MTLPipeline.hpp"28#include "MTLPixelFormat.hpp"29#include "MTLPrivate.hpp"30#include "MTLRenderCommandEncoder.hpp"31#include "MTLTypes.hpp"3233namespace MTL34{35class Device;36class Function;37class FunctionHandle;38class IntersectionFunctionTable;39class IntersectionFunctionTableDescriptor;40class LinkedFunctions;41class LogicalToPhysicalColorAttachmentMap;42class MeshRenderPipelineDescriptor;43class PipelineBufferDescriptorArray;44class RenderPipelineColorAttachmentDescriptor;45class RenderPipelineColorAttachmentDescriptorArray;46class RenderPipelineDescriptor;47class RenderPipelineFunctionsDescriptor;48class RenderPipelineReflection;49class RenderPipelineState;50class TileRenderPipelineColorAttachmentDescriptor;51class TileRenderPipelineColorAttachmentDescriptorArray;52class TileRenderPipelineDescriptor;53class VertexDescriptor;54class VisibleFunctionTable;55class VisibleFunctionTableDescriptor;5657}58namespace MTL459{60class BinaryFunction;61class PipelineDescriptor;62class RenderPipelineBinaryFunctionsDescriptor;6364}65namespace MTL66{67_MTL_ENUM(NS::UInteger, BlendFactor) {68    BlendFactorZero = 0,69    BlendFactorOne = 1,70    BlendFactorSourceColor = 2,71    BlendFactorOneMinusSourceColor = 3,72    BlendFactorSourceAlpha = 4,73    BlendFactorOneMinusSourceAlpha = 5,74    BlendFactorDestinationColor = 6,75    BlendFactorOneMinusDestinationColor = 7,76    BlendFactorDestinationAlpha = 8,77    BlendFactorOneMinusDestinationAlpha = 9,78    BlendFactorSourceAlphaSaturated = 10,79    BlendFactorBlendColor = 11,80    BlendFactorOneMinusBlendColor = 12,81    BlendFactorBlendAlpha = 13,82    BlendFactorOneMinusBlendAlpha = 14,83    BlendFactorSource1Color = 15,84    BlendFactorOneMinusSource1Color = 16,85    BlendFactorSource1Alpha = 17,86    BlendFactorOneMinusSource1Alpha = 18,87    BlendFactorUnspecialized = 19,88};8990_MTL_ENUM(NS::UInteger, BlendOperation) {91    BlendOperationAdd = 0,92    BlendOperationSubtract = 1,93    BlendOperationReverseSubtract = 2,94    BlendOperationMin = 3,95    BlendOperationMax = 4,96    BlendOperationUnspecialized = 5,97};9899_MTL_ENUM(NS::UInteger, PrimitiveTopologyClass) {100    PrimitiveTopologyClassUnspecified = 0,101    PrimitiveTopologyClassPoint = 1,102    PrimitiveTopologyClassLine = 2,103    PrimitiveTopologyClassTriangle = 3,104};105106_MTL_ENUM(NS::UInteger, TessellationPartitionMode) {107    TessellationPartitionModePow2 = 0,108    TessellationPartitionModeInteger = 1,109    TessellationPartitionModeFractionalOdd = 2,110    TessellationPartitionModeFractionalEven = 3,111};112113_MTL_ENUM(NS::UInteger, TessellationFactorStepFunction) {114    TessellationFactorStepFunctionConstant = 0,115    TessellationFactorStepFunctionPerPatch = 1,116    TessellationFactorStepFunctionPerInstance = 2,117    TessellationFactorStepFunctionPerPatchAndPerInstance = 3,118};119120_MTL_ENUM(NS::UInteger, TessellationFactorFormat) {121    TessellationFactorFormatHalf = 0,122};123124_MTL_ENUM(NS::UInteger, TessellationControlPointIndexType) {125    TessellationControlPointIndexTypeNone = 0,126    TessellationControlPointIndexTypeUInt16 = 1,127    TessellationControlPointIndexTypeUInt32 = 2,128};129130_MTL_OPTIONS(NS::UInteger, ColorWriteMask) {131    ColorWriteMaskNone = 0,132    ColorWriteMaskRed = 1 << 3,133    ColorWriteMaskGreen = 1 << 2,134    ColorWriteMaskBlue = 1 << 1,135    ColorWriteMaskAlpha = 1,136    ColorWriteMaskAll = 15,137    ColorWriteMaskUnspecialized = 1 << 4,138};139140class RenderPipelineColorAttachmentDescriptor : public NS::Copying<RenderPipelineColorAttachmentDescriptor>141{142public:143    static RenderPipelineColorAttachmentDescriptor* alloc();144145    BlendOperation                                  alphaBlendOperation() const;146147    [[deprecated("please use isBlendingEnabled instead")]]148    bool                                     blendingEnabled() const;149150    BlendFactor                              destinationAlphaBlendFactor() const;151152    BlendFactor                              destinationRGBBlendFactor() const;153154    RenderPipelineColorAttachmentDescriptor* init();155156    bool                                     isBlendingEnabled() const;157158    PixelFormat                              pixelFormat() const;159160    BlendOperation                           rgbBlendOperation() const;161162    void                                     setAlphaBlendOperation(MTL::BlendOperation alphaBlendOperation);163164    void                                     setBlendingEnabled(bool blendingEnabled);165166    void                                     setDestinationAlphaBlendFactor(MTL::BlendFactor destinationAlphaBlendFactor);167168    void                                     setDestinationRGBBlendFactor(MTL::BlendFactor destinationRGBBlendFactor);169170    void                                     setPixelFormat(MTL::PixelFormat pixelFormat);171172    void                                     setRgbBlendOperation(MTL::BlendOperation rgbBlendOperation);173174    void                                     setSourceAlphaBlendFactor(MTL::BlendFactor sourceAlphaBlendFactor);175176    void                                     setSourceRGBBlendFactor(MTL::BlendFactor sourceRGBBlendFactor);177178    void                                     setWriteMask(MTL::ColorWriteMask writeMask);179180    BlendFactor                              sourceAlphaBlendFactor() const;181182    BlendFactor                              sourceRGBBlendFactor() const;183184    ColorWriteMask                           writeMask() const;185};186class LogicalToPhysicalColorAttachmentMap : public NS::Copying<LogicalToPhysicalColorAttachmentMap>187{188public:189    static LogicalToPhysicalColorAttachmentMap* alloc();190191    NS::UInteger                                getPhysicalIndex(NS::UInteger logicalIndex);192193    LogicalToPhysicalColorAttachmentMap*        init();194195    void                                        reset();196197    void                                        setPhysicalIndex(NS::UInteger physicalIndex, NS::UInteger logicalIndex);198};199class RenderPipelineReflection : public NS::Referencing<RenderPipelineReflection>200{201public:202    static RenderPipelineReflection* alloc();203204    NS::Array*                       fragmentArguments() const;205206    NS::Array*                       fragmentBindings() const;207208    RenderPipelineReflection*        init();209210    NS::Array*                       meshBindings() const;211212    NS::Array*                       objectBindings() const;213214    NS::Array*                       tileArguments() const;215216    NS::Array*                       tileBindings() const;217218    NS::Array*                       vertexArguments() const;219220    NS::Array*                       vertexBindings() const;221};222class RenderPipelineDescriptor : public NS::Copying<RenderPipelineDescriptor>223{224public:225    static RenderPipelineDescriptor* alloc();226227    [[deprecated("please use isAlphaToCoverageEnabled instead")]]228    bool alphaToCoverageEnabled() const;229230    [[deprecated("please use isAlphaToOneEnabled instead")]]231    bool                                          alphaToOneEnabled() const;232233    NS::Array*                                    binaryArchives() const;234235    RenderPipelineColorAttachmentDescriptorArray* colorAttachments() const;236237    PixelFormat                                   depthAttachmentPixelFormat() const;238239    PipelineBufferDescriptorArray*                fragmentBuffers() const;240241    Function*                                     fragmentFunction() const;242243    LinkedFunctions*                              fragmentLinkedFunctions() const;244245    NS::Array*                                    fragmentPreloadedLibraries() const;246247    RenderPipelineDescriptor*                     init();248249    PrimitiveTopologyClass                        inputPrimitiveTopology() const;250251    bool                                          isAlphaToCoverageEnabled() const;252253    bool                                          isAlphaToOneEnabled() const;254255    bool                                          isRasterizationEnabled() const;256257    bool                                          isTessellationFactorScaleEnabled() const;258259    NS::String*                                   label() const;260261    NS::UInteger                                  maxFragmentCallStackDepth() const;262263    NS::UInteger                                  maxTessellationFactor() const;264265    NS::UInteger                                  maxVertexAmplificationCount() const;266267    NS::UInteger                                  maxVertexCallStackDepth() const;268269    NS::UInteger                                  rasterSampleCount() const;270271    [[deprecated("please use isRasterizationEnabled instead")]]272    bool                              rasterizationEnabled() const;273274    void                              reset();275276    NS::UInteger                      sampleCount() const;277278    void                              setAlphaToCoverageEnabled(bool alphaToCoverageEnabled);279280    void                              setAlphaToOneEnabled(bool alphaToOneEnabled);281282    void                              setBinaryArchives(const NS::Array* binaryArchives);283284    void                              setDepthAttachmentPixelFormat(MTL::PixelFormat depthAttachmentPixelFormat);285286    void                              setFragmentFunction(const MTL::Function* fragmentFunction);287288    void                              setFragmentLinkedFunctions(const MTL::LinkedFunctions* fragmentLinkedFunctions);289290    void                              setFragmentPreloadedLibraries(const NS::Array* fragmentPreloadedLibraries);291292    void                              setInputPrimitiveTopology(MTL::PrimitiveTopologyClass inputPrimitiveTopology);293294    void                              setLabel(const NS::String* label);295296    void                              setMaxFragmentCallStackDepth(NS::UInteger maxFragmentCallStackDepth);297298    void                              setMaxTessellationFactor(NS::UInteger maxTessellationFactor);299300    void                              setMaxVertexAmplificationCount(NS::UInteger maxVertexAmplificationCount);301302    void                              setMaxVertexCallStackDepth(NS::UInteger maxVertexCallStackDepth);303304    void                              setRasterSampleCount(NS::UInteger rasterSampleCount);305306    void                              setRasterizationEnabled(bool rasterizationEnabled);307308    void                              setSampleCount(NS::UInteger sampleCount);309310    void                              setShaderValidation(MTL::ShaderValidation shaderValidation);311312    void                              setStencilAttachmentPixelFormat(MTL::PixelFormat stencilAttachmentPixelFormat);313314    void                              setSupportAddingFragmentBinaryFunctions(bool supportAddingFragmentBinaryFunctions);315316    void                              setSupportAddingVertexBinaryFunctions(bool supportAddingVertexBinaryFunctions);317318    void                              setSupportIndirectCommandBuffers(bool supportIndirectCommandBuffers);319320    void                              setTessellationControlPointIndexType(MTL::TessellationControlPointIndexType tessellationControlPointIndexType);321322    void                              setTessellationFactorFormat(MTL::TessellationFactorFormat tessellationFactorFormat);323324    void                              setTessellationFactorScaleEnabled(bool tessellationFactorScaleEnabled);325326    void                              setTessellationFactorStepFunction(MTL::TessellationFactorStepFunction tessellationFactorStepFunction);327328    void                              setTessellationOutputWindingOrder(MTL::Winding tessellationOutputWindingOrder);329330    void                              setTessellationPartitionMode(MTL::TessellationPartitionMode tessellationPartitionMode);331332    void                              setVertexDescriptor(const MTL::VertexDescriptor* vertexDescriptor);333334    void                              setVertexFunction(const MTL::Function* vertexFunction);335336    void                              setVertexLinkedFunctions(const MTL::LinkedFunctions* vertexLinkedFunctions);337338    void                              setVertexPreloadedLibraries(const NS::Array* vertexPreloadedLibraries);339340    ShaderValidation                  shaderValidation() const;341342    PixelFormat                       stencilAttachmentPixelFormat() const;343344    bool                              supportAddingFragmentBinaryFunctions() const;345346    bool                              supportAddingVertexBinaryFunctions() const;347348    bool                              supportIndirectCommandBuffers() const;349350    TessellationControlPointIndexType tessellationControlPointIndexType() const;351352    TessellationFactorFormat          tessellationFactorFormat() const;353354    [[deprecated("please use isTessellationFactorScaleEnabled instead")]]355    bool                           tessellationFactorScaleEnabled() const;356357    TessellationFactorStepFunction tessellationFactorStepFunction() const;358359    Winding                        tessellationOutputWindingOrder() const;360361    TessellationPartitionMode      tessellationPartitionMode() const;362363    PipelineBufferDescriptorArray* vertexBuffers() const;364365    VertexDescriptor*              vertexDescriptor() const;366367    Function*                      vertexFunction() const;368369    LinkedFunctions*               vertexLinkedFunctions() const;370371    NS::Array*                     vertexPreloadedLibraries() const;372};373class RenderPipelineFunctionsDescriptor : public NS::Copying<RenderPipelineFunctionsDescriptor>374{375public:376    static RenderPipelineFunctionsDescriptor* alloc();377378    NS::Array*                                fragmentAdditionalBinaryFunctions() const;379380    RenderPipelineFunctionsDescriptor*        init();381382    void                                      setFragmentAdditionalBinaryFunctions(const NS::Array* fragmentAdditionalBinaryFunctions);383384    void                                      setTileAdditionalBinaryFunctions(const NS::Array* tileAdditionalBinaryFunctions);385386    void                                      setVertexAdditionalBinaryFunctions(const NS::Array* vertexAdditionalBinaryFunctions);387388    NS::Array*                                tileAdditionalBinaryFunctions() const;389390    NS::Array*                                vertexAdditionalBinaryFunctions() const;391};392class RenderPipelineState : public NS::Referencing<RenderPipelineState, Allocation>393{394public:395    Device*                    device() const;396397    FunctionHandle*            functionHandle(const NS::String* name, MTL::RenderStages stage);398    FunctionHandle*            functionHandle(const MTL4::BinaryFunction* function, MTL::RenderStages stage);399    FunctionHandle*            functionHandle(const MTL::Function* function, MTL::RenderStages stage);400401    ResourceID                 gpuResourceID() const;402403    NS::UInteger               imageblockMemoryLength(MTL::Size imageblockDimensions);404405    NS::UInteger               imageblockSampleLength() const;406407    NS::String*                label() const;408409    NS::UInteger               maxTotalThreadgroupsPerMeshGrid() const;410411    NS::UInteger               maxTotalThreadsPerMeshThreadgroup() const;412413    NS::UInteger               maxTotalThreadsPerObjectThreadgroup() const;414415    NS::UInteger               maxTotalThreadsPerThreadgroup() const;416417    NS::UInteger               meshThreadExecutionWidth() const;418419    IntersectionFunctionTable* newIntersectionFunctionTable(const MTL::IntersectionFunctionTableDescriptor* descriptor, MTL::RenderStages stage);420421    MTL4::PipelineDescriptor*  newRenderPipelineDescriptor();422423    RenderPipelineState*       newRenderPipelineState(const MTL4::RenderPipelineBinaryFunctionsDescriptor* binaryFunctionsDescriptor, NS::Error** error);424    RenderPipelineState*       newRenderPipelineState(const MTL::RenderPipelineFunctionsDescriptor* additionalBinaryFunctions, NS::Error** error);425426    VisibleFunctionTable*      newVisibleFunctionTable(const MTL::VisibleFunctionTableDescriptor* descriptor, MTL::RenderStages stage);427428    NS::UInteger               objectThreadExecutionWidth() const;429430    RenderPipelineReflection*  reflection() const;431432    Size                       requiredThreadsPerMeshThreadgroup() const;433434    Size                       requiredThreadsPerObjectThreadgroup() const;435436    Size                       requiredThreadsPerTileThreadgroup() const;437438    ShaderValidation           shaderValidation() const;439440    bool                       supportIndirectCommandBuffers() const;441442    bool                       threadgroupSizeMatchesTileSize() const;443};444class RenderPipelineColorAttachmentDescriptorArray : public NS::Referencing<RenderPipelineColorAttachmentDescriptorArray>445{446public:447    static RenderPipelineColorAttachmentDescriptorArray* alloc();448449    RenderPipelineColorAttachmentDescriptorArray*        init();450451    RenderPipelineColorAttachmentDescriptor*             object(NS::UInteger attachmentIndex);452    void                                                 setObject(const MTL::RenderPipelineColorAttachmentDescriptor* attachment, NS::UInteger attachmentIndex);453};454class TileRenderPipelineColorAttachmentDescriptor : public NS::Copying<TileRenderPipelineColorAttachmentDescriptor>455{456public:457    static TileRenderPipelineColorAttachmentDescriptor* alloc();458459    TileRenderPipelineColorAttachmentDescriptor*        init();460461    PixelFormat                                         pixelFormat() const;462    void                                                setPixelFormat(MTL::PixelFormat pixelFormat);463};464class TileRenderPipelineColorAttachmentDescriptorArray : public NS::Referencing<TileRenderPipelineColorAttachmentDescriptorArray>465{466public:467    static TileRenderPipelineColorAttachmentDescriptorArray* alloc();468469    TileRenderPipelineColorAttachmentDescriptorArray*        init();470471    TileRenderPipelineColorAttachmentDescriptor*             object(NS::UInteger attachmentIndex);472    void                                                     setObject(const MTL::TileRenderPipelineColorAttachmentDescriptor* attachment, NS::UInteger attachmentIndex);473};474class TileRenderPipelineDescriptor : public NS::Copying<TileRenderPipelineDescriptor>475{476public:477    static TileRenderPipelineDescriptor*              alloc();478479    NS::Array*                                        binaryArchives() const;480481    TileRenderPipelineColorAttachmentDescriptorArray* colorAttachments() const;482483    TileRenderPipelineDescriptor*                     init();484485    NS::String*                                       label() const;486487    LinkedFunctions*                                  linkedFunctions() const;488489    NS::UInteger                                      maxCallStackDepth() const;490491    NS::UInteger                                      maxTotalThreadsPerThreadgroup() const;492493    NS::Array*                                        preloadedLibraries() const;494495    NS::UInteger                                      rasterSampleCount() const;496497    Size                                              requiredThreadsPerThreadgroup() const;498499    void                                              reset();500501    void                                              setBinaryArchives(const NS::Array* binaryArchives);502503    void                                              setLabel(const NS::String* label);504505    void                                              setLinkedFunctions(const MTL::LinkedFunctions* linkedFunctions);506507    void                                              setMaxCallStackDepth(NS::UInteger maxCallStackDepth);508509    void                                              setMaxTotalThreadsPerThreadgroup(NS::UInteger maxTotalThreadsPerThreadgroup);510511    void                                              setPreloadedLibraries(const NS::Array* preloadedLibraries);512513    void                                              setRasterSampleCount(NS::UInteger rasterSampleCount);514515    void                                              setRequiredThreadsPerThreadgroup(MTL::Size requiredThreadsPerThreadgroup);516517    void                                              setShaderValidation(MTL::ShaderValidation shaderValidation);518519    void                                              setSupportAddingBinaryFunctions(bool supportAddingBinaryFunctions);520521    void                                              setThreadgroupSizeMatchesTileSize(bool threadgroupSizeMatchesTileSize);522523    void                                              setTileFunction(const MTL::Function* tileFunction);524525    ShaderValidation                                  shaderValidation() const;526527    bool                                              supportAddingBinaryFunctions() const;528529    bool                                              threadgroupSizeMatchesTileSize() const;530531    PipelineBufferDescriptorArray*                    tileBuffers() const;532533    Function*                                         tileFunction() const;534};535class MeshRenderPipelineDescriptor : public NS::Copying<MeshRenderPipelineDescriptor>536{537public:538    static MeshRenderPipelineDescriptor* alloc();539540    [[deprecated("please use isAlphaToCoverageEnabled instead")]]541    bool alphaToCoverageEnabled() const;542543    [[deprecated("please use isAlphaToOneEnabled instead")]]544    bool                                          alphaToOneEnabled() const;545546    NS::Array*                                    binaryArchives() const;547548    RenderPipelineColorAttachmentDescriptorArray* colorAttachments() const;549550    PixelFormat                                   depthAttachmentPixelFormat() const;551552    PipelineBufferDescriptorArray*                fragmentBuffers() const;553554    Function*                                     fragmentFunction() const;555556    LinkedFunctions*                              fragmentLinkedFunctions() const;557558    MeshRenderPipelineDescriptor*                 init();559560    bool                                          isAlphaToCoverageEnabled() const;561562    bool                                          isAlphaToOneEnabled() const;563564    bool                                          isRasterizationEnabled() const;565566    NS::String*                                   label() const;567568    NS::UInteger                                  maxTotalThreadgroupsPerMeshGrid() const;569570    NS::UInteger                                  maxTotalThreadsPerMeshThreadgroup() const;571572    NS::UInteger                                  maxTotalThreadsPerObjectThreadgroup() const;573574    NS::UInteger                                  maxVertexAmplificationCount() const;575576    PipelineBufferDescriptorArray*                meshBuffers() const;577578    Function*                                     meshFunction() const;579580    LinkedFunctions*                              meshLinkedFunctions() const;581582    bool                                          meshThreadgroupSizeIsMultipleOfThreadExecutionWidth() const;583584    PipelineBufferDescriptorArray*                objectBuffers() const;585586    Function*                                     objectFunction() const;587588    LinkedFunctions*                              objectLinkedFunctions() const;589590    bool                                          objectThreadgroupSizeIsMultipleOfThreadExecutionWidth() const;591592    NS::UInteger                                  payloadMemoryLength() const;593594    NS::UInteger                                  rasterSampleCount() const;595596    [[deprecated("please use isRasterizationEnabled instead")]]597    bool             rasterizationEnabled() const;598599    Size             requiredThreadsPerMeshThreadgroup() const;600601    Size             requiredThreadsPerObjectThreadgroup() const;602603    void             reset();604605    void             setAlphaToCoverageEnabled(bool alphaToCoverageEnabled);606607    void             setAlphaToOneEnabled(bool alphaToOneEnabled);608609    void             setBinaryArchives(const NS::Array* binaryArchives);610611    void             setDepthAttachmentPixelFormat(MTL::PixelFormat depthAttachmentPixelFormat);612613    void             setFragmentFunction(const MTL::Function* fragmentFunction);614615    void             setFragmentLinkedFunctions(const MTL::LinkedFunctions* fragmentLinkedFunctions);616617    void             setLabel(const NS::String* label);618619    void             setMaxTotalThreadgroupsPerMeshGrid(NS::UInteger maxTotalThreadgroupsPerMeshGrid);620621    void             setMaxTotalThreadsPerMeshThreadgroup(NS::UInteger maxTotalThreadsPerMeshThreadgroup);622623    void             setMaxTotalThreadsPerObjectThreadgroup(NS::UInteger maxTotalThreadsPerObjectThreadgroup);624625    void             setMaxVertexAmplificationCount(NS::UInteger maxVertexAmplificationCount);626627    void             setMeshFunction(const MTL::Function* meshFunction);628629    void             setMeshLinkedFunctions(const MTL::LinkedFunctions* meshLinkedFunctions);630631    void             setMeshThreadgroupSizeIsMultipleOfThreadExecutionWidth(bool meshThreadgroupSizeIsMultipleOfThreadExecutionWidth);632633    void             setObjectFunction(const MTL::Function* objectFunction);634635    void             setObjectLinkedFunctions(const MTL::LinkedFunctions* objectLinkedFunctions);636637    void             setObjectThreadgroupSizeIsMultipleOfThreadExecutionWidth(bool objectThreadgroupSizeIsMultipleOfThreadExecutionWidth);638639    void             setPayloadMemoryLength(NS::UInteger payloadMemoryLength);640641    void             setRasterSampleCount(NS::UInteger rasterSampleCount);642643    void             setRasterizationEnabled(bool rasterizationEnabled);644645    void             setRequiredThreadsPerMeshThreadgroup(MTL::Size requiredThreadsPerMeshThreadgroup);646647    void             setRequiredThreadsPerObjectThreadgroup(MTL::Size requiredThreadsPerObjectThreadgroup);648649    void             setShaderValidation(MTL::ShaderValidation shaderValidation);650651    void             setStencilAttachmentPixelFormat(MTL::PixelFormat stencilAttachmentPixelFormat);652653    void             setSupportIndirectCommandBuffers(bool supportIndirectCommandBuffers);654655    ShaderValidation shaderValidation() const;656657    PixelFormat      stencilAttachmentPixelFormat() const;658659    bool             supportIndirectCommandBuffers() const;660};661662}663_MTL_INLINE MTL::RenderPipelineColorAttachmentDescriptor* MTL::RenderPipelineColorAttachmentDescriptor::alloc()664{665    return NS::Object::alloc<MTL::RenderPipelineColorAttachmentDescriptor>(_MTL_PRIVATE_CLS(MTLRenderPipelineColorAttachmentDescriptor));666}667668_MTL_INLINE MTL::BlendOperation MTL::RenderPipelineColorAttachmentDescriptor::alphaBlendOperation() const669{670    return Object::sendMessage<MTL::BlendOperation>(this, _MTL_PRIVATE_SEL(alphaBlendOperation));671}672673_MTL_INLINE bool MTL::RenderPipelineColorAttachmentDescriptor::blendingEnabled() const674{675    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isBlendingEnabled));676}677678_MTL_INLINE MTL::BlendFactor MTL::RenderPipelineColorAttachmentDescriptor::destinationAlphaBlendFactor() const679{680    return Object::sendMessage<MTL::BlendFactor>(this, _MTL_PRIVATE_SEL(destinationAlphaBlendFactor));681}682683_MTL_INLINE MTL::BlendFactor MTL::RenderPipelineColorAttachmentDescriptor::destinationRGBBlendFactor() const684{685    return Object::sendMessage<MTL::BlendFactor>(this, _MTL_PRIVATE_SEL(destinationRGBBlendFactor));686}687688_MTL_INLINE MTL::RenderPipelineColorAttachmentDescriptor* MTL::RenderPipelineColorAttachmentDescriptor::init()689{690    return NS::Object::init<MTL::RenderPipelineColorAttachmentDescriptor>();691}692693_MTL_INLINE bool MTL::RenderPipelineColorAttachmentDescriptor::isBlendingEnabled() const694{695    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isBlendingEnabled));696}697698_MTL_INLINE MTL::PixelFormat MTL::RenderPipelineColorAttachmentDescriptor::pixelFormat() const699{700    return Object::sendMessage<MTL::PixelFormat>(this, _MTL_PRIVATE_SEL(pixelFormat));701}702703_MTL_INLINE MTL::BlendOperation MTL::RenderPipelineColorAttachmentDescriptor::rgbBlendOperation() const704{705    return Object::sendMessage<MTL::BlendOperation>(this, _MTL_PRIVATE_SEL(rgbBlendOperation));706}707708_MTL_INLINE void MTL::RenderPipelineColorAttachmentDescriptor::setAlphaBlendOperation(MTL::BlendOperation alphaBlendOperation)709{710    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setAlphaBlendOperation_), alphaBlendOperation);711}712713_MTL_INLINE void MTL::RenderPipelineColorAttachmentDescriptor::setBlendingEnabled(bool blendingEnabled)714{715    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBlendingEnabled_), blendingEnabled);716}717718_MTL_INLINE void MTL::RenderPipelineColorAttachmentDescriptor::setDestinationAlphaBlendFactor(MTL::BlendFactor destinationAlphaBlendFactor)719{720    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDestinationAlphaBlendFactor_), destinationAlphaBlendFactor);721}722723_MTL_INLINE void MTL::RenderPipelineColorAttachmentDescriptor::setDestinationRGBBlendFactor(MTL::BlendFactor destinationRGBBlendFactor)724{725    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDestinationRGBBlendFactor_), destinationRGBBlendFactor);726}727728_MTL_INLINE void MTL::RenderPipelineColorAttachmentDescriptor::setPixelFormat(MTL::PixelFormat pixelFormat)729{730    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPixelFormat_), pixelFormat);731}732733_MTL_INLINE void MTL::RenderPipelineColorAttachmentDescriptor::setRgbBlendOperation(MTL::BlendOperation rgbBlendOperation)734{735    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRgbBlendOperation_), rgbBlendOperation);736}737738_MTL_INLINE void MTL::RenderPipelineColorAttachmentDescriptor::setSourceAlphaBlendFactor(MTL::BlendFactor sourceAlphaBlendFactor)739{740    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSourceAlphaBlendFactor_), sourceAlphaBlendFactor);741}742743_MTL_INLINE void MTL::RenderPipelineColorAttachmentDescriptor::setSourceRGBBlendFactor(MTL::BlendFactor sourceRGBBlendFactor)744{745    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSourceRGBBlendFactor_), sourceRGBBlendFactor);746}747748_MTL_INLINE void MTL::RenderPipelineColorAttachmentDescriptor::setWriteMask(MTL::ColorWriteMask writeMask)749{750    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setWriteMask_), writeMask);751}752753_MTL_INLINE MTL::BlendFactor MTL::RenderPipelineColorAttachmentDescriptor::sourceAlphaBlendFactor() const754{755    return Object::sendMessage<MTL::BlendFactor>(this, _MTL_PRIVATE_SEL(sourceAlphaBlendFactor));756}757758_MTL_INLINE MTL::BlendFactor MTL::RenderPipelineColorAttachmentDescriptor::sourceRGBBlendFactor() const759{760    return Object::sendMessage<MTL::BlendFactor>(this, _MTL_PRIVATE_SEL(sourceRGBBlendFactor));761}762763_MTL_INLINE MTL::ColorWriteMask MTL::RenderPipelineColorAttachmentDescriptor::writeMask() const764{765    return Object::sendMessage<MTL::ColorWriteMask>(this, _MTL_PRIVATE_SEL(writeMask));766}767768_MTL_INLINE MTL::LogicalToPhysicalColorAttachmentMap* MTL::LogicalToPhysicalColorAttachmentMap::alloc()769{770    return NS::Object::alloc<MTL::LogicalToPhysicalColorAttachmentMap>(_MTL_PRIVATE_CLS(MTLLogicalToPhysicalColorAttachmentMap));771}772773_MTL_INLINE NS::UInteger MTL::LogicalToPhysicalColorAttachmentMap::getPhysicalIndex(NS::UInteger logicalIndex)774{775    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(getPhysicalIndexForLogicalIndex_), logicalIndex);776}777778_MTL_INLINE MTL::LogicalToPhysicalColorAttachmentMap* MTL::LogicalToPhysicalColorAttachmentMap::init()779{780    return NS::Object::init<MTL::LogicalToPhysicalColorAttachmentMap>();781}782783_MTL_INLINE void MTL::LogicalToPhysicalColorAttachmentMap::reset()784{785    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(reset));786}787788_MTL_INLINE void MTL::LogicalToPhysicalColorAttachmentMap::setPhysicalIndex(NS::UInteger physicalIndex, NS::UInteger logicalIndex)789{790    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPhysicalIndex_forLogicalIndex_), physicalIndex, logicalIndex);791}792793_MTL_INLINE MTL::RenderPipelineReflection* MTL::RenderPipelineReflection::alloc()794{795    return NS::Object::alloc<MTL::RenderPipelineReflection>(_MTL_PRIVATE_CLS(MTLRenderPipelineReflection));796}797798_MTL_INLINE NS::Array* MTL::RenderPipelineReflection::fragmentArguments() const799{800    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(fragmentArguments));801}802803_MTL_INLINE NS::Array* MTL::RenderPipelineReflection::fragmentBindings() const804{805    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(fragmentBindings));806}807808_MTL_INLINE MTL::RenderPipelineReflection* MTL::RenderPipelineReflection::init()809{810    return NS::Object::init<MTL::RenderPipelineReflection>();811}812813_MTL_INLINE NS::Array* MTL::RenderPipelineReflection::meshBindings() const814{815    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(meshBindings));816}817818_MTL_INLINE NS::Array* MTL::RenderPipelineReflection::objectBindings() const819{820    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(objectBindings));821}822823_MTL_INLINE NS::Array* MTL::RenderPipelineReflection::tileArguments() const824{825    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(tileArguments));826}827828_MTL_INLINE NS::Array* MTL::RenderPipelineReflection::tileBindings() const829{830    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(tileBindings));831}832833_MTL_INLINE NS::Array* MTL::RenderPipelineReflection::vertexArguments() const834{835    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(vertexArguments));836}837838_MTL_INLINE NS::Array* MTL::RenderPipelineReflection::vertexBindings() const839{840    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(vertexBindings));841}842843_MTL_INLINE MTL::RenderPipelineDescriptor* MTL::RenderPipelineDescriptor::alloc()844{845    return NS::Object::alloc<MTL::RenderPipelineDescriptor>(_MTL_PRIVATE_CLS(MTLRenderPipelineDescriptor));846}847848_MTL_INLINE bool MTL::RenderPipelineDescriptor::alphaToCoverageEnabled() const849{850    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isAlphaToCoverageEnabled));851}852853_MTL_INLINE bool MTL::RenderPipelineDescriptor::alphaToOneEnabled() const854{855    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isAlphaToOneEnabled));856}857858_MTL_INLINE NS::Array* MTL::RenderPipelineDescriptor::binaryArchives() const859{860    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(binaryArchives));861}862863_MTL_INLINE MTL::RenderPipelineColorAttachmentDescriptorArray* MTL::RenderPipelineDescriptor::colorAttachments() const864{865    return Object::sendMessage<MTL::RenderPipelineColorAttachmentDescriptorArray*>(this, _MTL_PRIVATE_SEL(colorAttachments));866}867868_MTL_INLINE MTL::PixelFormat MTL::RenderPipelineDescriptor::depthAttachmentPixelFormat() const869{870    return Object::sendMessage<MTL::PixelFormat>(this, _MTL_PRIVATE_SEL(depthAttachmentPixelFormat));871}872873_MTL_INLINE MTL::PipelineBufferDescriptorArray* MTL::RenderPipelineDescriptor::fragmentBuffers() const874{875    return Object::sendMessage<MTL::PipelineBufferDescriptorArray*>(this, _MTL_PRIVATE_SEL(fragmentBuffers));876}877878_MTL_INLINE MTL::Function* MTL::RenderPipelineDescriptor::fragmentFunction() const879{880    return Object::sendMessage<MTL::Function*>(this, _MTL_PRIVATE_SEL(fragmentFunction));881}882883_MTL_INLINE MTL::LinkedFunctions* MTL::RenderPipelineDescriptor::fragmentLinkedFunctions() const884{885    return Object::sendMessage<MTL::LinkedFunctions*>(this, _MTL_PRIVATE_SEL(fragmentLinkedFunctions));886}887888_MTL_INLINE NS::Array* MTL::RenderPipelineDescriptor::fragmentPreloadedLibraries() const889{890    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(fragmentPreloadedLibraries));891}892893_MTL_INLINE MTL::RenderPipelineDescriptor* MTL::RenderPipelineDescriptor::init()894{895    return NS::Object::init<MTL::RenderPipelineDescriptor>();896}897898_MTL_INLINE MTL::PrimitiveTopologyClass MTL::RenderPipelineDescriptor::inputPrimitiveTopology() const899{900    return Object::sendMessage<MTL::PrimitiveTopologyClass>(this, _MTL_PRIVATE_SEL(inputPrimitiveTopology));901}902903_MTL_INLINE bool MTL::RenderPipelineDescriptor::isAlphaToCoverageEnabled() const904{905    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isAlphaToCoverageEnabled));906}907908_MTL_INLINE bool MTL::RenderPipelineDescriptor::isAlphaToOneEnabled() const909{910    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isAlphaToOneEnabled));911}912913_MTL_INLINE bool MTL::RenderPipelineDescriptor::isRasterizationEnabled() const914{915    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isRasterizationEnabled));916}917918_MTL_INLINE bool MTL::RenderPipelineDescriptor::isTessellationFactorScaleEnabled() const919{920    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isTessellationFactorScaleEnabled));921}922923_MTL_INLINE NS::String* MTL::RenderPipelineDescriptor::label() const924{925    return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));926}927928_MTL_INLINE NS::UInteger MTL::RenderPipelineDescriptor::maxFragmentCallStackDepth() const929{930    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxFragmentCallStackDepth));931}932933_MTL_INLINE NS::UInteger MTL::RenderPipelineDescriptor::maxTessellationFactor() const934{935    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxTessellationFactor));936}937938_MTL_INLINE NS::UInteger MTL::RenderPipelineDescriptor::maxVertexAmplificationCount() const939{940    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxVertexAmplificationCount));941}942943_MTL_INLINE NS::UInteger MTL::RenderPipelineDescriptor::maxVertexCallStackDepth() const944{945    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxVertexCallStackDepth));946}947948_MTL_INLINE NS::UInteger MTL::RenderPipelineDescriptor::rasterSampleCount() const949{950    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(rasterSampleCount));951}952953_MTL_INLINE bool MTL::RenderPipelineDescriptor::rasterizationEnabled() const954{955    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isRasterizationEnabled));956}957958_MTL_INLINE void MTL::RenderPipelineDescriptor::reset()959{960    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(reset));961}962963_MTL_INLINE NS::UInteger MTL::RenderPipelineDescriptor::sampleCount() const964{965    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(sampleCount));966}967968_MTL_INLINE void MTL::RenderPipelineDescriptor::setAlphaToCoverageEnabled(bool alphaToCoverageEnabled)969{970    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setAlphaToCoverageEnabled_), alphaToCoverageEnabled);971}972973_MTL_INLINE void MTL::RenderPipelineDescriptor::setAlphaToOneEnabled(bool alphaToOneEnabled)974{975    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setAlphaToOneEnabled_), alphaToOneEnabled);976}977978_MTL_INLINE void MTL::RenderPipelineDescriptor::setBinaryArchives(const NS::Array* binaryArchives)979{980    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBinaryArchives_), binaryArchives);981}982983_MTL_INLINE void MTL::RenderPipelineDescriptor::setDepthAttachmentPixelFormat(MTL::PixelFormat depthAttachmentPixelFormat)984{985    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthAttachmentPixelFormat_), depthAttachmentPixelFormat);986}987988_MTL_INLINE void MTL::RenderPipelineDescriptor::setFragmentFunction(const MTL::Function* fragmentFunction)989{990    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFragmentFunction_), fragmentFunction);991}992993_MTL_INLINE void MTL::RenderPipelineDescriptor::setFragmentLinkedFunctions(const MTL::LinkedFunctions* fragmentLinkedFunctions)994{995    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFragmentLinkedFunctions_), fragmentLinkedFunctions);996}997998_MTL_INLINE void MTL::RenderPipelineDescriptor::setFragmentPreloadedLibraries(const NS::Array* fragmentPreloadedLibraries)999{1000    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFragmentPreloadedLibraries_), fragmentPreloadedLibraries);1001}10021003_MTL_INLINE void MTL::RenderPipelineDescriptor::setInputPrimitiveTopology(MTL::PrimitiveTopologyClass inputPrimitiveTopology)1004{1005    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInputPrimitiveTopology_), inputPrimitiveTopology);1006}10071008_MTL_INLINE void MTL::RenderPipelineDescriptor::setLabel(const NS::String* label)1009{1010    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);1011}10121013_MTL_INLINE void MTL::RenderPipelineDescriptor::setMaxFragmentCallStackDepth(NS::UInteger maxFragmentCallStackDepth)1014{1015    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxFragmentCallStackDepth_), maxFragmentCallStackDepth);1016}10171018_MTL_INLINE void MTL::RenderPipelineDescriptor::setMaxTessellationFactor(NS::UInteger maxTessellationFactor)1019{1020    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxTessellationFactor_), maxTessellationFactor);1021}10221023_MTL_INLINE void MTL::RenderPipelineDescriptor::setMaxVertexAmplificationCount(NS::UInteger maxVertexAmplificationCount)1024{1025    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxVertexAmplificationCount_), maxVertexAmplificationCount);1026}10271028_MTL_INLINE void MTL::RenderPipelineDescriptor::setMaxVertexCallStackDepth(NS::UInteger maxVertexCallStackDepth)1029{1030    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxVertexCallStackDepth_), maxVertexCallStackDepth);1031}10321033_MTL_INLINE void MTL::RenderPipelineDescriptor::setRasterSampleCount(NS::UInteger rasterSampleCount)1034{1035    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRasterSampleCount_), rasterSampleCount);1036}10371038_MTL_INLINE void MTL::RenderPipelineDescriptor::setRasterizationEnabled(bool rasterizationEnabled)1039{1040    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRasterizationEnabled_), rasterizationEnabled);1041}10421043_MTL_INLINE void MTL::RenderPipelineDescriptor::setSampleCount(NS::UInteger sampleCount)1044{1045    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSampleCount_), sampleCount);1046}10471048_MTL_INLINE void MTL::RenderPipelineDescriptor::setShaderValidation(MTL::ShaderValidation shaderValidation)1049{1050    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setShaderValidation_), shaderValidation);1051}10521053_MTL_INLINE void MTL::RenderPipelineDescriptor::setStencilAttachmentPixelFormat(MTL::PixelFormat stencilAttachmentPixelFormat)1054{1055    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStencilAttachmentPixelFormat_), stencilAttachmentPixelFormat);1056}10571058_MTL_INLINE void MTL::RenderPipelineDescriptor::setSupportAddingFragmentBinaryFunctions(bool supportAddingFragmentBinaryFunctions)1059{1060    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSupportAddingFragmentBinaryFunctions_), supportAddingFragmentBinaryFunctions);1061}10621063_MTL_INLINE void MTL::RenderPipelineDescriptor::setSupportAddingVertexBinaryFunctions(bool supportAddingVertexBinaryFunctions)1064{1065    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSupportAddingVertexBinaryFunctions_), supportAddingVertexBinaryFunctions);1066}10671068_MTL_INLINE void MTL::RenderPipelineDescriptor::setSupportIndirectCommandBuffers(bool supportIndirectCommandBuffers)1069{1070    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSupportIndirectCommandBuffers_), supportIndirectCommandBuffers);1071}10721073_MTL_INLINE void MTL::RenderPipelineDescriptor::setTessellationControlPointIndexType(MTL::TessellationControlPointIndexType tessellationControlPointIndexType)1074{1075    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTessellationControlPointIndexType_), tessellationControlPointIndexType);1076}10771078_MTL_INLINE void MTL::RenderPipelineDescriptor::setTessellationFactorFormat(MTL::TessellationFactorFormat tessellationFactorFormat)1079{1080    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTessellationFactorFormat_), tessellationFactorFormat);1081}10821083_MTL_INLINE void MTL::RenderPipelineDescriptor::setTessellationFactorScaleEnabled(bool tessellationFactorScaleEnabled)1084{1085    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTessellationFactorScaleEnabled_), tessellationFactorScaleEnabled);1086}10871088_MTL_INLINE void MTL::RenderPipelineDescriptor::setTessellationFactorStepFunction(MTL::TessellationFactorStepFunction tessellationFactorStepFunction)1089{1090    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTessellationFactorStepFunction_), tessellationFactorStepFunction);1091}10921093_MTL_INLINE void MTL::RenderPipelineDescriptor::setTessellationOutputWindingOrder(MTL::Winding tessellationOutputWindingOrder)1094{1095    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTessellationOutputWindingOrder_), tessellationOutputWindingOrder);1096}10971098_MTL_INLINE void MTL::RenderPipelineDescriptor::setTessellationPartitionMode(MTL::TessellationPartitionMode tessellationPartitionMode)1099{1100    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTessellationPartitionMode_), tessellationPartitionMode);1101}11021103_MTL_INLINE void MTL::RenderPipelineDescriptor::setVertexDescriptor(const MTL::VertexDescriptor* vertexDescriptor)1104{1105    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexDescriptor_), vertexDescriptor);1106}11071108_MTL_INLINE void MTL::RenderPipelineDescriptor::setVertexFunction(const MTL::Function* vertexFunction)1109{1110    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexFunction_), vertexFunction);1111}11121113_MTL_INLINE void MTL::RenderPipelineDescriptor::setVertexLinkedFunctions(const MTL::LinkedFunctions* vertexLinkedFunctions)1114{1115    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexLinkedFunctions_), vertexLinkedFunctions);1116}11171118_MTL_INLINE void MTL::RenderPipelineDescriptor::setVertexPreloadedLibraries(const NS::Array* vertexPreloadedLibraries)1119{1120    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexPreloadedLibraries_), vertexPreloadedLibraries);1121}11221123_MTL_INLINE MTL::ShaderValidation MTL::RenderPipelineDescriptor::shaderValidation() const1124{1125    return Object::sendMessage<MTL::ShaderValidation>(this, _MTL_PRIVATE_SEL(shaderValidation));1126}11271128_MTL_INLINE MTL::PixelFormat MTL::RenderPipelineDescriptor::stencilAttachmentPixelFormat() const1129{1130    return Object::sendMessage<MTL::PixelFormat>(this, _MTL_PRIVATE_SEL(stencilAttachmentPixelFormat));1131}11321133_MTL_INLINE bool MTL::RenderPipelineDescriptor::supportAddingFragmentBinaryFunctions() const1134{1135    return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportAddingFragmentBinaryFunctions));1136}11371138_MTL_INLINE bool MTL::RenderPipelineDescriptor::supportAddingVertexBinaryFunctions() const1139{1140    return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportAddingVertexBinaryFunctions));1141}11421143_MTL_INLINE bool MTL::RenderPipelineDescriptor::supportIndirectCommandBuffers() const1144{1145    return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportIndirectCommandBuffers));1146}11471148_MTL_INLINE MTL::TessellationControlPointIndexType MTL::RenderPipelineDescriptor::tessellationControlPointIndexType() const1149{1150    return Object::sendMessage<MTL::TessellationControlPointIndexType>(this, _MTL_PRIVATE_SEL(tessellationControlPointIndexType));1151}11521153_MTL_INLINE MTL::TessellationFactorFormat MTL::RenderPipelineDescriptor::tessellationFactorFormat() const1154{1155    return Object::sendMessage<MTL::TessellationFactorFormat>(this, _MTL_PRIVATE_SEL(tessellationFactorFormat));1156}11571158_MTL_INLINE bool MTL::RenderPipelineDescriptor::tessellationFactorScaleEnabled() const1159{1160    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isTessellationFactorScaleEnabled));1161}11621163_MTL_INLINE MTL::TessellationFactorStepFunction MTL::RenderPipelineDescriptor::tessellationFactorStepFunction() const1164{1165    return Object::sendMessage<MTL::TessellationFactorStepFunction>(this, _MTL_PRIVATE_SEL(tessellationFactorStepFunction));1166}11671168_MTL_INLINE MTL::Winding MTL::RenderPipelineDescriptor::tessellationOutputWindingOrder() const1169{1170    return Object::sendMessage<MTL::Winding>(this, _MTL_PRIVATE_SEL(tessellationOutputWindingOrder));1171}11721173_MTL_INLINE MTL::TessellationPartitionMode MTL::RenderPipelineDescriptor::tessellationPartitionMode() const1174{1175    return Object::sendMessage<MTL::TessellationPartitionMode>(this, _MTL_PRIVATE_SEL(tessellationPartitionMode));1176}11771178_MTL_INLINE MTL::PipelineBufferDescriptorArray* MTL::RenderPipelineDescriptor::vertexBuffers() const1179{1180    return Object::sendMessage<MTL::PipelineBufferDescriptorArray*>(this, _MTL_PRIVATE_SEL(vertexBuffers));1181}11821183_MTL_INLINE MTL::VertexDescriptor* MTL::RenderPipelineDescriptor::vertexDescriptor() const1184{1185    return Object::sendMessage<MTL::VertexDescriptor*>(this, _MTL_PRIVATE_SEL(vertexDescriptor));1186}11871188_MTL_INLINE MTL::Function* MTL::RenderPipelineDescriptor::vertexFunction() const1189{1190    return Object::sendMessage<MTL::Function*>(this, _MTL_PRIVATE_SEL(vertexFunction));1191}11921193_MTL_INLINE MTL::LinkedFunctions* MTL::RenderPipelineDescriptor::vertexLinkedFunctions() const1194{1195    return Object::sendMessage<MTL::LinkedFunctions*>(this, _MTL_PRIVATE_SEL(vertexLinkedFunctions));1196}11971198_MTL_INLINE NS::Array* MTL::RenderPipelineDescriptor::vertexPreloadedLibraries() const1199{1200    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(vertexPreloadedLibraries));1201}12021203_MTL_INLINE MTL::RenderPipelineFunctionsDescriptor* MTL::RenderPipelineFunctionsDescriptor::alloc()1204{1205    return NS::Object::alloc<MTL::RenderPipelineFunctionsDescriptor>(_MTL_PRIVATE_CLS(MTLRenderPipelineFunctionsDescriptor));1206}12071208_MTL_INLINE NS::Array* MTL::RenderPipelineFunctionsDescriptor::fragmentAdditionalBinaryFunctions() const1209{1210    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(fragmentAdditionalBinaryFunctions));1211}12121213_MTL_INLINE MTL::RenderPipelineFunctionsDescriptor* MTL::RenderPipelineFunctionsDescriptor::init()1214{1215    return NS::Object::init<MTL::RenderPipelineFunctionsDescriptor>();1216}12171218_MTL_INLINE void MTL::RenderPipelineFunctionsDescriptor::setFragmentAdditionalBinaryFunctions(const NS::Array* fragmentAdditionalBinaryFunctions)1219{1220    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFragmentAdditionalBinaryFunctions_), fragmentAdditionalBinaryFunctions);1221}12221223_MTL_INLINE void MTL::RenderPipelineFunctionsDescriptor::setTileAdditionalBinaryFunctions(const NS::Array* tileAdditionalBinaryFunctions)1224{1225    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTileAdditionalBinaryFunctions_), tileAdditionalBinaryFunctions);1226}12271228_MTL_INLINE void MTL::RenderPipelineFunctionsDescriptor::setVertexAdditionalBinaryFunctions(const NS::Array* vertexAdditionalBinaryFunctions)1229{1230    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexAdditionalBinaryFunctions_), vertexAdditionalBinaryFunctions);1231}12321233_MTL_INLINE NS::Array* MTL::RenderPipelineFunctionsDescriptor::tileAdditionalBinaryFunctions() const1234{1235    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(tileAdditionalBinaryFunctions));1236}12371238_MTL_INLINE NS::Array* MTL::RenderPipelineFunctionsDescriptor::vertexAdditionalBinaryFunctions() const1239{1240    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(vertexAdditionalBinaryFunctions));1241}12421243_MTL_INLINE MTL::Device* MTL::RenderPipelineState::device() const1244{1245    return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device));1246}12471248_MTL_INLINE MTL::FunctionHandle* MTL::RenderPipelineState::functionHandle(const NS::String* name, MTL::RenderStages stage)1249{1250    return Object::sendMessage<MTL::FunctionHandle*>(this, _MTL_PRIVATE_SEL(functionHandleWithName_stage_), name, stage);1251}12521253_MTL_INLINE MTL::FunctionHandle* MTL::RenderPipelineState::functionHandle(const MTL4::BinaryFunction* function, MTL::RenderStages stage)1254{1255    return Object::sendMessage<MTL::FunctionHandle*>(this, _MTL_PRIVATE_SEL(functionHandleWithBinaryFunction_stage_), function, stage);1256}12571258_MTL_INLINE MTL::FunctionHandle* MTL::RenderPipelineState::functionHandle(const MTL::Function* function, MTL::RenderStages stage)1259{1260    return Object::sendMessage<MTL::FunctionHandle*>(this, _MTL_PRIVATE_SEL(functionHandleWithFunction_stage_), function, stage);1261}12621263_MTL_INLINE MTL::ResourceID MTL::RenderPipelineState::gpuResourceID() const1264{1265    return Object::sendMessage<MTL::ResourceID>(this, _MTL_PRIVATE_SEL(gpuResourceID));1266}12671268_MTL_INLINE NS::UInteger MTL::RenderPipelineState::imageblockMemoryLength(MTL::Size imageblockDimensions)1269{1270    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(imageblockMemoryLengthForDimensions_), imageblockDimensions);1271}12721273_MTL_INLINE NS::UInteger MTL::RenderPipelineState::imageblockSampleLength() const1274{1275    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(imageblockSampleLength));1276}12771278_MTL_INLINE NS::String* MTL::RenderPipelineState::label() const1279{1280    return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));1281}12821283_MTL_INLINE NS::UInteger MTL::RenderPipelineState::maxTotalThreadgroupsPerMeshGrid() const1284{1285    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxTotalThreadgroupsPerMeshGrid));1286}12871288_MTL_INLINE NS::UInteger MTL::RenderPipelineState::maxTotalThreadsPerMeshThreadgroup() const1289{1290    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxTotalThreadsPerMeshThreadgroup));1291}12921293_MTL_INLINE NS::UInteger MTL::RenderPipelineState::maxTotalThreadsPerObjectThreadgroup() const1294{1295    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxTotalThreadsPerObjectThreadgroup));1296}12971298_MTL_INLINE NS::UInteger MTL::RenderPipelineState::maxTotalThreadsPerThreadgroup() const1299{1300    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxTotalThreadsPerThreadgroup));1301}13021303_MTL_INLINE NS::UInteger MTL::RenderPipelineState::meshThreadExecutionWidth() const1304{1305    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(meshThreadExecutionWidth));1306}13071308_MTL_INLINE MTL::IntersectionFunctionTable* MTL::RenderPipelineState::newIntersectionFunctionTable(const MTL::IntersectionFunctionTableDescriptor* descriptor, MTL::RenderStages stage)1309{1310    return Object::sendMessage<MTL::IntersectionFunctionTable*>(this, _MTL_PRIVATE_SEL(newIntersectionFunctionTableWithDescriptor_stage_), descriptor, stage);1311}13121313_MTL_INLINE MTL4::PipelineDescriptor* MTL::RenderPipelineState::newRenderPipelineDescriptor()1314{1315    return Object::sendMessage<MTL4::PipelineDescriptor*>(this, _MTL_PRIVATE_SEL(newRenderPipelineDescriptorForSpecialization));1316}13171318_MTL_INLINE MTL::RenderPipelineState* MTL::RenderPipelineState::newRenderPipelineState(const MTL4::RenderPipelineBinaryFunctionsDescriptor* binaryFunctionsDescriptor, NS::Error** error)1319{1320    return Object::sendMessage<MTL::RenderPipelineState*>(this, _MTL_PRIVATE_SEL(newRenderPipelineStateWithBinaryFunctions_error_), binaryFunctionsDescriptor, error);1321}13221323_MTL_INLINE MTL::RenderPipelineState* MTL::RenderPipelineState::newRenderPipelineState(const MTL::RenderPipelineFunctionsDescriptor* additionalBinaryFunctions, NS::Error** error)1324{1325    return Object::sendMessage<MTL::RenderPipelineState*>(this, _MTL_PRIVATE_SEL(newRenderPipelineStateWithAdditionalBinaryFunctions_error_), additionalBinaryFunctions, error);1326}13271328_MTL_INLINE MTL::VisibleFunctionTable* MTL::RenderPipelineState::newVisibleFunctionTable(const MTL::VisibleFunctionTableDescriptor* descriptor, MTL::RenderStages stage)1329{1330    return Object::sendMessage<MTL::VisibleFunctionTable*>(this, _MTL_PRIVATE_SEL(newVisibleFunctionTableWithDescriptor_stage_), descriptor, stage);1331}13321333_MTL_INLINE NS::UInteger MTL::RenderPipelineState::objectThreadExecutionWidth() const1334{1335    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(objectThreadExecutionWidth));1336}13371338_MTL_INLINE MTL::RenderPipelineReflection* MTL::RenderPipelineState::reflection() const1339{1340    return Object::sendMessage<MTL::RenderPipelineReflection*>(this, _MTL_PRIVATE_SEL(reflection));1341}13421343_MTL_INLINE MTL::Size MTL::RenderPipelineState::requiredThreadsPerMeshThreadgroup() const1344{1345    return Object::sendMessage<MTL::Size>(this, _MTL_PRIVATE_SEL(requiredThreadsPerMeshThreadgroup));1346}13471348_MTL_INLINE MTL::Size MTL::RenderPipelineState::requiredThreadsPerObjectThreadgroup() const1349{1350    return Object::sendMessage<MTL::Size>(this, _MTL_PRIVATE_SEL(requiredThreadsPerObjectThreadgroup));1351}13521353_MTL_INLINE MTL::Size MTL::RenderPipelineState::requiredThreadsPerTileThreadgroup() const1354{1355    return Object::sendMessage<MTL::Size>(this, _MTL_PRIVATE_SEL(requiredThreadsPerTileThreadgroup));1356}13571358_MTL_INLINE MTL::ShaderValidation MTL::RenderPipelineState::shaderValidation() const1359{1360    return Object::sendMessage<MTL::ShaderValidation>(this, _MTL_PRIVATE_SEL(shaderValidation));1361}13621363_MTL_INLINE bool MTL::RenderPipelineState::supportIndirectCommandBuffers() const1364{1365    return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportIndirectCommandBuffers));1366}13671368_MTL_INLINE bool MTL::RenderPipelineState::threadgroupSizeMatchesTileSize() const1369{1370    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(threadgroupSizeMatchesTileSize));1371}13721373_MTL_INLINE MTL::RenderPipelineColorAttachmentDescriptorArray* MTL::RenderPipelineColorAttachmentDescriptorArray::alloc()1374{1375    return NS::Object::alloc<MTL::RenderPipelineColorAttachmentDescriptorArray>(_MTL_PRIVATE_CLS(MTLRenderPipelineColorAttachmentDescriptorArray));1376}13771378_MTL_INLINE MTL::RenderPipelineColorAttachmentDescriptorArray* MTL::RenderPipelineColorAttachmentDescriptorArray::init()1379{1380    return NS::Object::init<MTL::RenderPipelineColorAttachmentDescriptorArray>();1381}13821383_MTL_INLINE MTL::RenderPipelineColorAttachmentDescriptor* MTL::RenderPipelineColorAttachmentDescriptorArray::object(NS::UInteger attachmentIndex)1384{1385    return Object::sendMessage<MTL::RenderPipelineColorAttachmentDescriptor*>(this, _MTL_PRIVATE_SEL(objectAtIndexedSubscript_), attachmentIndex);1386}13871388_MTL_INLINE void MTL::RenderPipelineColorAttachmentDescriptorArray::setObject(const MTL::RenderPipelineColorAttachmentDescriptor* attachment, NS::UInteger attachmentIndex)1389{1390    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setObject_atIndexedSubscript_), attachment, attachmentIndex);1391}13921393_MTL_INLINE MTL::TileRenderPipelineColorAttachmentDescriptor* MTL::TileRenderPipelineColorAttachmentDescriptor::alloc()1394{1395    return NS::Object::alloc<MTL::TileRenderPipelineColorAttachmentDescriptor>(_MTL_PRIVATE_CLS(MTLTileRenderPipelineColorAttachmentDescriptor));1396}13971398_MTL_INLINE MTL::TileRenderPipelineColorAttachmentDescriptor* MTL::TileRenderPipelineColorAttachmentDescriptor::init()1399{1400    return NS::Object::init<MTL::TileRenderPipelineColorAttachmentDescriptor>();1401}14021403_MTL_INLINE MTL::PixelFormat MTL::TileRenderPipelineColorAttachmentDescriptor::pixelFormat() const1404{1405    return Object::sendMessage<MTL::PixelFormat>(this, _MTL_PRIVATE_SEL(pixelFormat));1406}14071408_MTL_INLINE void MTL::TileRenderPipelineColorAttachmentDescriptor::setPixelFormat(MTL::PixelFormat pixelFormat)1409{1410    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPixelFormat_), pixelFormat);1411}14121413_MTL_INLINE MTL::TileRenderPipelineColorAttachmentDescriptorArray* MTL::TileRenderPipelineColorAttachmentDescriptorArray::alloc()1414{1415    return NS::Object::alloc<MTL::TileRenderPipelineColorAttachmentDescriptorArray>(_MTL_PRIVATE_CLS(MTLTileRenderPipelineColorAttachmentDescriptorArray));1416}14171418_MTL_INLINE MTL::TileRenderPipelineColorAttachmentDescriptorArray* MTL::TileRenderPipelineColorAttachmentDescriptorArray::init()1419{1420    return NS::Object::init<MTL::TileRenderPipelineColorAttachmentDescriptorArray>();1421}14221423_MTL_INLINE MTL::TileRenderPipelineColorAttachmentDescriptor* MTL::TileRenderPipelineColorAttachmentDescriptorArray::object(NS::UInteger attachmentIndex)1424{1425    return Object::sendMessage<MTL::TileRenderPipelineColorAttachmentDescriptor*>(this, _MTL_PRIVATE_SEL(objectAtIndexedSubscript_), attachmentIndex);1426}14271428_MTL_INLINE void MTL::TileRenderPipelineColorAttachmentDescriptorArray::setObject(const MTL::TileRenderPipelineColorAttachmentDescriptor* attachment, NS::UInteger attachmentIndex)1429{1430    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setObject_atIndexedSubscript_), attachment, attachmentIndex);1431}14321433_MTL_INLINE MTL::TileRenderPipelineDescriptor* MTL::TileRenderPipelineDescriptor::alloc()1434{1435    return NS::Object::alloc<MTL::TileRenderPipelineDescriptor>(_MTL_PRIVATE_CLS(MTLTileRenderPipelineDescriptor));1436}14371438_MTL_INLINE NS::Array* MTL::TileRenderPipelineDescriptor::binaryArchives() const1439{1440    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(binaryArchives));1441}14421443_MTL_INLINE MTL::TileRenderPipelineColorAttachmentDescriptorArray* MTL::TileRenderPipelineDescriptor::colorAttachments() const1444{1445    return Object::sendMessage<MTL::TileRenderPipelineColorAttachmentDescriptorArray*>(this, _MTL_PRIVATE_SEL(colorAttachments));1446}14471448_MTL_INLINE MTL::TileRenderPipelineDescriptor* MTL::TileRenderPipelineDescriptor::init()1449{1450    return NS::Object::init<MTL::TileRenderPipelineDescriptor>();1451}14521453_MTL_INLINE NS::String* MTL::TileRenderPipelineDescriptor::label() const1454{1455    return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));1456}14571458_MTL_INLINE MTL::LinkedFunctions* MTL::TileRenderPipelineDescriptor::linkedFunctions() const1459{1460    return Object::sendMessage<MTL::LinkedFunctions*>(this, _MTL_PRIVATE_SEL(linkedFunctions));1461}14621463_MTL_INLINE NS::UInteger MTL::TileRenderPipelineDescriptor::maxCallStackDepth() const1464{1465    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxCallStackDepth));1466}14671468_MTL_INLINE NS::UInteger MTL::TileRenderPipelineDescriptor::maxTotalThreadsPerThreadgroup() const1469{1470    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxTotalThreadsPerThreadgroup));1471}14721473_MTL_INLINE NS::Array* MTL::TileRenderPipelineDescriptor::preloadedLibraries() const1474{1475    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(preloadedLibraries));1476}14771478_MTL_INLINE NS::UInteger MTL::TileRenderPipelineDescriptor::rasterSampleCount() const1479{1480    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(rasterSampleCount));1481}14821483_MTL_INLINE MTL::Size MTL::TileRenderPipelineDescriptor::requiredThreadsPerThreadgroup() const1484{1485    return Object::sendMessage<MTL::Size>(this, _MTL_PRIVATE_SEL(requiredThreadsPerThreadgroup));1486}14871488_MTL_INLINE void MTL::TileRenderPipelineDescriptor::reset()1489{1490    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(reset));1491}14921493_MTL_INLINE void MTL::TileRenderPipelineDescriptor::setBinaryArchives(const NS::Array* binaryArchives)1494{1495    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBinaryArchives_), binaryArchives);1496}14971498_MTL_INLINE void MTL::TileRenderPipelineDescriptor::setLabel(const NS::String* label)1499{1500    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);1501}15021503_MTL_INLINE void MTL::TileRenderPipelineDescriptor::setLinkedFunctions(const MTL::LinkedFunctions* linkedFunctions)1504{1505    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLinkedFunctions_), linkedFunctions);1506}15071508_MTL_INLINE void MTL::TileRenderPipelineDescriptor::setMaxCallStackDepth(NS::UInteger maxCallStackDepth)1509{1510    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxCallStackDepth_), maxCallStackDepth);1511}15121513_MTL_INLINE void MTL::TileRenderPipelineDescriptor::setMaxTotalThreadsPerThreadgroup(NS::UInteger maxTotalThreadsPerThreadgroup)1514{1515    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxTotalThreadsPerThreadgroup_), maxTotalThreadsPerThreadgroup);1516}15171518_MTL_INLINE void MTL::TileRenderPipelineDescriptor::setPreloadedLibraries(const NS::Array* preloadedLibraries)1519{1520    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPreloadedLibraries_), preloadedLibraries);1521}15221523_MTL_INLINE void MTL::TileRenderPipelineDescriptor::setRasterSampleCount(NS::UInteger rasterSampleCount)1524{1525    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRasterSampleCount_), rasterSampleCount);1526}15271528_MTL_INLINE void MTL::TileRenderPipelineDescriptor::setRequiredThreadsPerThreadgroup(MTL::Size requiredThreadsPerThreadgroup)1529{1530    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRequiredThreadsPerThreadgroup_), requiredThreadsPerThreadgroup);1531}15321533_MTL_INLINE void MTL::TileRenderPipelineDescriptor::setShaderValidation(MTL::ShaderValidation shaderValidation)1534{1535    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setShaderValidation_), shaderValidation);1536}15371538_MTL_INLINE void MTL::TileRenderPipelineDescriptor::setSupportAddingBinaryFunctions(bool supportAddingBinaryFunctions)1539{1540    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSupportAddingBinaryFunctions_), supportAddingBinaryFunctions);1541}15421543_MTL_INLINE void MTL::TileRenderPipelineDescriptor::setThreadgroupSizeMatchesTileSize(bool threadgroupSizeMatchesTileSize)1544{1545    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setThreadgroupSizeMatchesTileSize_), threadgroupSizeMatchesTileSize);1546}15471548_MTL_INLINE void MTL::TileRenderPipelineDescriptor::setTileFunction(const MTL::Function* tileFunction)1549{1550    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTileFunction_), tileFunction);1551}15521553_MTL_INLINE MTL::ShaderValidation MTL::TileRenderPipelineDescriptor::shaderValidation() const1554{1555    return Object::sendMessage<MTL::ShaderValidation>(this, _MTL_PRIVATE_SEL(shaderValidation));1556}15571558_MTL_INLINE bool MTL::TileRenderPipelineDescriptor::supportAddingBinaryFunctions() const1559{1560    return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportAddingBinaryFunctions));1561}15621563_MTL_INLINE bool MTL::TileRenderPipelineDescriptor::threadgroupSizeMatchesTileSize() const1564{1565    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(threadgroupSizeMatchesTileSize));1566}15671568_MTL_INLINE MTL::PipelineBufferDescriptorArray* MTL::TileRenderPipelineDescriptor::tileBuffers() const1569{1570    return Object::sendMessage<MTL::PipelineBufferDescriptorArray*>(this, _MTL_PRIVATE_SEL(tileBuffers));1571}15721573_MTL_INLINE MTL::Function* MTL::TileRenderPipelineDescriptor::tileFunction() const1574{1575    return Object::sendMessage<MTL::Function*>(this, _MTL_PRIVATE_SEL(tileFunction));1576}15771578_MTL_INLINE MTL::MeshRenderPipelineDescriptor* MTL::MeshRenderPipelineDescriptor::alloc()1579{1580    return NS::Object::alloc<MTL::MeshRenderPipelineDescriptor>(_MTL_PRIVATE_CLS(MTLMeshRenderPipelineDescriptor));1581}15821583_MTL_INLINE bool MTL::MeshRenderPipelineDescriptor::alphaToCoverageEnabled() const1584{1585    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isAlphaToCoverageEnabled));1586}15871588_MTL_INLINE bool MTL::MeshRenderPipelineDescriptor::alphaToOneEnabled() const1589{1590    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isAlphaToOneEnabled));1591}15921593_MTL_INLINE NS::Array* MTL::MeshRenderPipelineDescriptor::binaryArchives() const1594{1595    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(binaryArchives));1596}15971598_MTL_INLINE MTL::RenderPipelineColorAttachmentDescriptorArray* MTL::MeshRenderPipelineDescriptor::colorAttachments() const1599{1600    return Object::sendMessage<MTL::RenderPipelineColorAttachmentDescriptorArray*>(this, _MTL_PRIVATE_SEL(colorAttachments));1601}16021603_MTL_INLINE MTL::PixelFormat MTL::MeshRenderPipelineDescriptor::depthAttachmentPixelFormat() const1604{1605    return Object::sendMessage<MTL::PixelFormat>(this, _MTL_PRIVATE_SEL(depthAttachmentPixelFormat));1606}16071608_MTL_INLINE MTL::PipelineBufferDescriptorArray* MTL::MeshRenderPipelineDescriptor::fragmentBuffers() const1609{1610    return Object::sendMessage<MTL::PipelineBufferDescriptorArray*>(this, _MTL_PRIVATE_SEL(fragmentBuffers));1611}16121613_MTL_INLINE MTL::Function* MTL::MeshRenderPipelineDescriptor::fragmentFunction() const1614{1615    return Object::sendMessage<MTL::Function*>(this, _MTL_PRIVATE_SEL(fragmentFunction));1616}16171618_MTL_INLINE MTL::LinkedFunctions* MTL::MeshRenderPipelineDescriptor::fragmentLinkedFunctions() const1619{1620    return Object::sendMessage<MTL::LinkedFunctions*>(this, _MTL_PRIVATE_SEL(fragmentLinkedFunctions));1621}16221623_MTL_INLINE MTL::MeshRenderPipelineDescriptor* MTL::MeshRenderPipelineDescriptor::init()1624{1625    return NS::Object::init<MTL::MeshRenderPipelineDescriptor>();1626}16271628_MTL_INLINE bool MTL::MeshRenderPipelineDescriptor::isAlphaToCoverageEnabled() const1629{1630    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isAlphaToCoverageEnabled));1631}16321633_MTL_INLINE bool MTL::MeshRenderPipelineDescriptor::isAlphaToOneEnabled() const1634{1635    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isAlphaToOneEnabled));1636}16371638_MTL_INLINE bool MTL::MeshRenderPipelineDescriptor::isRasterizationEnabled() const1639{1640    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isRasterizationEnabled));1641}16421643_MTL_INLINE NS::String* MTL::MeshRenderPipelineDescriptor::label() const1644{1645    return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));1646}16471648_MTL_INLINE NS::UInteger MTL::MeshRenderPipelineDescriptor::maxTotalThreadgroupsPerMeshGrid() const1649{1650    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxTotalThreadgroupsPerMeshGrid));1651}16521653_MTL_INLINE NS::UInteger MTL::MeshRenderPipelineDescriptor::maxTotalThreadsPerMeshThreadgroup() const1654{1655    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxTotalThreadsPerMeshThreadgroup));1656}16571658_MTL_INLINE NS::UInteger MTL::MeshRenderPipelineDescriptor::maxTotalThreadsPerObjectThreadgroup() const1659{1660    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxTotalThreadsPerObjectThreadgroup));1661}16621663_MTL_INLINE NS::UInteger MTL::MeshRenderPipelineDescriptor::maxVertexAmplificationCount() const1664{1665    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxVertexAmplificationCount));1666}16671668_MTL_INLINE MTL::PipelineBufferDescriptorArray* MTL::MeshRenderPipelineDescriptor::meshBuffers() const1669{1670    return Object::sendMessage<MTL::PipelineBufferDescriptorArray*>(this, _MTL_PRIVATE_SEL(meshBuffers));1671}16721673_MTL_INLINE MTL::Function* MTL::MeshRenderPipelineDescriptor::meshFunction() const1674{1675    return Object::sendMessage<MTL::Function*>(this, _MTL_PRIVATE_SEL(meshFunction));1676}16771678_MTL_INLINE MTL::LinkedFunctions* MTL::MeshRenderPipelineDescriptor::meshLinkedFunctions() const1679{1680    return Object::sendMessage<MTL::LinkedFunctions*>(this, _MTL_PRIVATE_SEL(meshLinkedFunctions));1681}16821683_MTL_INLINE bool MTL::MeshRenderPipelineDescriptor::meshThreadgroupSizeIsMultipleOfThreadExecutionWidth() const1684{1685    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(meshThreadgroupSizeIsMultipleOfThreadExecutionWidth));1686}16871688_MTL_INLINE MTL::PipelineBufferDescriptorArray* MTL::MeshRenderPipelineDescriptor::objectBuffers() const1689{1690    return Object::sendMessage<MTL::PipelineBufferDescriptorArray*>(this, _MTL_PRIVATE_SEL(objectBuffers));1691}16921693_MTL_INLINE MTL::Function* MTL::MeshRenderPipelineDescriptor::objectFunction() const1694{1695    return Object::sendMessage<MTL::Function*>(this, _MTL_PRIVATE_SEL(objectFunction));1696}16971698_MTL_INLINE MTL::LinkedFunctions* MTL::MeshRenderPipelineDescriptor::objectLinkedFunctions() const1699{1700    return Object::sendMessage<MTL::LinkedFunctions*>(this, _MTL_PRIVATE_SEL(objectLinkedFunctions));1701}17021703_MTL_INLINE bool MTL::MeshRenderPipelineDescriptor::objectThreadgroupSizeIsMultipleOfThreadExecutionWidth() const1704{1705    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(objectThreadgroupSizeIsMultipleOfThreadExecutionWidth));1706}17071708_MTL_INLINE NS::UInteger MTL::MeshRenderPipelineDescriptor::payloadMemoryLength() const1709{1710    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(payloadMemoryLength));1711}17121713_MTL_INLINE NS::UInteger MTL::MeshRenderPipelineDescriptor::rasterSampleCount() const1714{1715    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(rasterSampleCount));1716}17171718_MTL_INLINE bool MTL::MeshRenderPipelineDescriptor::rasterizationEnabled() const1719{1720    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isRasterizationEnabled));1721}17221723_MTL_INLINE MTL::Size MTL::MeshRenderPipelineDescriptor::requiredThreadsPerMeshThreadgroup() const1724{1725    return Object::sendMessage<MTL::Size>(this, _MTL_PRIVATE_SEL(requiredThreadsPerMeshThreadgroup));1726}17271728_MTL_INLINE MTL::Size MTL::MeshRenderPipelineDescriptor::requiredThreadsPerObjectThreadgroup() const1729{1730    return Object::sendMessage<MTL::Size>(this, _MTL_PRIVATE_SEL(requiredThreadsPerObjectThreadgroup));1731}17321733_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::reset()1734{1735    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(reset));1736}17371738_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setAlphaToCoverageEnabled(bool alphaToCoverageEnabled)1739{1740    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setAlphaToCoverageEnabled_), alphaToCoverageEnabled);1741}17421743_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setAlphaToOneEnabled(bool alphaToOneEnabled)1744{1745    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setAlphaToOneEnabled_), alphaToOneEnabled);1746}17471748_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setBinaryArchives(const NS::Array* binaryArchives)1749{1750    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBinaryArchives_), binaryArchives);1751}17521753_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setDepthAttachmentPixelFormat(MTL::PixelFormat depthAttachmentPixelFormat)1754{1755    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthAttachmentPixelFormat_), depthAttachmentPixelFormat);1756}17571758_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setFragmentFunction(const MTL::Function* fragmentFunction)1759{1760    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFragmentFunction_), fragmentFunction);1761}17621763_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setFragmentLinkedFunctions(const MTL::LinkedFunctions* fragmentLinkedFunctions)1764{1765    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFragmentLinkedFunctions_), fragmentLinkedFunctions);1766}17671768_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setLabel(const NS::String* label)1769{1770    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);1771}17721773_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setMaxTotalThreadgroupsPerMeshGrid(NS::UInteger maxTotalThreadgroupsPerMeshGrid)1774{1775    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxTotalThreadgroupsPerMeshGrid_), maxTotalThreadgroupsPerMeshGrid);1776}17771778_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setMaxTotalThreadsPerMeshThreadgroup(NS::UInteger maxTotalThreadsPerMeshThreadgroup)1779{1780    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxTotalThreadsPerMeshThreadgroup_), maxTotalThreadsPerMeshThreadgroup);1781}17821783_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setMaxTotalThreadsPerObjectThreadgroup(NS::UInteger maxTotalThreadsPerObjectThreadgroup)1784{1785    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxTotalThreadsPerObjectThreadgroup_), maxTotalThreadsPerObjectThreadgroup);1786}17871788_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setMaxVertexAmplificationCount(NS::UInteger maxVertexAmplificationCount)1789{1790    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxVertexAmplificationCount_), maxVertexAmplificationCount);1791}17921793_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setMeshFunction(const MTL::Function* meshFunction)1794{1795    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMeshFunction_), meshFunction);1796}17971798_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setMeshLinkedFunctions(const MTL::LinkedFunctions* meshLinkedFunctions)1799{1800    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMeshLinkedFunctions_), meshLinkedFunctions);1801}18021803_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setMeshThreadgroupSizeIsMultipleOfThreadExecutionWidth(bool meshThreadgroupSizeIsMultipleOfThreadExecutionWidth)1804{1805    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMeshThreadgroupSizeIsMultipleOfThreadExecutionWidth_), meshThreadgroupSizeIsMultipleOfThreadExecutionWidth);1806}18071808_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setObjectFunction(const MTL::Function* objectFunction)1809{1810    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setObjectFunction_), objectFunction);1811}18121813_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setObjectLinkedFunctions(const MTL::LinkedFunctions* objectLinkedFunctions)1814{1815    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setObjectLinkedFunctions_), objectLinkedFunctions);1816}18171818_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setObjectThreadgroupSizeIsMultipleOfThreadExecutionWidth(bool objectThreadgroupSizeIsMultipleOfThreadExecutionWidth)1819{1820    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setObjectThreadgroupSizeIsMultipleOfThreadExecutionWidth_), objectThreadgroupSizeIsMultipleOfThreadExecutionWidth);1821}18221823_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setPayloadMemoryLength(NS::UInteger payloadMemoryLength)1824{1825    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPayloadMemoryLength_), payloadMemoryLength);1826}18271828_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setRasterSampleCount(NS::UInteger rasterSampleCount)1829{1830    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRasterSampleCount_), rasterSampleCount);1831}18321833_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setRasterizationEnabled(bool rasterizationEnabled)1834{1835    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRasterizationEnabled_), rasterizationEnabled);1836}18371838_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setRequiredThreadsPerMeshThreadgroup(MTL::Size requiredThreadsPerMeshThreadgroup)1839{1840    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRequiredThreadsPerMeshThreadgroup_), requiredThreadsPerMeshThreadgroup);1841}18421843_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setRequiredThreadsPerObjectThreadgroup(MTL::Size requiredThreadsPerObjectThreadgroup)1844{1845    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRequiredThreadsPerObjectThreadgroup_), requiredThreadsPerObjectThreadgroup);1846}18471848_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setShaderValidation(MTL::ShaderValidation shaderValidation)1849{1850    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setShaderValidation_), shaderValidation);1851}18521853_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setStencilAttachmentPixelFormat(MTL::PixelFormat stencilAttachmentPixelFormat)1854{1855    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStencilAttachmentPixelFormat_), stencilAttachmentPixelFormat);1856}18571858_MTL_INLINE void MTL::MeshRenderPipelineDescriptor::setSupportIndirectCommandBuffers(bool supportIndirectCommandBuffers)1859{1860    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSupportIndirectCommandBuffers_), supportIndirectCommandBuffers);1861}18621863_MTL_INLINE MTL::ShaderValidation MTL::MeshRenderPipelineDescriptor::shaderValidation() const1864{1865    return Object::sendMessage<MTL::ShaderValidation>(this, _MTL_PRIVATE_SEL(shaderValidation));1866}18671868_MTL_INLINE MTL::PixelFormat MTL::MeshRenderPipelineDescriptor::stencilAttachmentPixelFormat() const1869{1870    return Object::sendMessage<MTL::PixelFormat>(this, _MTL_PRIVATE_SEL(stencilAttachmentPixelFormat));1871}18721873_MTL_INLINE bool MTL::MeshRenderPipelineDescriptor::supportIndirectCommandBuffers() const1874{1875    return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportIndirectCommandBuffers));1876}1877