yum-mirror/VkFFT

git clone https://git.yummers.dev/yum-mirror/VkFFT

Tolmachev DmitriiMetal support in VkFFTba7001c

develop
9.4 KiB269 linesraw
1//-------------------------------------------------------------------------------------------------------------------------------------------------------------
2//
3// Metal/MTLDepthStencil.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 "MTLDepthStencil.hpp"
30
31namespace MTL
32{
33_MTL_ENUM(NS::UInteger, CompareFunction) {
34    CompareFunctionNever = 0,
35    CompareFunctionLess = 1,
36    CompareFunctionEqual = 2,
37    CompareFunctionLessEqual = 3,
38    CompareFunctionGreater = 4,
39    CompareFunctionNotEqual = 5,
40    CompareFunctionGreaterEqual = 6,
41    CompareFunctionAlways = 7,
42};
43
44_MTL_ENUM(NS::UInteger, StencilOperation) {
45    StencilOperationKeep = 0,
46    StencilOperationZero = 1,
47    StencilOperationReplace = 2,
48    StencilOperationIncrementClamp = 3,
49    StencilOperationDecrementClamp = 4,
50    StencilOperationInvert = 5,
51    StencilOperationIncrementWrap = 6,
52    StencilOperationDecrementWrap = 7,
53};
54
55class StencilDescriptor : public NS::Copying<StencilDescriptor>
56{
57public:
58    static class StencilDescriptor* alloc();
59
60    class StencilDescriptor*        init();
61
62    MTL::CompareFunction            stencilCompareFunction() const;
63    void                            setStencilCompareFunction(MTL::CompareFunction stencilCompareFunction);
64
65    MTL::StencilOperation           stencilFailureOperation() const;
66    void                            setStencilFailureOperation(MTL::StencilOperation stencilFailureOperation);
67
68    MTL::StencilOperation           depthFailureOperation() const;
69    void                            setDepthFailureOperation(MTL::StencilOperation depthFailureOperation);
70
71    MTL::StencilOperation           depthStencilPassOperation() const;
72    void                            setDepthStencilPassOperation(MTL::StencilOperation depthStencilPassOperation);
73
74    uint32_t                        readMask() const;
75    void                            setReadMask(uint32_t readMask);
76
77    uint32_t                        writeMask() const;
78    void                            setWriteMask(uint32_t writeMask);
79};
80
81class DepthStencilDescriptor : public NS::Copying<DepthStencilDescriptor>
82{
83public:
84    static class DepthStencilDescriptor* alloc();
85
86    class DepthStencilDescriptor*        init();
87
88    MTL::CompareFunction                 depthCompareFunction() const;
89    void                                 setDepthCompareFunction(MTL::CompareFunction depthCompareFunction);
90
91    bool                                 depthWriteEnabled() const;
92    void                                 setDepthWriteEnabled(bool depthWriteEnabled);
93
94    class StencilDescriptor*             frontFaceStencil() const;
95    void                                 setFrontFaceStencil(const class StencilDescriptor* frontFaceStencil);
96
97    class StencilDescriptor*             backFaceStencil() const;
98    void                                 setBackFaceStencil(const class StencilDescriptor* backFaceStencil);
99
100    NS::String*                          label() const;
101    void                                 setLabel(const NS::String* label);
102};
103
104class DepthStencilState : public NS::Referencing<DepthStencilState>
105{
106public:
107    NS::String*   label() const;
108
109    class Device* device() const;
110};
111
112}
113
114// static method: alloc
115_MTL_INLINE MTL::StencilDescriptor* MTL::StencilDescriptor::alloc()
116{
117    return NS::Object::alloc<MTL::StencilDescriptor>(_MTL_PRIVATE_CLS(MTLStencilDescriptor));
118}
119
120// method: init
121_MTL_INLINE MTL::StencilDescriptor* MTL::StencilDescriptor::init()
122{
123    return NS::Object::init<MTL::StencilDescriptor>();
124}
125
126// property: stencilCompareFunction
127_MTL_INLINE MTL::CompareFunction MTL::StencilDescriptor::stencilCompareFunction() const
128{
129    return Object::sendMessage<MTL::CompareFunction>(this, _MTL_PRIVATE_SEL(stencilCompareFunction));
130}
131
132_MTL_INLINE void MTL::StencilDescriptor::setStencilCompareFunction(MTL::CompareFunction stencilCompareFunction)
133{
134    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStencilCompareFunction_), stencilCompareFunction);
135}
136
137// property: stencilFailureOperation
138_MTL_INLINE MTL::StencilOperation MTL::StencilDescriptor::stencilFailureOperation() const
139{
140    return Object::sendMessage<MTL::StencilOperation>(this, _MTL_PRIVATE_SEL(stencilFailureOperation));
141}
142
143_MTL_INLINE void MTL::StencilDescriptor::setStencilFailureOperation(MTL::StencilOperation stencilFailureOperation)
144{
145    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStencilFailureOperation_), stencilFailureOperation);
146}
147
148// property: depthFailureOperation
149_MTL_INLINE MTL::StencilOperation MTL::StencilDescriptor::depthFailureOperation() const
150{
151    return Object::sendMessage<MTL::StencilOperation>(this, _MTL_PRIVATE_SEL(depthFailureOperation));
152}
153
154_MTL_INLINE void MTL::StencilDescriptor::setDepthFailureOperation(MTL::StencilOperation depthFailureOperation)
155{
156    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthFailureOperation_), depthFailureOperation);
157}
158
159// property: depthStencilPassOperation
160_MTL_INLINE MTL::StencilOperation MTL::StencilDescriptor::depthStencilPassOperation() const
161{
162    return Object::sendMessage<MTL::StencilOperation>(this, _MTL_PRIVATE_SEL(depthStencilPassOperation));
163}
164
165_MTL_INLINE void MTL::StencilDescriptor::setDepthStencilPassOperation(MTL::StencilOperation depthStencilPassOperation)
166{
167    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthStencilPassOperation_), depthStencilPassOperation);
168}
169
170// property: readMask
171_MTL_INLINE uint32_t MTL::StencilDescriptor::readMask() const
172{
173    return Object::sendMessage<uint32_t>(this, _MTL_PRIVATE_SEL(readMask));
174}
175
176_MTL_INLINE void MTL::StencilDescriptor::setReadMask(uint32_t readMask)
177{
178    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setReadMask_), readMask);
179}
180
181// property: writeMask
182_MTL_INLINE uint32_t MTL::StencilDescriptor::writeMask() const
183{
184    return Object::sendMessage<uint32_t>(this, _MTL_PRIVATE_SEL(writeMask));
185}
186
187_MTL_INLINE void MTL::StencilDescriptor::setWriteMask(uint32_t writeMask)
188{
189    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setWriteMask_), writeMask);
190}
191
192// static method: alloc
193_MTL_INLINE MTL::DepthStencilDescriptor* MTL::DepthStencilDescriptor::alloc()
194{
195    return NS::Object::alloc<MTL::DepthStencilDescriptor>(_MTL_PRIVATE_CLS(MTLDepthStencilDescriptor));
196}
197
198// method: init
199_MTL_INLINE MTL::DepthStencilDescriptor* MTL::DepthStencilDescriptor::init()
200{
201    return NS::Object::init<MTL::DepthStencilDescriptor>();
202}
203
204// property: depthCompareFunction
205_MTL_INLINE MTL::CompareFunction MTL::DepthStencilDescriptor::depthCompareFunction() const
206{
207    return Object::sendMessage<MTL::CompareFunction>(this, _MTL_PRIVATE_SEL(depthCompareFunction));
208}
209
210_MTL_INLINE void MTL::DepthStencilDescriptor::setDepthCompareFunction(MTL::CompareFunction depthCompareFunction)
211{
212    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthCompareFunction_), depthCompareFunction);
213}
214
215// property: depthWriteEnabled
216_MTL_INLINE bool MTL::DepthStencilDescriptor::depthWriteEnabled() const
217{
218    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isDepthWriteEnabled));
219}
220
221_MTL_INLINE void MTL::DepthStencilDescriptor::setDepthWriteEnabled(bool depthWriteEnabled)
222{
223    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthWriteEnabled_), depthWriteEnabled);
224}
225
226// property: frontFaceStencil
227_MTL_INLINE MTL::StencilDescriptor* MTL::DepthStencilDescriptor::frontFaceStencil() const
228{
229    return Object::sendMessage<MTL::StencilDescriptor*>(this, _MTL_PRIVATE_SEL(frontFaceStencil));
230}
231
232_MTL_INLINE void MTL::DepthStencilDescriptor::setFrontFaceStencil(const MTL::StencilDescriptor* frontFaceStencil)
233{
234    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFrontFaceStencil_), frontFaceStencil);
235}
236
237// property: backFaceStencil
238_MTL_INLINE MTL::StencilDescriptor* MTL::DepthStencilDescriptor::backFaceStencil() const
239{
240    return Object::sendMessage<MTL::StencilDescriptor*>(this, _MTL_PRIVATE_SEL(backFaceStencil));
241}
242
243_MTL_INLINE void MTL::DepthStencilDescriptor::setBackFaceStencil(const MTL::StencilDescriptor* backFaceStencil)
244{
245    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBackFaceStencil_), backFaceStencil);
246}
247
248// property: label
249_MTL_INLINE NS::String* MTL::DepthStencilDescriptor::label() const
250{
251    return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
252}
253
254_MTL_INLINE void MTL::DepthStencilDescriptor::setLabel(const NS::String* label)
255{
256    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
257}
258
259// property: label
260_MTL_INLINE NS::String* MTL::DepthStencilState::label() const
261{
262    return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
263}
264
265// property: device
266_MTL_INLINE MTL::Device* MTL::DepthStencilState::device() const
267{
268    return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device));
269}