Path: blob/master/thirdparty/metal-cpp/Metal/MTL4RenderPipeline.hpp
21345 views
//-------------------------------------------------------------------------------------------------------------------------------------------------------------1//2// Metal/MTL4RenderPipeline.hpp3//4// Copyright 2020-2025 Apple Inc.5//6// Licensed under the Apache License, Version 2.0 (the "License");7// you may not use this file except in compliance with the License.8// You may obtain a copy of the License at9//10// http://www.apache.org/licenses/LICENSE-2.011//12// Unless required by applicable law or agreed to in writing, software13// distributed under the License is distributed on an "AS IS" BASIS,14// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.15// See the License for the specific language governing permissions and16// limitations under the License.17//18//-------------------------------------------------------------------------------------------------------------------------------------------------------------1920#pragma once2122#include "../Foundation/Foundation.hpp"23#include "MTL4PipelineState.hpp"24#include "MTLDefines.hpp"25#include "MTLHeaderBridge.hpp"26#include "MTLPixelFormat.hpp"27#include "MTLPrivate.hpp"28#include "MTLRenderPipeline.hpp"2930namespace MTL431{32class FunctionDescriptor;33class RenderPipelineBinaryFunctionsDescriptor;34class RenderPipelineColorAttachmentDescriptor;35class RenderPipelineColorAttachmentDescriptorArray;36class RenderPipelineDescriptor;37class StaticLinkingDescriptor;38}3940namespace MTL41{42class VertexDescriptor;43}4445namespace MTL446{47_MTL_ENUM(NS::Integer, LogicalToPhysicalColorAttachmentMappingState) {48LogicalToPhysicalColorAttachmentMappingStateIdentity = 0,49LogicalToPhysicalColorAttachmentMappingStateInherited = 1,50};5152class RenderPipelineColorAttachmentDescriptor : public NS::Copying<RenderPipelineColorAttachmentDescriptor>53{54public:55static RenderPipelineColorAttachmentDescriptor* alloc();5657MTL::BlendOperation alphaBlendOperation() const;5859BlendState blendingState() const;6061MTL::BlendFactor destinationAlphaBlendFactor() const;6263MTL::BlendFactor destinationRGBBlendFactor() const;6465RenderPipelineColorAttachmentDescriptor* init();6667MTL::PixelFormat pixelFormat() const;6869void reset();7071MTL::BlendOperation rgbBlendOperation() const;7273void setAlphaBlendOperation(MTL::BlendOperation alphaBlendOperation);7475void setBlendingState(MTL4::BlendState blendingState);7677void setDestinationAlphaBlendFactor(MTL::BlendFactor destinationAlphaBlendFactor);7879void setDestinationRGBBlendFactor(MTL::BlendFactor destinationRGBBlendFactor);8081void setPixelFormat(MTL::PixelFormat pixelFormat);8283void setRgbBlendOperation(MTL::BlendOperation rgbBlendOperation);8485void setSourceAlphaBlendFactor(MTL::BlendFactor sourceAlphaBlendFactor);8687void setSourceRGBBlendFactor(MTL::BlendFactor sourceRGBBlendFactor);8889void setWriteMask(MTL::ColorWriteMask writeMask);9091MTL::BlendFactor sourceAlphaBlendFactor() const;9293MTL::BlendFactor sourceRGBBlendFactor() const;9495MTL::ColorWriteMask writeMask() const;96};9798class RenderPipelineColorAttachmentDescriptorArray : public NS::Copying<RenderPipelineColorAttachmentDescriptorArray>99{100public:101static RenderPipelineColorAttachmentDescriptorArray* alloc();102103RenderPipelineColorAttachmentDescriptorArray* init();104105RenderPipelineColorAttachmentDescriptor* object(NS::UInteger attachmentIndex);106107void reset();108109void setObject(const MTL4::RenderPipelineColorAttachmentDescriptor* attachment, NS::UInteger attachmentIndex);110};111112class RenderPipelineBinaryFunctionsDescriptor : public NS::Copying<RenderPipelineBinaryFunctionsDescriptor>113{114public:115static RenderPipelineBinaryFunctionsDescriptor* alloc();116117NS::Array* fragmentAdditionalBinaryFunctions() const;118119RenderPipelineBinaryFunctionsDescriptor* init();120121NS::Array* meshAdditionalBinaryFunctions() const;122123NS::Array* objectAdditionalBinaryFunctions() const;124125void reset();126127void setFragmentAdditionalBinaryFunctions(const NS::Array* fragmentAdditionalBinaryFunctions);128129void setMeshAdditionalBinaryFunctions(const NS::Array* meshAdditionalBinaryFunctions);130131void setObjectAdditionalBinaryFunctions(const NS::Array* objectAdditionalBinaryFunctions);132133void setTileAdditionalBinaryFunctions(const NS::Array* tileAdditionalBinaryFunctions);134135void setVertexAdditionalBinaryFunctions(const NS::Array* vertexAdditionalBinaryFunctions);136137NS::Array* tileAdditionalBinaryFunctions() const;138139NS::Array* vertexAdditionalBinaryFunctions() const;140};141142class RenderPipelineDescriptor : public NS::Copying<RenderPipelineDescriptor, PipelineDescriptor>143{144public:145static RenderPipelineDescriptor* alloc();146147AlphaToCoverageState alphaToCoverageState() const;148149AlphaToOneState alphaToOneState() const;150151LogicalToPhysicalColorAttachmentMappingState colorAttachmentMappingState() const;152153RenderPipelineColorAttachmentDescriptorArray* colorAttachments() const;154155FunctionDescriptor* fragmentFunctionDescriptor() const;156157StaticLinkingDescriptor* fragmentStaticLinkingDescriptor() const;158159RenderPipelineDescriptor* init();160161MTL::PrimitiveTopologyClass inputPrimitiveTopology() const;162163bool isRasterizationEnabled() const;164165NS::UInteger maxVertexAmplificationCount() const;166167NS::UInteger rasterSampleCount() const;168169[[deprecated("please use isRasterizationEnabled instead")]]170bool rasterizationEnabled() const;171172void reset();173174void setAlphaToCoverageState(MTL4::AlphaToCoverageState alphaToCoverageState);175176void setAlphaToOneState(MTL4::AlphaToOneState alphaToOneState);177178void setColorAttachmentMappingState(MTL4::LogicalToPhysicalColorAttachmentMappingState colorAttachmentMappingState);179180void setFragmentFunctionDescriptor(const MTL4::FunctionDescriptor* fragmentFunctionDescriptor);181182void setFragmentStaticLinkingDescriptor(const MTL4::StaticLinkingDescriptor* fragmentStaticLinkingDescriptor);183184void setInputPrimitiveTopology(MTL::PrimitiveTopologyClass inputPrimitiveTopology);185186void setMaxVertexAmplificationCount(NS::UInteger maxVertexAmplificationCount);187188void setRasterSampleCount(NS::UInteger rasterSampleCount);189190void setRasterizationEnabled(bool rasterizationEnabled);191192void setSupportFragmentBinaryLinking(bool supportFragmentBinaryLinking);193194void setSupportIndirectCommandBuffers(MTL4::IndirectCommandBufferSupportState supportIndirectCommandBuffers);195196void setSupportVertexBinaryLinking(bool supportVertexBinaryLinking);197198void setVertexDescriptor(const MTL::VertexDescriptor* vertexDescriptor);199200void setVertexFunctionDescriptor(const MTL4::FunctionDescriptor* vertexFunctionDescriptor);201202void setVertexStaticLinkingDescriptor(const MTL4::StaticLinkingDescriptor* vertexStaticLinkingDescriptor);203204bool supportFragmentBinaryLinking() const;205206IndirectCommandBufferSupportState supportIndirectCommandBuffers() const;207208bool supportVertexBinaryLinking() const;209210MTL::VertexDescriptor* vertexDescriptor() const;211212FunctionDescriptor* vertexFunctionDescriptor() const;213214StaticLinkingDescriptor* vertexStaticLinkingDescriptor() const;215};216217}218_MTL_INLINE MTL4::RenderPipelineColorAttachmentDescriptor* MTL4::RenderPipelineColorAttachmentDescriptor::alloc()219{220return NS::Object::alloc<MTL4::RenderPipelineColorAttachmentDescriptor>(_MTL_PRIVATE_CLS(MTL4RenderPipelineColorAttachmentDescriptor));221}222223_MTL_INLINE MTL::BlendOperation MTL4::RenderPipelineColorAttachmentDescriptor::alphaBlendOperation() const224{225return Object::sendMessage<MTL::BlendOperation>(this, _MTL_PRIVATE_SEL(alphaBlendOperation));226}227228_MTL_INLINE MTL4::BlendState MTL4::RenderPipelineColorAttachmentDescriptor::blendingState() const229{230return Object::sendMessage<MTL4::BlendState>(this, _MTL_PRIVATE_SEL(blendingState));231}232233_MTL_INLINE MTL::BlendFactor MTL4::RenderPipelineColorAttachmentDescriptor::destinationAlphaBlendFactor() const234{235return Object::sendMessage<MTL::BlendFactor>(this, _MTL_PRIVATE_SEL(destinationAlphaBlendFactor));236}237238_MTL_INLINE MTL::BlendFactor MTL4::RenderPipelineColorAttachmentDescriptor::destinationRGBBlendFactor() const239{240return Object::sendMessage<MTL::BlendFactor>(this, _MTL_PRIVATE_SEL(destinationRGBBlendFactor));241}242243_MTL_INLINE MTL4::RenderPipelineColorAttachmentDescriptor* MTL4::RenderPipelineColorAttachmentDescriptor::init()244{245return NS::Object::init<MTL4::RenderPipelineColorAttachmentDescriptor>();246}247248_MTL_INLINE MTL::PixelFormat MTL4::RenderPipelineColorAttachmentDescriptor::pixelFormat() const249{250return Object::sendMessage<MTL::PixelFormat>(this, _MTL_PRIVATE_SEL(pixelFormat));251}252253_MTL_INLINE void MTL4::RenderPipelineColorAttachmentDescriptor::reset()254{255Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(reset));256}257258_MTL_INLINE MTL::BlendOperation MTL4::RenderPipelineColorAttachmentDescriptor::rgbBlendOperation() const259{260return Object::sendMessage<MTL::BlendOperation>(this, _MTL_PRIVATE_SEL(rgbBlendOperation));261}262263_MTL_INLINE void MTL4::RenderPipelineColorAttachmentDescriptor::setAlphaBlendOperation(MTL::BlendOperation alphaBlendOperation)264{265Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setAlphaBlendOperation_), alphaBlendOperation);266}267268_MTL_INLINE void MTL4::RenderPipelineColorAttachmentDescriptor::setBlendingState(MTL4::BlendState blendingState)269{270Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBlendingState_), blendingState);271}272273_MTL_INLINE void MTL4::RenderPipelineColorAttachmentDescriptor::setDestinationAlphaBlendFactor(MTL::BlendFactor destinationAlphaBlendFactor)274{275Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDestinationAlphaBlendFactor_), destinationAlphaBlendFactor);276}277278_MTL_INLINE void MTL4::RenderPipelineColorAttachmentDescriptor::setDestinationRGBBlendFactor(MTL::BlendFactor destinationRGBBlendFactor)279{280Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDestinationRGBBlendFactor_), destinationRGBBlendFactor);281}282283_MTL_INLINE void MTL4::RenderPipelineColorAttachmentDescriptor::setPixelFormat(MTL::PixelFormat pixelFormat)284{285Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPixelFormat_), pixelFormat);286}287288_MTL_INLINE void MTL4::RenderPipelineColorAttachmentDescriptor::setRgbBlendOperation(MTL::BlendOperation rgbBlendOperation)289{290Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRgbBlendOperation_), rgbBlendOperation);291}292293_MTL_INLINE void MTL4::RenderPipelineColorAttachmentDescriptor::setSourceAlphaBlendFactor(MTL::BlendFactor sourceAlphaBlendFactor)294{295Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSourceAlphaBlendFactor_), sourceAlphaBlendFactor);296}297298_MTL_INLINE void MTL4::RenderPipelineColorAttachmentDescriptor::setSourceRGBBlendFactor(MTL::BlendFactor sourceRGBBlendFactor)299{300Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSourceRGBBlendFactor_), sourceRGBBlendFactor);301}302303_MTL_INLINE void MTL4::RenderPipelineColorAttachmentDescriptor::setWriteMask(MTL::ColorWriteMask writeMask)304{305Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setWriteMask_), writeMask);306}307308_MTL_INLINE MTL::BlendFactor MTL4::RenderPipelineColorAttachmentDescriptor::sourceAlphaBlendFactor() const309{310return Object::sendMessage<MTL::BlendFactor>(this, _MTL_PRIVATE_SEL(sourceAlphaBlendFactor));311}312313_MTL_INLINE MTL::BlendFactor MTL4::RenderPipelineColorAttachmentDescriptor::sourceRGBBlendFactor() const314{315return Object::sendMessage<MTL::BlendFactor>(this, _MTL_PRIVATE_SEL(sourceRGBBlendFactor));316}317318_MTL_INLINE MTL::ColorWriteMask MTL4::RenderPipelineColorAttachmentDescriptor::writeMask() const319{320return Object::sendMessage<MTL::ColorWriteMask>(this, _MTL_PRIVATE_SEL(writeMask));321}322323_MTL_INLINE MTL4::RenderPipelineColorAttachmentDescriptorArray* MTL4::RenderPipelineColorAttachmentDescriptorArray::alloc()324{325return NS::Object::alloc<MTL4::RenderPipelineColorAttachmentDescriptorArray>(_MTL_PRIVATE_CLS(MTL4RenderPipelineColorAttachmentDescriptorArray));326}327328_MTL_INLINE MTL4::RenderPipelineColorAttachmentDescriptorArray* MTL4::RenderPipelineColorAttachmentDescriptorArray::init()329{330return NS::Object::init<MTL4::RenderPipelineColorAttachmentDescriptorArray>();331}332333_MTL_INLINE MTL4::RenderPipelineColorAttachmentDescriptor* MTL4::RenderPipelineColorAttachmentDescriptorArray::object(NS::UInteger attachmentIndex)334{335return Object::sendMessage<MTL4::RenderPipelineColorAttachmentDescriptor*>(this, _MTL_PRIVATE_SEL(objectAtIndexedSubscript_), attachmentIndex);336}337338_MTL_INLINE void MTL4::RenderPipelineColorAttachmentDescriptorArray::reset()339{340Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(reset));341}342343_MTL_INLINE void MTL4::RenderPipelineColorAttachmentDescriptorArray::setObject(const MTL4::RenderPipelineColorAttachmentDescriptor* attachment, NS::UInteger attachmentIndex)344{345Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setObject_atIndexedSubscript_), attachment, attachmentIndex);346}347348_MTL_INLINE MTL4::RenderPipelineBinaryFunctionsDescriptor* MTL4::RenderPipelineBinaryFunctionsDescriptor::alloc()349{350return NS::Object::alloc<MTL4::RenderPipelineBinaryFunctionsDescriptor>(_MTL_PRIVATE_CLS(MTL4RenderPipelineBinaryFunctionsDescriptor));351}352353_MTL_INLINE NS::Array* MTL4::RenderPipelineBinaryFunctionsDescriptor::fragmentAdditionalBinaryFunctions() const354{355return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(fragmentAdditionalBinaryFunctions));356}357358_MTL_INLINE MTL4::RenderPipelineBinaryFunctionsDescriptor* MTL4::RenderPipelineBinaryFunctionsDescriptor::init()359{360return NS::Object::init<MTL4::RenderPipelineBinaryFunctionsDescriptor>();361}362363_MTL_INLINE NS::Array* MTL4::RenderPipelineBinaryFunctionsDescriptor::meshAdditionalBinaryFunctions() const364{365return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(meshAdditionalBinaryFunctions));366}367368_MTL_INLINE NS::Array* MTL4::RenderPipelineBinaryFunctionsDescriptor::objectAdditionalBinaryFunctions() const369{370return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(objectAdditionalBinaryFunctions));371}372373_MTL_INLINE void MTL4::RenderPipelineBinaryFunctionsDescriptor::reset()374{375Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(reset));376}377378_MTL_INLINE void MTL4::RenderPipelineBinaryFunctionsDescriptor::setFragmentAdditionalBinaryFunctions(const NS::Array* fragmentAdditionalBinaryFunctions)379{380Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFragmentAdditionalBinaryFunctions_), fragmentAdditionalBinaryFunctions);381}382383_MTL_INLINE void MTL4::RenderPipelineBinaryFunctionsDescriptor::setMeshAdditionalBinaryFunctions(const NS::Array* meshAdditionalBinaryFunctions)384{385Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMeshAdditionalBinaryFunctions_), meshAdditionalBinaryFunctions);386}387388_MTL_INLINE void MTL4::RenderPipelineBinaryFunctionsDescriptor::setObjectAdditionalBinaryFunctions(const NS::Array* objectAdditionalBinaryFunctions)389{390Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setObjectAdditionalBinaryFunctions_), objectAdditionalBinaryFunctions);391}392393_MTL_INLINE void MTL4::RenderPipelineBinaryFunctionsDescriptor::setTileAdditionalBinaryFunctions(const NS::Array* tileAdditionalBinaryFunctions)394{395Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTileAdditionalBinaryFunctions_), tileAdditionalBinaryFunctions);396}397398_MTL_INLINE void MTL4::RenderPipelineBinaryFunctionsDescriptor::setVertexAdditionalBinaryFunctions(const NS::Array* vertexAdditionalBinaryFunctions)399{400Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexAdditionalBinaryFunctions_), vertexAdditionalBinaryFunctions);401}402403_MTL_INLINE NS::Array* MTL4::RenderPipelineBinaryFunctionsDescriptor::tileAdditionalBinaryFunctions() const404{405return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(tileAdditionalBinaryFunctions));406}407408_MTL_INLINE NS::Array* MTL4::RenderPipelineBinaryFunctionsDescriptor::vertexAdditionalBinaryFunctions() const409{410return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(vertexAdditionalBinaryFunctions));411}412413_MTL_INLINE MTL4::RenderPipelineDescriptor* MTL4::RenderPipelineDescriptor::alloc()414{415return NS::Object::alloc<MTL4::RenderPipelineDescriptor>(_MTL_PRIVATE_CLS(MTL4RenderPipelineDescriptor));416}417418_MTL_INLINE MTL4::AlphaToCoverageState MTL4::RenderPipelineDescriptor::alphaToCoverageState() const419{420return Object::sendMessage<MTL4::AlphaToCoverageState>(this, _MTL_PRIVATE_SEL(alphaToCoverageState));421}422423_MTL_INLINE MTL4::AlphaToOneState MTL4::RenderPipelineDescriptor::alphaToOneState() const424{425return Object::sendMessage<MTL4::AlphaToOneState>(this, _MTL_PRIVATE_SEL(alphaToOneState));426}427428_MTL_INLINE MTL4::LogicalToPhysicalColorAttachmentMappingState MTL4::RenderPipelineDescriptor::colorAttachmentMappingState() const429{430return Object::sendMessage<MTL4::LogicalToPhysicalColorAttachmentMappingState>(this, _MTL_PRIVATE_SEL(colorAttachmentMappingState));431}432433_MTL_INLINE MTL4::RenderPipelineColorAttachmentDescriptorArray* MTL4::RenderPipelineDescriptor::colorAttachments() const434{435return Object::sendMessage<MTL4::RenderPipelineColorAttachmentDescriptorArray*>(this, _MTL_PRIVATE_SEL(colorAttachments));436}437438_MTL_INLINE MTL4::FunctionDescriptor* MTL4::RenderPipelineDescriptor::fragmentFunctionDescriptor() const439{440return Object::sendMessage<MTL4::FunctionDescriptor*>(this, _MTL_PRIVATE_SEL(fragmentFunctionDescriptor));441}442443_MTL_INLINE MTL4::StaticLinkingDescriptor* MTL4::RenderPipelineDescriptor::fragmentStaticLinkingDescriptor() const444{445return Object::sendMessage<MTL4::StaticLinkingDescriptor*>(this, _MTL_PRIVATE_SEL(fragmentStaticLinkingDescriptor));446}447448_MTL_INLINE MTL4::RenderPipelineDescriptor* MTL4::RenderPipelineDescriptor::init()449{450return NS::Object::init<MTL4::RenderPipelineDescriptor>();451}452453_MTL_INLINE MTL::PrimitiveTopologyClass MTL4::RenderPipelineDescriptor::inputPrimitiveTopology() const454{455return Object::sendMessage<MTL::PrimitiveTopologyClass>(this, _MTL_PRIVATE_SEL(inputPrimitiveTopology));456}457458_MTL_INLINE bool MTL4::RenderPipelineDescriptor::isRasterizationEnabled() const459{460return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isRasterizationEnabled));461}462463_MTL_INLINE NS::UInteger MTL4::RenderPipelineDescriptor::maxVertexAmplificationCount() const464{465return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxVertexAmplificationCount));466}467468_MTL_INLINE NS::UInteger MTL4::RenderPipelineDescriptor::rasterSampleCount() const469{470return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(rasterSampleCount));471}472473_MTL_INLINE bool MTL4::RenderPipelineDescriptor::rasterizationEnabled() const474{475return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isRasterizationEnabled));476}477478_MTL_INLINE void MTL4::RenderPipelineDescriptor::reset()479{480Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(reset));481}482483_MTL_INLINE void MTL4::RenderPipelineDescriptor::setAlphaToCoverageState(MTL4::AlphaToCoverageState alphaToCoverageState)484{485Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setAlphaToCoverageState_), alphaToCoverageState);486}487488_MTL_INLINE void MTL4::RenderPipelineDescriptor::setAlphaToOneState(MTL4::AlphaToOneState alphaToOneState)489{490Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setAlphaToOneState_), alphaToOneState);491}492493_MTL_INLINE void MTL4::RenderPipelineDescriptor::setColorAttachmentMappingState(MTL4::LogicalToPhysicalColorAttachmentMappingState colorAttachmentMappingState)494{495Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setColorAttachmentMappingState_), colorAttachmentMappingState);496}497498_MTL_INLINE void MTL4::RenderPipelineDescriptor::setFragmentFunctionDescriptor(const MTL4::FunctionDescriptor* fragmentFunctionDescriptor)499{500Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFragmentFunctionDescriptor_), fragmentFunctionDescriptor);501}502503_MTL_INLINE void MTL4::RenderPipelineDescriptor::setFragmentStaticLinkingDescriptor(const MTL4::StaticLinkingDescriptor* fragmentStaticLinkingDescriptor)504{505Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFragmentStaticLinkingDescriptor_), fragmentStaticLinkingDescriptor);506}507508_MTL_INLINE void MTL4::RenderPipelineDescriptor::setInputPrimitiveTopology(MTL::PrimitiveTopologyClass inputPrimitiveTopology)509{510Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInputPrimitiveTopology_), inputPrimitiveTopology);511}512513_MTL_INLINE void MTL4::RenderPipelineDescriptor::setMaxVertexAmplificationCount(NS::UInteger maxVertexAmplificationCount)514{515Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxVertexAmplificationCount_), maxVertexAmplificationCount);516}517518_MTL_INLINE void MTL4::RenderPipelineDescriptor::setRasterSampleCount(NS::UInteger rasterSampleCount)519{520Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRasterSampleCount_), rasterSampleCount);521}522523_MTL_INLINE void MTL4::RenderPipelineDescriptor::setRasterizationEnabled(bool rasterizationEnabled)524{525Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRasterizationEnabled_), rasterizationEnabled);526}527528_MTL_INLINE void MTL4::RenderPipelineDescriptor::setSupportFragmentBinaryLinking(bool supportFragmentBinaryLinking)529{530Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSupportFragmentBinaryLinking_), supportFragmentBinaryLinking);531}532533_MTL_INLINE void MTL4::RenderPipelineDescriptor::setSupportIndirectCommandBuffers(MTL4::IndirectCommandBufferSupportState supportIndirectCommandBuffers)534{535Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSupportIndirectCommandBuffers_), supportIndirectCommandBuffers);536}537538_MTL_INLINE void MTL4::RenderPipelineDescriptor::setSupportVertexBinaryLinking(bool supportVertexBinaryLinking)539{540Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSupportVertexBinaryLinking_), supportVertexBinaryLinking);541}542543_MTL_INLINE void MTL4::RenderPipelineDescriptor::setVertexDescriptor(const MTL::VertexDescriptor* vertexDescriptor)544{545Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexDescriptor_), vertexDescriptor);546}547548_MTL_INLINE void MTL4::RenderPipelineDescriptor::setVertexFunctionDescriptor(const MTL4::FunctionDescriptor* vertexFunctionDescriptor)549{550Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexFunctionDescriptor_), vertexFunctionDescriptor);551}552553_MTL_INLINE void MTL4::RenderPipelineDescriptor::setVertexStaticLinkingDescriptor(const MTL4::StaticLinkingDescriptor* vertexStaticLinkingDescriptor)554{555Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexStaticLinkingDescriptor_), vertexStaticLinkingDescriptor);556}557558_MTL_INLINE bool MTL4::RenderPipelineDescriptor::supportFragmentBinaryLinking() const559{560return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportFragmentBinaryLinking));561}562563_MTL_INLINE MTL4::IndirectCommandBufferSupportState MTL4::RenderPipelineDescriptor::supportIndirectCommandBuffers() const564{565return Object::sendMessage<MTL4::IndirectCommandBufferSupportState>(this, _MTL_PRIVATE_SEL(supportIndirectCommandBuffers));566}567568_MTL_INLINE bool MTL4::RenderPipelineDescriptor::supportVertexBinaryLinking() const569{570return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportVertexBinaryLinking));571}572573_MTL_INLINE MTL::VertexDescriptor* MTL4::RenderPipelineDescriptor::vertexDescriptor() const574{575return Object::sendMessage<MTL::VertexDescriptor*>(this, _MTL_PRIVATE_SEL(vertexDescriptor));576}577578_MTL_INLINE MTL4::FunctionDescriptor* MTL4::RenderPipelineDescriptor::vertexFunctionDescriptor() const579{580return Object::sendMessage<MTL4::FunctionDescriptor*>(this, _MTL_PRIVATE_SEL(vertexFunctionDescriptor));581}582583_MTL_INLINE MTL4::StaticLinkingDescriptor* MTL4::RenderPipelineDescriptor::vertexStaticLinkingDescriptor() const584{585return Object::sendMessage<MTL4::StaticLinkingDescriptor*>(this, _MTL_PRIVATE_SEL(vertexStaticLinkingDescriptor));586}587588589