Path: blob/master/thirdparty/metal-cpp/Metal/MTL4RenderPass.hpp
21082 views
//-------------------------------------------------------------------------------------------------------------------------------------------------------------1//2// Metal/MTL4RenderPass.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 "MTLDefines.hpp"24#include "MTLHeaderBridge.hpp"25#include "MTLPrivate.hpp"26#include "MTLRenderPass.hpp"2728namespace MTL429{30class RenderPassDescriptor;31}3233namespace MTL34{35class Buffer;36class RasterizationRateMap;37class RenderPassColorAttachmentDescriptorArray;38class RenderPassDepthAttachmentDescriptor;39class RenderPassStencilAttachmentDescriptor;40struct SamplePosition;41}4243namespace MTL444{45class RenderPassDescriptor : public NS::Copying<RenderPassDescriptor>46{47public:48static RenderPassDescriptor* alloc();4950MTL::RenderPassColorAttachmentDescriptorArray* colorAttachments() const;5152NS::UInteger defaultRasterSampleCount() const;5354MTL::RenderPassDepthAttachmentDescriptor* depthAttachment() const;5556NS::UInteger getSamplePositions(MTL::SamplePosition* positions, NS::UInteger count);5758NS::UInteger imageblockSampleLength() const;5960RenderPassDescriptor* init();6162MTL::RasterizationRateMap* rasterizationRateMap() const;6364NS::UInteger renderTargetArrayLength() const;6566NS::UInteger renderTargetHeight() const;6768NS::UInteger renderTargetWidth() const;6970void setDefaultRasterSampleCount(NS::UInteger defaultRasterSampleCount);7172void setDepthAttachment(const MTL::RenderPassDepthAttachmentDescriptor* depthAttachment);7374void setImageblockSampleLength(NS::UInteger imageblockSampleLength);7576void setRasterizationRateMap(const MTL::RasterizationRateMap* rasterizationRateMap);7778void setRenderTargetArrayLength(NS::UInteger renderTargetArrayLength);7980void setRenderTargetHeight(NS::UInteger renderTargetHeight);8182void setRenderTargetWidth(NS::UInteger renderTargetWidth);8384void setSamplePositions(const MTL::SamplePosition* positions, NS::UInteger count);8586void setStencilAttachment(const MTL::RenderPassStencilAttachmentDescriptor* stencilAttachment);8788void setSupportColorAttachmentMapping(bool supportColorAttachmentMapping);8990void setThreadgroupMemoryLength(NS::UInteger threadgroupMemoryLength);9192void setTileHeight(NS::UInteger tileHeight);9394void setTileWidth(NS::UInteger tileWidth);9596void setVisibilityResultBuffer(const MTL::Buffer* visibilityResultBuffer);9798void setVisibilityResultType(MTL::VisibilityResultType visibilityResultType);99100MTL::RenderPassStencilAttachmentDescriptor* stencilAttachment() const;101102bool supportColorAttachmentMapping() const;103104NS::UInteger threadgroupMemoryLength() const;105106NS::UInteger tileHeight() const;107108NS::UInteger tileWidth() const;109110MTL::Buffer* visibilityResultBuffer() const;111112MTL::VisibilityResultType visibilityResultType() const;113};114115}116_MTL_INLINE MTL4::RenderPassDescriptor* MTL4::RenderPassDescriptor::alloc()117{118return NS::Object::alloc<MTL4::RenderPassDescriptor>(_MTL_PRIVATE_CLS(MTL4RenderPassDescriptor));119}120121_MTL_INLINE MTL::RenderPassColorAttachmentDescriptorArray* MTL4::RenderPassDescriptor::colorAttachments() const122{123return Object::sendMessage<MTL::RenderPassColorAttachmentDescriptorArray*>(this, _MTL_PRIVATE_SEL(colorAttachments));124}125126_MTL_INLINE NS::UInteger MTL4::RenderPassDescriptor::defaultRasterSampleCount() const127{128return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(defaultRasterSampleCount));129}130131_MTL_INLINE MTL::RenderPassDepthAttachmentDescriptor* MTL4::RenderPassDescriptor::depthAttachment() const132{133return Object::sendMessage<MTL::RenderPassDepthAttachmentDescriptor*>(this, _MTL_PRIVATE_SEL(depthAttachment));134}135136_MTL_INLINE NS::UInteger MTL4::RenderPassDescriptor::getSamplePositions(MTL::SamplePosition* positions, NS::UInteger count)137{138return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(getSamplePositions_count_), positions, count);139}140141_MTL_INLINE NS::UInteger MTL4::RenderPassDescriptor::imageblockSampleLength() const142{143return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(imageblockSampleLength));144}145146_MTL_INLINE MTL4::RenderPassDescriptor* MTL4::RenderPassDescriptor::init()147{148return NS::Object::init<MTL4::RenderPassDescriptor>();149}150151_MTL_INLINE MTL::RasterizationRateMap* MTL4::RenderPassDescriptor::rasterizationRateMap() const152{153return Object::sendMessage<MTL::RasterizationRateMap*>(this, _MTL_PRIVATE_SEL(rasterizationRateMap));154}155156_MTL_INLINE NS::UInteger MTL4::RenderPassDescriptor::renderTargetArrayLength() const157{158return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(renderTargetArrayLength));159}160161_MTL_INLINE NS::UInteger MTL4::RenderPassDescriptor::renderTargetHeight() const162{163return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(renderTargetHeight));164}165166_MTL_INLINE NS::UInteger MTL4::RenderPassDescriptor::renderTargetWidth() const167{168return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(renderTargetWidth));169}170171_MTL_INLINE void MTL4::RenderPassDescriptor::setDefaultRasterSampleCount(NS::UInteger defaultRasterSampleCount)172{173Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDefaultRasterSampleCount_), defaultRasterSampleCount);174}175176_MTL_INLINE void MTL4::RenderPassDescriptor::setDepthAttachment(const MTL::RenderPassDepthAttachmentDescriptor* depthAttachment)177{178Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthAttachment_), depthAttachment);179}180181_MTL_INLINE void MTL4::RenderPassDescriptor::setImageblockSampleLength(NS::UInteger imageblockSampleLength)182{183Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setImageblockSampleLength_), imageblockSampleLength);184}185186_MTL_INLINE void MTL4::RenderPassDescriptor::setRasterizationRateMap(const MTL::RasterizationRateMap* rasterizationRateMap)187{188Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRasterizationRateMap_), rasterizationRateMap);189}190191_MTL_INLINE void MTL4::RenderPassDescriptor::setRenderTargetArrayLength(NS::UInteger renderTargetArrayLength)192{193Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRenderTargetArrayLength_), renderTargetArrayLength);194}195196_MTL_INLINE void MTL4::RenderPassDescriptor::setRenderTargetHeight(NS::UInteger renderTargetHeight)197{198Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRenderTargetHeight_), renderTargetHeight);199}200201_MTL_INLINE void MTL4::RenderPassDescriptor::setRenderTargetWidth(NS::UInteger renderTargetWidth)202{203Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRenderTargetWidth_), renderTargetWidth);204}205206_MTL_INLINE void MTL4::RenderPassDescriptor::setSamplePositions(const MTL::SamplePosition* positions, NS::UInteger count)207{208Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSamplePositions_count_), positions, count);209}210211_MTL_INLINE void MTL4::RenderPassDescriptor::setStencilAttachment(const MTL::RenderPassStencilAttachmentDescriptor* stencilAttachment)212{213Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStencilAttachment_), stencilAttachment);214}215216_MTL_INLINE void MTL4::RenderPassDescriptor::setSupportColorAttachmentMapping(bool supportColorAttachmentMapping)217{218Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSupportColorAttachmentMapping_), supportColorAttachmentMapping);219}220221_MTL_INLINE void MTL4::RenderPassDescriptor::setThreadgroupMemoryLength(NS::UInteger threadgroupMemoryLength)222{223Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setThreadgroupMemoryLength_), threadgroupMemoryLength);224}225226_MTL_INLINE void MTL4::RenderPassDescriptor::setTileHeight(NS::UInteger tileHeight)227{228Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTileHeight_), tileHeight);229}230231_MTL_INLINE void MTL4::RenderPassDescriptor::setTileWidth(NS::UInteger tileWidth)232{233Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTileWidth_), tileWidth);234}235236_MTL_INLINE void MTL4::RenderPassDescriptor::setVisibilityResultBuffer(const MTL::Buffer* visibilityResultBuffer)237{238Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVisibilityResultBuffer_), visibilityResultBuffer);239}240241_MTL_INLINE void MTL4::RenderPassDescriptor::setVisibilityResultType(MTL::VisibilityResultType visibilityResultType)242{243Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVisibilityResultType_), visibilityResultType);244}245246_MTL_INLINE MTL::RenderPassStencilAttachmentDescriptor* MTL4::RenderPassDescriptor::stencilAttachment() const247{248return Object::sendMessage<MTL::RenderPassStencilAttachmentDescriptor*>(this, _MTL_PRIVATE_SEL(stencilAttachment));249}250251_MTL_INLINE bool MTL4::RenderPassDescriptor::supportColorAttachmentMapping() const252{253return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportColorAttachmentMapping));254}255256_MTL_INLINE NS::UInteger MTL4::RenderPassDescriptor::threadgroupMemoryLength() const257{258return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(threadgroupMemoryLength));259}260261_MTL_INLINE NS::UInteger MTL4::RenderPassDescriptor::tileHeight() const262{263return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(tileHeight));264}265266_MTL_INLINE NS::UInteger MTL4::RenderPassDescriptor::tileWidth() const267{268return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(tileWidth));269}270271_MTL_INLINE MTL::Buffer* MTL4::RenderPassDescriptor::visibilityResultBuffer() const272{273return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(visibilityResultBuffer));274}275276_MTL_INLINE MTL::VisibilityResultType MTL4::RenderPassDescriptor::visibilityResultType() const277{278return Object::sendMessage<MTL::VisibilityResultType>(this, _MTL_PRIVATE_SEL(visibilityResultType));279}280281282