yum-mirror/VkFFT
git clone https://git.yummers.dev/yum-mirror/VkFFT
ba7001c
master
1//------------------------------------------------------------------------------------------------------------------------------------------------------------- 2// 3// Metal/MTLAccelerationStructureCommandEncoder.hpp 4// 5// Copyright 2020-2021 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 at 10// 11// http://www.apache.org/licenses/LICENSE-2.0 12// 13// Unless required by applicable law or agreed to in writing, software 14// 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 and 17// limitations under the License. 18// 19//------------------------------------------------------------------------------------------------------------------------------------------------------------- 20 21#pragma once 22 23#include "MTLDefines.hpp" 24#include "MTLHeaderBridge.hpp" 25#include "MTLPrivate.hpp" 26 27#include <Foundation/Foundation.hpp> 28 29#include "MTLArgument.hpp" 30#include "MTLCommandEncoder.hpp" 31#include "MTLHeap.hpp" 32#include "MTLResource.hpp" 33 34namespace MTL 35{ 36class AccelerationStructureCommandEncoder :public NS ::Referencing < AccelerationStructureCommandEncoder ,CommandEncoder > 37{ 38public : 39void buildAccelerationStructure (const class AccelerationStructure * accelerationStructure ,const class AccelerationStructureDescriptor * descriptor ,const class Buffer * scratchBuffer ,NS ::UInteger scratchBufferOffset ); 40 41void refitAccelerationStructure (const class AccelerationStructure * sourceAccelerationStructure ,const class AccelerationStructureDescriptor * descriptor ,const class AccelerationStructure * destinationAccelerationStructure ,const class Buffer * scratchBuffer ,NS ::UInteger scratchBufferOffset ); 42 43void copyAccelerationStructure (const class AccelerationStructure * sourceAccelerationStructure ,const class AccelerationStructure * destinationAccelerationStructure ); 44 45void writeCompactedAccelerationStructureSize (const class AccelerationStructure * accelerationStructure ,const class Buffer * buffer ,NS ::UInteger offset ); 46 47void writeCompactedAccelerationStructureSize (const class AccelerationStructure * accelerationStructure ,const class Buffer * buffer ,NS ::UInteger offset ,MTL ::DataType sizeDataType ); 48 49void copyAndCompactAccelerationStructure (const class AccelerationStructure * sourceAccelerationStructure ,const class AccelerationStructure * destinationAccelerationStructure ); 50 51void updateFence (const class Fence * fence ); 52 53void waitForFence (const class Fence * fence ); 54 55void useResource (const class Resource * resource ,MTL ::ResourceUsage usage ); 56 57void useResources (MTL ::Resource * resources [],NS ::UInteger count ,MTL ::ResourceUsage usage ); 58 59void useHeap (const class Heap * heap ); 60 61void useHeaps (MTL ::Heap * heaps [],NS ::UInteger count ); 62 63void sampleCountersInBuffer (const class CounterSampleBuffer * sampleBuffer ,NS ::UInteger sampleIndex ,bool barrier ); 64}; 65 66} 67 68// method: buildAccelerationStructure:descriptor:scratchBuffer:scratchBufferOffset: 69_MTL_INLINE voidMTL ::AccelerationStructureCommandEncoder ::buildAccelerationStructure (const MTL ::AccelerationStructure * accelerationStructure ,const MTL ::AccelerationStructureDescriptor * descriptor ,const MTL ::Buffer * scratchBuffer ,NS ::UInteger scratchBufferOffset ) 70{ 71Object ::sendMessage < void > (this ,_MTL_PRIVATE_SEL (buildAccelerationStructure_descriptor_scratchBuffer_scratchBufferOffset_ ),accelerationStructure ,descriptor ,scratchBuffer ,scratchBufferOffset ); 72} 73 74// method: refitAccelerationStructure:descriptor:destination:scratchBuffer:scratchBufferOffset: 75_MTL_INLINE voidMTL ::AccelerationStructureCommandEncoder ::refitAccelerationStructure (const MTL ::AccelerationStructure * sourceAccelerationStructure ,const MTL ::AccelerationStructureDescriptor * descriptor ,const MTL ::AccelerationStructure * destinationAccelerationStructure ,const MTL ::Buffer * scratchBuffer ,NS ::UInteger scratchBufferOffset ) 76{ 77Object ::sendMessage < void > (this ,_MTL_PRIVATE_SEL (refitAccelerationStructure_descriptor_destination_scratchBuffer_scratchBufferOffset_ ),sourceAccelerationStructure ,descriptor ,destinationAccelerationStructure ,scratchBuffer ,scratchBufferOffset ); 78} 79 80// method: copyAccelerationStructure:toAccelerationStructure: 81_MTL_INLINE voidMTL ::AccelerationStructureCommandEncoder ::copyAccelerationStructure (const MTL ::AccelerationStructure * sourceAccelerationStructure ,const MTL ::AccelerationStructure * destinationAccelerationStructure ) 82{ 83Object ::sendMessage < void > (this ,_MTL_PRIVATE_SEL (copyAccelerationStructure_toAccelerationStructure_ ),sourceAccelerationStructure ,destinationAccelerationStructure ); 84} 85 86// method: writeCompactedAccelerationStructureSize:toBuffer:offset: 87_MTL_INLINE voidMTL ::AccelerationStructureCommandEncoder ::writeCompactedAccelerationStructureSize (const MTL ::AccelerationStructure * accelerationStructure ,const MTL ::Buffer * buffer ,NS ::UInteger offset ) 88{ 89Object ::sendMessage < void > (this ,_MTL_PRIVATE_SEL (writeCompactedAccelerationStructureSize_toBuffer_offset_ ),accelerationStructure ,buffer ,offset ); 90} 91 92// method: writeCompactedAccelerationStructureSize:toBuffer:offset:sizeDataType: 93_MTL_INLINE voidMTL ::AccelerationStructureCommandEncoder ::writeCompactedAccelerationStructureSize (const MTL ::AccelerationStructure * accelerationStructure ,const MTL ::Buffer * buffer ,NS ::UInteger offset ,MTL ::DataType sizeDataType ) 94{ 95Object ::sendMessage < void > (this ,_MTL_PRIVATE_SEL (writeCompactedAccelerationStructureSize_toBuffer_offset_sizeDataType_ ),accelerationStructure ,buffer ,offset ,sizeDataType ); 96} 97 98// method: copyAndCompactAccelerationStructure:toAccelerationStructure: 99_MTL_INLINE voidMTL ::AccelerationStructureCommandEncoder ::copyAndCompactAccelerationStructure (const MTL ::AccelerationStructure * sourceAccelerationStructure ,const MTL ::AccelerationStructure * destinationAccelerationStructure ) 100{ 101Object ::sendMessage < void > (this ,_MTL_PRIVATE_SEL (copyAndCompactAccelerationStructure_toAccelerationStructure_ ),sourceAccelerationStructure ,destinationAccelerationStructure ); 102} 103 104// method: updateFence: 105_MTL_INLINE voidMTL ::AccelerationStructureCommandEncoder ::updateFence (const MTL ::Fence * fence ) 106{ 107Object ::sendMessage < void > (this ,_MTL_PRIVATE_SEL (updateFence_ ),fence ); 108} 109 110// method: waitForFence: 111_MTL_INLINE voidMTL ::AccelerationStructureCommandEncoder ::waitForFence (const MTL ::Fence * fence ) 112{ 113Object ::sendMessage < void > (this ,_MTL_PRIVATE_SEL (waitForFence_ ),fence ); 114} 115 116// method: useResource:usage: 117_MTL_INLINE voidMTL ::AccelerationStructureCommandEncoder ::useResource (const MTL ::Resource * resource ,MTL ::ResourceUsage usage ) 118{ 119Object ::sendMessage < void > (this ,_MTL_PRIVATE_SEL (useResource_usage_ ),resource ,usage ); 120} 121 122// method: useResources:count:usage: 123_MTL_INLINE voidMTL ::AccelerationStructureCommandEncoder ::useResources (MTL ::Resource * resources [],NS ::UInteger count ,MTL ::ResourceUsage usage ) 124{ 125Object ::sendMessage < void > (this ,_MTL_PRIVATE_SEL (useResources_count_usage_ ),resources ,count ,usage ); 126} 127 128// method: useHeap: 129_MTL_INLINE voidMTL ::AccelerationStructureCommandEncoder ::useHeap (const MTL ::Heap * heap ) 130{ 131Object ::sendMessage < void > (this ,_MTL_PRIVATE_SEL (useHeap_ ),heap ); 132} 133 134// method: useHeaps:count: 135_MTL_INLINE voidMTL ::AccelerationStructureCommandEncoder ::useHeaps (MTL ::Heap * heaps [],NS ::UInteger count ) 136{ 137Object ::sendMessage < void > (this ,_MTL_PRIVATE_SEL (useHeaps_count_ ),heaps ,count ); 138} 139 140// method: sampleCountersInBuffer:atSampleIndex:withBarrier: 141_MTL_INLINE voidMTL ::AccelerationStructureCommandEncoder ::sampleCountersInBuffer (const MTL ::CounterSampleBuffer * sampleBuffer ,NS ::UInteger sampleIndex ,bool barrier ) 142{ 143Object ::sendMessage < void > (this ,_MTL_PRIVATE_SEL (sampleCountersInBuffer_atSampleIndex_withBarrier_ ),sampleBuffer ,sampleIndex ,barrier ); 144}