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%
1//-------------------------------------------------------------------------------------------------------------------------------------------------------------2//3// Metal/MTLRenderPass.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 "MTLDefines.hpp"25#include "MTLHeaderBridge.hpp"26#include "MTLPrivate.hpp"27#include <cstdint>2829namespace MTL30{31class Buffer;32class CounterSampleBuffer;33class RasterizationRateMap;34class RenderPassAttachmentDescriptor;35class RenderPassColorAttachmentDescriptor;36class RenderPassColorAttachmentDescriptorArray;37class RenderPassDepthAttachmentDescriptor;38class RenderPassDescriptor;39class RenderPassSampleBufferAttachmentDescriptor;40class RenderPassSampleBufferAttachmentDescriptorArray;41class RenderPassStencilAttachmentDescriptor;42struct SamplePosition;43class Texture;44_MTL_ENUM(NS::UInteger, LoadAction) {45 LoadActionDontCare = 0,46 LoadActionLoad = 1,47 LoadActionClear = 2,48};4950_MTL_ENUM(NS::UInteger, StoreAction) {51 StoreActionDontCare = 0,52 StoreActionStore = 1,53 StoreActionMultisampleResolve = 2,54 StoreActionStoreAndMultisampleResolve = 3,55 StoreActionUnknown = 4,56 StoreActionCustomSampleDepthStore = 5,57};5859_MTL_ENUM(NS::Integer, VisibilityResultType) {60 VisibilityResultTypeReset = 0,61 VisibilityResultTypeAccumulate = 1,62};6364_MTL_ENUM(NS::UInteger, MultisampleDepthResolveFilter) {65 MultisampleDepthResolveFilterSample0 = 0,66 MultisampleDepthResolveFilterMin = 1,67 MultisampleDepthResolveFilterMax = 2,68};6970_MTL_ENUM(NS::UInteger, MultisampleStencilResolveFilter) {71 MultisampleStencilResolveFilterSample0 = 0,72 MultisampleStencilResolveFilterDepthResolvedSample = 1,73};7475_MTL_OPTIONS(NS::UInteger, StoreActionOptions) {76 StoreActionOptionNone = 0,77 StoreActionOptionCustomSamplePositions = 1,78 StoreActionOptionValidMask = 1,79};8081struct ClearColor82{83 ClearColor() = default;8485 ClearColor(double red, double green, double blue, double alpha);8687 static ClearColor Make(double red, double green, double blue, double alpha);8889 double red;90 double green;91 double blue;92 double alpha;93} _MTL_PACKED;9495class RenderPassAttachmentDescriptor : public NS::Copying<RenderPassAttachmentDescriptor>96{97public:98 static RenderPassAttachmentDescriptor* alloc();99100 NS::UInteger depthPlane() const;101102 RenderPassAttachmentDescriptor* init();103104 NS::UInteger level() const;105106 LoadAction loadAction() const;107108 NS::UInteger resolveDepthPlane() const;109110 NS::UInteger resolveLevel() const;111112 NS::UInteger resolveSlice() const;113114 Texture* resolveTexture() const;115116 void setDepthPlane(NS::UInteger depthPlane);117118 void setLevel(NS::UInteger level);119120 void setLoadAction(MTL::LoadAction loadAction);121122 void setResolveDepthPlane(NS::UInteger resolveDepthPlane);123124 void setResolveLevel(NS::UInteger resolveLevel);125126 void setResolveSlice(NS::UInteger resolveSlice);127128 void setResolveTexture(const MTL::Texture* resolveTexture);129130 void setSlice(NS::UInteger slice);131132 void setStoreAction(MTL::StoreAction storeAction);133 void setStoreActionOptions(MTL::StoreActionOptions storeActionOptions);134135 void setTexture(const MTL::Texture* texture);136137 NS::UInteger slice() const;138139 StoreAction storeAction() const;140 StoreActionOptions storeActionOptions() const;141142 Texture* texture() const;143};144class RenderPassColorAttachmentDescriptor : public NS::Copying<RenderPassColorAttachmentDescriptor, RenderPassAttachmentDescriptor>145{146public:147 static RenderPassColorAttachmentDescriptor* alloc();148149 ClearColor clearColor() const;150151 RenderPassColorAttachmentDescriptor* init();152153 void setClearColor(MTL::ClearColor clearColor);154};155class RenderPassDepthAttachmentDescriptor : public NS::Copying<RenderPassDepthAttachmentDescriptor, RenderPassAttachmentDescriptor>156{157public:158 static RenderPassDepthAttachmentDescriptor* alloc();159160 double clearDepth() const;161162 MultisampleDepthResolveFilter depthResolveFilter() const;163164 RenderPassDepthAttachmentDescriptor* init();165166 void setClearDepth(double clearDepth);167168 void setDepthResolveFilter(MTL::MultisampleDepthResolveFilter depthResolveFilter);169};170class RenderPassStencilAttachmentDescriptor : public NS::Copying<RenderPassStencilAttachmentDescriptor, RenderPassAttachmentDescriptor>171{172public:173 static RenderPassStencilAttachmentDescriptor* alloc();174175 uint32_t clearStencil() const;176177 RenderPassStencilAttachmentDescriptor* init();178179 void setClearStencil(uint32_t clearStencil);180181 void setStencilResolveFilter(MTL::MultisampleStencilResolveFilter stencilResolveFilter);182 MultisampleStencilResolveFilter stencilResolveFilter() const;183};184class RenderPassColorAttachmentDescriptorArray : public NS::Referencing<RenderPassColorAttachmentDescriptorArray>185{186public:187 static RenderPassColorAttachmentDescriptorArray* alloc();188189 RenderPassColorAttachmentDescriptorArray* init();190191 RenderPassColorAttachmentDescriptor* object(NS::UInteger attachmentIndex);192 void setObject(const MTL::RenderPassColorAttachmentDescriptor* attachment, NS::UInteger attachmentIndex);193};194class RenderPassSampleBufferAttachmentDescriptor : public NS::Copying<RenderPassSampleBufferAttachmentDescriptor>195{196public:197 static RenderPassSampleBufferAttachmentDescriptor* alloc();198199 NS::UInteger endOfFragmentSampleIndex() const;200201 NS::UInteger endOfVertexSampleIndex() const;202203 RenderPassSampleBufferAttachmentDescriptor* init();204205 CounterSampleBuffer* sampleBuffer() const;206207 void setEndOfFragmentSampleIndex(NS::UInteger endOfFragmentSampleIndex);208209 void setEndOfVertexSampleIndex(NS::UInteger endOfVertexSampleIndex);210211 void setSampleBuffer(const MTL::CounterSampleBuffer* sampleBuffer);212213 void setStartOfFragmentSampleIndex(NS::UInteger startOfFragmentSampleIndex);214215 void setStartOfVertexSampleIndex(NS::UInteger startOfVertexSampleIndex);216217 NS::UInteger startOfFragmentSampleIndex() const;218219 NS::UInteger startOfVertexSampleIndex() const;220};221class RenderPassSampleBufferAttachmentDescriptorArray : public NS::Referencing<RenderPassSampleBufferAttachmentDescriptorArray>222{223public:224 static RenderPassSampleBufferAttachmentDescriptorArray* alloc();225226 RenderPassSampleBufferAttachmentDescriptorArray* init();227228 RenderPassSampleBufferAttachmentDescriptor* object(NS::UInteger attachmentIndex);229 void setObject(const MTL::RenderPassSampleBufferAttachmentDescriptor* attachment, NS::UInteger attachmentIndex);230};231class RenderPassDescriptor : public NS::Copying<RenderPassDescriptor>232{233public:234 static RenderPassDescriptor* alloc();235236 RenderPassColorAttachmentDescriptorArray* colorAttachments() const;237238 NS::UInteger defaultRasterSampleCount() const;239240 RenderPassDepthAttachmentDescriptor* depthAttachment() const;241242 NS::UInteger getSamplePositions(MTL::SamplePosition* positions, NS::UInteger count);243244 NS::UInteger imageblockSampleLength() const;245246 RenderPassDescriptor* init();247248 RasterizationRateMap* rasterizationRateMap() const;249250 static RenderPassDescriptor* renderPassDescriptor();251252 NS::UInteger renderTargetArrayLength() const;253254 NS::UInteger renderTargetHeight() const;255256 NS::UInteger renderTargetWidth() const;257258 RenderPassSampleBufferAttachmentDescriptorArray* sampleBufferAttachments() const;259260 void setDefaultRasterSampleCount(NS::UInteger defaultRasterSampleCount);261262 void setDepthAttachment(const MTL::RenderPassDepthAttachmentDescriptor* depthAttachment);263264 void setImageblockSampleLength(NS::UInteger imageblockSampleLength);265266 void setRasterizationRateMap(const MTL::RasterizationRateMap* rasterizationRateMap);267268 void setRenderTargetArrayLength(NS::UInteger renderTargetArrayLength);269270 void setRenderTargetHeight(NS::UInteger renderTargetHeight);271272 void setRenderTargetWidth(NS::UInteger renderTargetWidth);273274 void setSamplePositions(const MTL::SamplePosition* positions, NS::UInteger count);275276 void setStencilAttachment(const MTL::RenderPassStencilAttachmentDescriptor* stencilAttachment);277278 void setSupportColorAttachmentMapping(bool supportColorAttachmentMapping);279280 void setThreadgroupMemoryLength(NS::UInteger threadgroupMemoryLength);281282 void setTileHeight(NS::UInteger tileHeight);283284 void setTileWidth(NS::UInteger tileWidth);285286 void setVisibilityResultBuffer(const MTL::Buffer* visibilityResultBuffer);287288 void setVisibilityResultType(MTL::VisibilityResultType visibilityResultType);289290 RenderPassStencilAttachmentDescriptor* stencilAttachment() const;291292 bool supportColorAttachmentMapping() const;293294 NS::UInteger threadgroupMemoryLength() const;295296 NS::UInteger tileHeight() const;297298 NS::UInteger tileWidth() const;299300 Buffer* visibilityResultBuffer() const;301302 VisibilityResultType visibilityResultType() const;303};304305}306_MTL_INLINE MTL::ClearColor::ClearColor(double red, double green, double blue, double alpha)307 : red(red)308 , green(green)309 , blue(blue)310 , alpha(alpha)311{312}313314_MTL_INLINE MTL::ClearColor MTL::ClearColor::Make(double red, double green, double blue, double alpha)315{316 return ClearColor(red, green, blue, alpha);317}318319_MTL_INLINE MTL::RenderPassAttachmentDescriptor* MTL::RenderPassAttachmentDescriptor::alloc()320{321 return NS::Object::alloc<MTL::RenderPassAttachmentDescriptor>(_MTL_PRIVATE_CLS(MTLRenderPassAttachmentDescriptor));322}323324_MTL_INLINE NS::UInteger MTL::RenderPassAttachmentDescriptor::depthPlane() const325{326 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(depthPlane));327}328329_MTL_INLINE MTL::RenderPassAttachmentDescriptor* MTL::RenderPassAttachmentDescriptor::init()330{331 return NS::Object::init<MTL::RenderPassAttachmentDescriptor>();332}333334_MTL_INLINE NS::UInteger MTL::RenderPassAttachmentDescriptor::level() const335{336 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(level));337}338339_MTL_INLINE MTL::LoadAction MTL::RenderPassAttachmentDescriptor::loadAction() const340{341 return Object::sendMessage<MTL::LoadAction>(this, _MTL_PRIVATE_SEL(loadAction));342}343344_MTL_INLINE NS::UInteger MTL::RenderPassAttachmentDescriptor::resolveDepthPlane() const345{346 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(resolveDepthPlane));347}348349_MTL_INLINE NS::UInteger MTL::RenderPassAttachmentDescriptor::resolveLevel() const350{351 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(resolveLevel));352}353354_MTL_INLINE NS::UInteger MTL::RenderPassAttachmentDescriptor::resolveSlice() const355{356 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(resolveSlice));357}358359_MTL_INLINE MTL::Texture* MTL::RenderPassAttachmentDescriptor::resolveTexture() const360{361 return Object::sendMessage<MTL::Texture*>(this, _MTL_PRIVATE_SEL(resolveTexture));362}363364_MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setDepthPlane(NS::UInteger depthPlane)365{366 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthPlane_), depthPlane);367}368369_MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setLevel(NS::UInteger level)370{371 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLevel_), level);372}373374_MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setLoadAction(MTL::LoadAction loadAction)375{376 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLoadAction_), loadAction);377}378379_MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setResolveDepthPlane(NS::UInteger resolveDepthPlane)380{381 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setResolveDepthPlane_), resolveDepthPlane);382}383384_MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setResolveLevel(NS::UInteger resolveLevel)385{386 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setResolveLevel_), resolveLevel);387}388389_MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setResolveSlice(NS::UInteger resolveSlice)390{391 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setResolveSlice_), resolveSlice);392}393394_MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setResolveTexture(const MTL::Texture* resolveTexture)395{396 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setResolveTexture_), resolveTexture);397}398399_MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setSlice(NS::UInteger slice)400{401 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSlice_), slice);402}403404_MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setStoreAction(MTL::StoreAction storeAction)405{406 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStoreAction_), storeAction);407}408409_MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setStoreActionOptions(MTL::StoreActionOptions storeActionOptions)410{411 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStoreActionOptions_), storeActionOptions);412}413414_MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setTexture(const MTL::Texture* texture)415{416 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTexture_), texture);417}418419_MTL_INLINE NS::UInteger MTL::RenderPassAttachmentDescriptor::slice() const420{421 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(slice));422}423424_MTL_INLINE MTL::StoreAction MTL::RenderPassAttachmentDescriptor::storeAction() const425{426 return Object::sendMessage<MTL::StoreAction>(this, _MTL_PRIVATE_SEL(storeAction));427}428429_MTL_INLINE MTL::StoreActionOptions MTL::RenderPassAttachmentDescriptor::storeActionOptions() const430{431 return Object::sendMessage<MTL::StoreActionOptions>(this, _MTL_PRIVATE_SEL(storeActionOptions));432}433434_MTL_INLINE MTL::Texture* MTL::RenderPassAttachmentDescriptor::texture() const435{436 return Object::sendMessage<MTL::Texture*>(this, _MTL_PRIVATE_SEL(texture));437}438439_MTL_INLINE MTL::RenderPassColorAttachmentDescriptor* MTL::RenderPassColorAttachmentDescriptor::alloc()440{441 return NS::Object::alloc<MTL::RenderPassColorAttachmentDescriptor>(_MTL_PRIVATE_CLS(MTLRenderPassColorAttachmentDescriptor));442}443444_MTL_INLINE MTL::ClearColor MTL::RenderPassColorAttachmentDescriptor::clearColor() const445{446 return Object::sendMessage<MTL::ClearColor>(this, _MTL_PRIVATE_SEL(clearColor));447}448449_MTL_INLINE MTL::RenderPassColorAttachmentDescriptor* MTL::RenderPassColorAttachmentDescriptor::init()450{451 return NS::Object::init<MTL::RenderPassColorAttachmentDescriptor>();452}453454_MTL_INLINE void MTL::RenderPassColorAttachmentDescriptor::setClearColor(MTL::ClearColor clearColor)455{456 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setClearColor_), clearColor);457}458459_MTL_INLINE MTL::RenderPassDepthAttachmentDescriptor* MTL::RenderPassDepthAttachmentDescriptor::alloc()460{461 return NS::Object::alloc<MTL::RenderPassDepthAttachmentDescriptor>(_MTL_PRIVATE_CLS(MTLRenderPassDepthAttachmentDescriptor));462}463464_MTL_INLINE double MTL::RenderPassDepthAttachmentDescriptor::clearDepth() const465{466 return Object::sendMessage<double>(this, _MTL_PRIVATE_SEL(clearDepth));467}468469_MTL_INLINE MTL::MultisampleDepthResolveFilter MTL::RenderPassDepthAttachmentDescriptor::depthResolveFilter() const470{471 return Object::sendMessage<MTL::MultisampleDepthResolveFilter>(this, _MTL_PRIVATE_SEL(depthResolveFilter));472}473474_MTL_INLINE MTL::RenderPassDepthAttachmentDescriptor* MTL::RenderPassDepthAttachmentDescriptor::init()475{476 return NS::Object::init<MTL::RenderPassDepthAttachmentDescriptor>();477}478479_MTL_INLINE void MTL::RenderPassDepthAttachmentDescriptor::setClearDepth(double clearDepth)480{481 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setClearDepth_), clearDepth);482}483484_MTL_INLINE void MTL::RenderPassDepthAttachmentDescriptor::setDepthResolveFilter(MTL::MultisampleDepthResolveFilter depthResolveFilter)485{486 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthResolveFilter_), depthResolveFilter);487}488489_MTL_INLINE MTL::RenderPassStencilAttachmentDescriptor* MTL::RenderPassStencilAttachmentDescriptor::alloc()490{491 return NS::Object::alloc<MTL::RenderPassStencilAttachmentDescriptor>(_MTL_PRIVATE_CLS(MTLRenderPassStencilAttachmentDescriptor));492}493494_MTL_INLINE uint32_t MTL::RenderPassStencilAttachmentDescriptor::clearStencil() const495{496 return Object::sendMessage<uint32_t>(this, _MTL_PRIVATE_SEL(clearStencil));497}498499_MTL_INLINE MTL::RenderPassStencilAttachmentDescriptor* MTL::RenderPassStencilAttachmentDescriptor::init()500{501 return NS::Object::init<MTL::RenderPassStencilAttachmentDescriptor>();502}503504_MTL_INLINE void MTL::RenderPassStencilAttachmentDescriptor::setClearStencil(uint32_t clearStencil)505{506 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setClearStencil_), clearStencil);507}508509_MTL_INLINE void MTL::RenderPassStencilAttachmentDescriptor::setStencilResolveFilter(MTL::MultisampleStencilResolveFilter stencilResolveFilter)510{511 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStencilResolveFilter_), stencilResolveFilter);512}513514_MTL_INLINE MTL::MultisampleStencilResolveFilter MTL::RenderPassStencilAttachmentDescriptor::stencilResolveFilter() const515{516 return Object::sendMessage<MTL::MultisampleStencilResolveFilter>(this, _MTL_PRIVATE_SEL(stencilResolveFilter));517}518519_MTL_INLINE MTL::RenderPassColorAttachmentDescriptorArray* MTL::RenderPassColorAttachmentDescriptorArray::alloc()520{521 return NS::Object::alloc<MTL::RenderPassColorAttachmentDescriptorArray>(_MTL_PRIVATE_CLS(MTLRenderPassColorAttachmentDescriptorArray));522}523524_MTL_INLINE MTL::RenderPassColorAttachmentDescriptorArray* MTL::RenderPassColorAttachmentDescriptorArray::init()525{526 return NS::Object::init<MTL::RenderPassColorAttachmentDescriptorArray>();527}528529_MTL_INLINE MTL::RenderPassColorAttachmentDescriptor* MTL::RenderPassColorAttachmentDescriptorArray::object(NS::UInteger attachmentIndex)530{531 return Object::sendMessage<MTL::RenderPassColorAttachmentDescriptor*>(this, _MTL_PRIVATE_SEL(objectAtIndexedSubscript_), attachmentIndex);532}533534_MTL_INLINE void MTL::RenderPassColorAttachmentDescriptorArray::setObject(const MTL::RenderPassColorAttachmentDescriptor* attachment, NS::UInteger attachmentIndex)535{536 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setObject_atIndexedSubscript_), attachment, attachmentIndex);537}538539_MTL_INLINE MTL::RenderPassSampleBufferAttachmentDescriptor* MTL::RenderPassSampleBufferAttachmentDescriptor::alloc()540{541 return NS::Object::alloc<MTL::RenderPassSampleBufferAttachmentDescriptor>(_MTL_PRIVATE_CLS(MTLRenderPassSampleBufferAttachmentDescriptor));542}543544_MTL_INLINE NS::UInteger MTL::RenderPassSampleBufferAttachmentDescriptor::endOfFragmentSampleIndex() const545{546 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(endOfFragmentSampleIndex));547}548549_MTL_INLINE NS::UInteger MTL::RenderPassSampleBufferAttachmentDescriptor::endOfVertexSampleIndex() const550{551 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(endOfVertexSampleIndex));552}553554_MTL_INLINE MTL::RenderPassSampleBufferAttachmentDescriptor* MTL::RenderPassSampleBufferAttachmentDescriptor::init()555{556 return NS::Object::init<MTL::RenderPassSampleBufferAttachmentDescriptor>();557}558559_MTL_INLINE MTL::CounterSampleBuffer* MTL::RenderPassSampleBufferAttachmentDescriptor::sampleBuffer() const560{561 return Object::sendMessage<MTL::CounterSampleBuffer*>(this, _MTL_PRIVATE_SEL(sampleBuffer));562}563564_MTL_INLINE void MTL::RenderPassSampleBufferAttachmentDescriptor::setEndOfFragmentSampleIndex(NS::UInteger endOfFragmentSampleIndex)565{566 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setEndOfFragmentSampleIndex_), endOfFragmentSampleIndex);567}568569_MTL_INLINE void MTL::RenderPassSampleBufferAttachmentDescriptor::setEndOfVertexSampleIndex(NS::UInteger endOfVertexSampleIndex)570{571 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setEndOfVertexSampleIndex_), endOfVertexSampleIndex);572}573574_MTL_INLINE void MTL::RenderPassSampleBufferAttachmentDescriptor::setSampleBuffer(const MTL::CounterSampleBuffer* sampleBuffer)575{576 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSampleBuffer_), sampleBuffer);577}578579_MTL_INLINE void MTL::RenderPassSampleBufferAttachmentDescriptor::setStartOfFragmentSampleIndex(NS::UInteger startOfFragmentSampleIndex)580{581 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStartOfFragmentSampleIndex_), startOfFragmentSampleIndex);582}583584_MTL_INLINE void MTL::RenderPassSampleBufferAttachmentDescriptor::setStartOfVertexSampleIndex(NS::UInteger startOfVertexSampleIndex)585{586 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStartOfVertexSampleIndex_), startOfVertexSampleIndex);587}588589_MTL_INLINE NS::UInteger MTL::RenderPassSampleBufferAttachmentDescriptor::startOfFragmentSampleIndex() const590{591 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(startOfFragmentSampleIndex));592}593594_MTL_INLINE NS::UInteger MTL::RenderPassSampleBufferAttachmentDescriptor::startOfVertexSampleIndex() const595{596 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(startOfVertexSampleIndex));597}598599_MTL_INLINE MTL::RenderPassSampleBufferAttachmentDescriptorArray* MTL::RenderPassSampleBufferAttachmentDescriptorArray::alloc()600{601 return NS::Object::alloc<MTL::RenderPassSampleBufferAttachmentDescriptorArray>(_MTL_PRIVATE_CLS(MTLRenderPassSampleBufferAttachmentDescriptorArray));602}603604_MTL_INLINE MTL::RenderPassSampleBufferAttachmentDescriptorArray* MTL::RenderPassSampleBufferAttachmentDescriptorArray::init()605{606 return NS::Object::init<MTL::RenderPassSampleBufferAttachmentDescriptorArray>();607}608609_MTL_INLINE MTL::RenderPassSampleBufferAttachmentDescriptor* MTL::RenderPassSampleBufferAttachmentDescriptorArray::object(NS::UInteger attachmentIndex)610{611 return Object::sendMessage<MTL::RenderPassSampleBufferAttachmentDescriptor*>(this, _MTL_PRIVATE_SEL(objectAtIndexedSubscript_), attachmentIndex);612}613614_MTL_INLINE void MTL::RenderPassSampleBufferAttachmentDescriptorArray::setObject(const MTL::RenderPassSampleBufferAttachmentDescriptor* attachment, NS::UInteger attachmentIndex)615{616 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setObject_atIndexedSubscript_), attachment, attachmentIndex);617}618619_MTL_INLINE MTL::RenderPassDescriptor* MTL::RenderPassDescriptor::alloc()620{621 return NS::Object::alloc<MTL::RenderPassDescriptor>(_MTL_PRIVATE_CLS(MTLRenderPassDescriptor));622}623624_MTL_INLINE MTL::RenderPassColorAttachmentDescriptorArray* MTL::RenderPassDescriptor::colorAttachments() const625{626 return Object::sendMessage<MTL::RenderPassColorAttachmentDescriptorArray*>(this, _MTL_PRIVATE_SEL(colorAttachments));627}628629_MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::defaultRasterSampleCount() const630{631 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(defaultRasterSampleCount));632}633634_MTL_INLINE MTL::RenderPassDepthAttachmentDescriptor* MTL::RenderPassDescriptor::depthAttachment() const635{636 return Object::sendMessage<MTL::RenderPassDepthAttachmentDescriptor*>(this, _MTL_PRIVATE_SEL(depthAttachment));637}638639_MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::getSamplePositions(MTL::SamplePosition* positions, NS::UInteger count)640{641 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(getSamplePositions_count_), positions, count);642}643644_MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::imageblockSampleLength() const645{646 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(imageblockSampleLength));647}648649_MTL_INLINE MTL::RenderPassDescriptor* MTL::RenderPassDescriptor::init()650{651 return NS::Object::init<MTL::RenderPassDescriptor>();652}653654_MTL_INLINE MTL::RasterizationRateMap* MTL::RenderPassDescriptor::rasterizationRateMap() const655{656 return Object::sendMessage<MTL::RasterizationRateMap*>(this, _MTL_PRIVATE_SEL(rasterizationRateMap));657}658659_MTL_INLINE MTL::RenderPassDescriptor* MTL::RenderPassDescriptor::renderPassDescriptor()660{661 return Object::sendMessage<MTL::RenderPassDescriptor*>(_MTL_PRIVATE_CLS(MTLRenderPassDescriptor), _MTL_PRIVATE_SEL(renderPassDescriptor));662}663664_MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::renderTargetArrayLength() const665{666 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(renderTargetArrayLength));667}668669_MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::renderTargetHeight() const670{671 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(renderTargetHeight));672}673674_MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::renderTargetWidth() const675{676 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(renderTargetWidth));677}678679_MTL_INLINE MTL::RenderPassSampleBufferAttachmentDescriptorArray* MTL::RenderPassDescriptor::sampleBufferAttachments() const680{681 return Object::sendMessage<MTL::RenderPassSampleBufferAttachmentDescriptorArray*>(this, _MTL_PRIVATE_SEL(sampleBufferAttachments));682}683684_MTL_INLINE void MTL::RenderPassDescriptor::setDefaultRasterSampleCount(NS::UInteger defaultRasterSampleCount)685{686 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDefaultRasterSampleCount_), defaultRasterSampleCount);687}688689_MTL_INLINE void MTL::RenderPassDescriptor::setDepthAttachment(const MTL::RenderPassDepthAttachmentDescriptor* depthAttachment)690{691 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthAttachment_), depthAttachment);692}693694_MTL_INLINE void MTL::RenderPassDescriptor::setImageblockSampleLength(NS::UInteger imageblockSampleLength)695{696 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setImageblockSampleLength_), imageblockSampleLength);697}698699_MTL_INLINE void MTL::RenderPassDescriptor::setRasterizationRateMap(const MTL::RasterizationRateMap* rasterizationRateMap)700{701 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRasterizationRateMap_), rasterizationRateMap);702}703704_MTL_INLINE void MTL::RenderPassDescriptor::setRenderTargetArrayLength(NS::UInteger renderTargetArrayLength)705{706 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRenderTargetArrayLength_), renderTargetArrayLength);707}708709_MTL_INLINE void MTL::RenderPassDescriptor::setRenderTargetHeight(NS::UInteger renderTargetHeight)710{711 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRenderTargetHeight_), renderTargetHeight);712}713714_MTL_INLINE void MTL::RenderPassDescriptor::setRenderTargetWidth(NS::UInteger renderTargetWidth)715{716 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRenderTargetWidth_), renderTargetWidth);717}718719_MTL_INLINE void MTL::RenderPassDescriptor::setSamplePositions(const MTL::SamplePosition* positions, NS::UInteger count)720{721 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSamplePositions_count_), positions, count);722}723724_MTL_INLINE void MTL::RenderPassDescriptor::setStencilAttachment(const MTL::RenderPassStencilAttachmentDescriptor* stencilAttachment)725{726 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStencilAttachment_), stencilAttachment);727}728729_MTL_INLINE void MTL::RenderPassDescriptor::setSupportColorAttachmentMapping(bool supportColorAttachmentMapping)730{731 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSupportColorAttachmentMapping_), supportColorAttachmentMapping);732}733734_MTL_INLINE void MTL::RenderPassDescriptor::setThreadgroupMemoryLength(NS::UInteger threadgroupMemoryLength)735{736 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setThreadgroupMemoryLength_), threadgroupMemoryLength);737}738739_MTL_INLINE void MTL::RenderPassDescriptor::setTileHeight(NS::UInteger tileHeight)740{741 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTileHeight_), tileHeight);742}743744_MTL_INLINE void MTL::RenderPassDescriptor::setTileWidth(NS::UInteger tileWidth)745{746 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTileWidth_), tileWidth);747}748749_MTL_INLINE void MTL::RenderPassDescriptor::setVisibilityResultBuffer(const MTL::Buffer* visibilityResultBuffer)750{751 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVisibilityResultBuffer_), visibilityResultBuffer);752}753754_MTL_INLINE void MTL::RenderPassDescriptor::setVisibilityResultType(MTL::VisibilityResultType visibilityResultType)755{756 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVisibilityResultType_), visibilityResultType);757}758759_MTL_INLINE MTL::RenderPassStencilAttachmentDescriptor* MTL::RenderPassDescriptor::stencilAttachment() const760{761 return Object::sendMessage<MTL::RenderPassStencilAttachmentDescriptor*>(this, _MTL_PRIVATE_SEL(stencilAttachment));762}763764_MTL_INLINE bool MTL::RenderPassDescriptor::supportColorAttachmentMapping() const765{766 return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportColorAttachmentMapping));767}768769_MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::threadgroupMemoryLength() const770{771 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(threadgroupMemoryLength));772}773774_MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::tileHeight() const775{776 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(tileHeight));777}778779_MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::tileWidth() const780{781 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(tileWidth));782}783784_MTL_INLINE MTL::Buffer* MTL::RenderPassDescriptor::visibilityResultBuffer() const785{786 return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(visibilityResultBuffer));787}788789_MTL_INLINE MTL::VisibilityResultType MTL::RenderPassDescriptor::visibilityResultType() const790{791 return Object::sendMessage<MTL::VisibilityResultType>(this, _MTL_PRIVATE_SEL(visibilityResultType));792}793