MTLRenderPass.hpp
1 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 2 // 3 // Metal/MTLRenderPass.hpp 4 // 5 // Copyright 2020-2024 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 #include "MTLTypes.hpp" 27 28 #include <Foundation/Foundation.hpp> 29 30 #include "MTLRenderPass.hpp" 31 32 namespace MTL 33 { 34 struct ClearColor 35 { 36 static ClearColor Make(double red, double green, double blue, double alpha); 37 38 ClearColor() = default; 39 40 ClearColor(double red, double green, double blue, double alpha); 41 42 double red; 43 double green; 44 double blue; 45 double alpha; 46 } _MTL_PACKED; 47 48 _MTL_ENUM(NS::UInteger, LoadAction) { 49 LoadActionDontCare = 0, 50 LoadActionLoad = 1, 51 LoadActionClear = 2, 52 }; 53 54 _MTL_ENUM(NS::UInteger, StoreAction) { 55 StoreActionDontCare = 0, 56 StoreActionStore = 1, 57 StoreActionMultisampleResolve = 2, 58 StoreActionStoreAndMultisampleResolve = 3, 59 StoreActionUnknown = 4, 60 StoreActionCustomSampleDepthStore = 5, 61 }; 62 63 _MTL_OPTIONS(NS::UInteger, StoreActionOptions) { 64 StoreActionOptionNone = 0, 65 StoreActionOptionCustomSamplePositions = 1, 66 StoreActionOptionValidMask = 1, 67 }; 68 69 class RenderPassAttachmentDescriptor : public NS::Copying<RenderPassAttachmentDescriptor> 70 { 71 public: 72 static class RenderPassAttachmentDescriptor* alloc(); 73 74 class RenderPassAttachmentDescriptor* init(); 75 76 class Texture* texture() const; 77 void setTexture(const class Texture* texture); 78 79 NS::UInteger level() const; 80 void setLevel(NS::UInteger level); 81 82 NS::UInteger slice() const; 83 void setSlice(NS::UInteger slice); 84 85 NS::UInteger depthPlane() const; 86 void setDepthPlane(NS::UInteger depthPlane); 87 88 class Texture* resolveTexture() const; 89 void setResolveTexture(const class Texture* resolveTexture); 90 91 NS::UInteger resolveLevel() const; 92 void setResolveLevel(NS::UInteger resolveLevel); 93 94 NS::UInteger resolveSlice() const; 95 void setResolveSlice(NS::UInteger resolveSlice); 96 97 NS::UInteger resolveDepthPlane() const; 98 void setResolveDepthPlane(NS::UInteger resolveDepthPlane); 99 100 MTL::LoadAction loadAction() const; 101 void setLoadAction(MTL::LoadAction loadAction); 102 103 MTL::StoreAction storeAction() const; 104 void setStoreAction(MTL::StoreAction storeAction); 105 106 MTL::StoreActionOptions storeActionOptions() const; 107 void setStoreActionOptions(MTL::StoreActionOptions storeActionOptions); 108 }; 109 110 class RenderPassColorAttachmentDescriptor : public NS::Copying<RenderPassColorAttachmentDescriptor, MTL::RenderPassAttachmentDescriptor> 111 { 112 public: 113 static class RenderPassColorAttachmentDescriptor* alloc(); 114 115 class RenderPassColorAttachmentDescriptor* init(); 116 117 MTL::ClearColor clearColor() const; 118 void setClearColor(MTL::ClearColor clearColor); 119 }; 120 121 _MTL_ENUM(NS::UInteger, MultisampleDepthResolveFilter) { 122 MultisampleDepthResolveFilterSample0 = 0, 123 MultisampleDepthResolveFilterMin = 1, 124 MultisampleDepthResolveFilterMax = 2, 125 }; 126 127 class RenderPassDepthAttachmentDescriptor : public NS::Copying<RenderPassDepthAttachmentDescriptor, MTL::RenderPassAttachmentDescriptor> 128 { 129 public: 130 static class RenderPassDepthAttachmentDescriptor* alloc(); 131 132 class RenderPassDepthAttachmentDescriptor* init(); 133 134 double clearDepth() const; 135 void setClearDepth(double clearDepth); 136 137 MTL::MultisampleDepthResolveFilter depthResolveFilter() const; 138 void setDepthResolveFilter(MTL::MultisampleDepthResolveFilter depthResolveFilter); 139 }; 140 141 _MTL_ENUM(NS::UInteger, MultisampleStencilResolveFilter) { 142 MultisampleStencilResolveFilterSample0 = 0, 143 MultisampleStencilResolveFilterDepthResolvedSample = 1, 144 }; 145 146 class RenderPassStencilAttachmentDescriptor : public NS::Copying<RenderPassStencilAttachmentDescriptor, MTL::RenderPassAttachmentDescriptor> 147 { 148 public: 149 static class RenderPassStencilAttachmentDescriptor* alloc(); 150 151 class RenderPassStencilAttachmentDescriptor* init(); 152 153 uint32_t clearStencil() const; 154 void setClearStencil(uint32_t clearStencil); 155 156 MTL::MultisampleStencilResolveFilter stencilResolveFilter() const; 157 void setStencilResolveFilter(MTL::MultisampleStencilResolveFilter stencilResolveFilter); 158 }; 159 160 class RenderPassColorAttachmentDescriptorArray : public NS::Referencing<RenderPassColorAttachmentDescriptorArray> 161 { 162 public: 163 static class RenderPassColorAttachmentDescriptorArray* alloc(); 164 165 class RenderPassColorAttachmentDescriptorArray* init(); 166 167 class RenderPassColorAttachmentDescriptor* object(NS::UInteger attachmentIndex); 168 169 void setObject(const class RenderPassColorAttachmentDescriptor* attachment, NS::UInteger attachmentIndex); 170 }; 171 172 class RenderPassSampleBufferAttachmentDescriptor : public NS::Copying<RenderPassSampleBufferAttachmentDescriptor> 173 { 174 public: 175 static class RenderPassSampleBufferAttachmentDescriptor* alloc(); 176 177 class RenderPassSampleBufferAttachmentDescriptor* init(); 178 179 class CounterSampleBuffer* sampleBuffer() const; 180 void setSampleBuffer(const class CounterSampleBuffer* sampleBuffer); 181 182 NS::UInteger startOfVertexSampleIndex() const; 183 void setStartOfVertexSampleIndex(NS::UInteger startOfVertexSampleIndex); 184 185 NS::UInteger endOfVertexSampleIndex() const; 186 void setEndOfVertexSampleIndex(NS::UInteger endOfVertexSampleIndex); 187 188 NS::UInteger startOfFragmentSampleIndex() const; 189 void setStartOfFragmentSampleIndex(NS::UInteger startOfFragmentSampleIndex); 190 191 NS::UInteger endOfFragmentSampleIndex() const; 192 void setEndOfFragmentSampleIndex(NS::UInteger endOfFragmentSampleIndex); 193 }; 194 195 class RenderPassSampleBufferAttachmentDescriptorArray : public NS::Referencing<RenderPassSampleBufferAttachmentDescriptorArray> 196 { 197 public: 198 static class RenderPassSampleBufferAttachmentDescriptorArray* alloc(); 199 200 class RenderPassSampleBufferAttachmentDescriptorArray* init(); 201 202 class RenderPassSampleBufferAttachmentDescriptor* object(NS::UInteger attachmentIndex); 203 204 void setObject(const class RenderPassSampleBufferAttachmentDescriptor* attachment, NS::UInteger attachmentIndex); 205 }; 206 207 class RenderPassDescriptor : public NS::Copying<RenderPassDescriptor> 208 { 209 public: 210 static class RenderPassDescriptor* alloc(); 211 212 class RenderPassDescriptor* init(); 213 214 static class RenderPassDescriptor* renderPassDescriptor(); 215 216 class RenderPassColorAttachmentDescriptorArray* colorAttachments() const; 217 218 class RenderPassDepthAttachmentDescriptor* depthAttachment() const; 219 void setDepthAttachment(const class RenderPassDepthAttachmentDescriptor* depthAttachment); 220 221 class RenderPassStencilAttachmentDescriptor* stencilAttachment() const; 222 void setStencilAttachment(const class RenderPassStencilAttachmentDescriptor* stencilAttachment); 223 224 class Buffer* visibilityResultBuffer() const; 225 void setVisibilityResultBuffer(const class Buffer* visibilityResultBuffer); 226 227 NS::UInteger renderTargetArrayLength() const; 228 void setRenderTargetArrayLength(NS::UInteger renderTargetArrayLength); 229 230 NS::UInteger imageblockSampleLength() const; 231 void setImageblockSampleLength(NS::UInteger imageblockSampleLength); 232 233 NS::UInteger threadgroupMemoryLength() const; 234 void setThreadgroupMemoryLength(NS::UInteger threadgroupMemoryLength); 235 236 NS::UInteger tileWidth() const; 237 void setTileWidth(NS::UInteger tileWidth); 238 239 NS::UInteger tileHeight() const; 240 void setTileHeight(NS::UInteger tileHeight); 241 242 NS::UInteger defaultRasterSampleCount() const; 243 void setDefaultRasterSampleCount(NS::UInteger defaultRasterSampleCount); 244 245 NS::UInteger renderTargetWidth() const; 246 void setRenderTargetWidth(NS::UInteger renderTargetWidth); 247 248 NS::UInteger renderTargetHeight() const; 249 void setRenderTargetHeight(NS::UInteger renderTargetHeight); 250 251 void setSamplePositions(const MTL::SamplePosition* positions, NS::UInteger count); 252 253 NS::UInteger getSamplePositions(MTL::SamplePosition* positions, NS::UInteger count); 254 255 class RasterizationRateMap* rasterizationRateMap() const; 256 void setRasterizationRateMap(const class RasterizationRateMap* rasterizationRateMap); 257 258 class RenderPassSampleBufferAttachmentDescriptorArray* sampleBufferAttachments() const; 259 }; 260 261 } 262 263 _MTL_INLINE MTL::ClearColor MTL::ClearColor::Make(double red, double green, double blue, double alpha) 264 { 265 return ClearColor(red, green, blue, alpha); 266 } 267 268 _MTL_INLINE MTL::ClearColor::ClearColor(double _red, double _green, double _blue, double _alpha) 269 : red(_red) 270 , green(_green) 271 , blue(_blue) 272 , alpha(_alpha) 273 { 274 } 275 276 // static method: alloc 277 _MTL_INLINE MTL::RenderPassAttachmentDescriptor* MTL::RenderPassAttachmentDescriptor::alloc() 278 { 279 return NS::Object::alloc<MTL::RenderPassAttachmentDescriptor>(_MTL_PRIVATE_CLS(MTLRenderPassAttachmentDescriptor)); 280 } 281 282 // method: init 283 _MTL_INLINE MTL::RenderPassAttachmentDescriptor* MTL::RenderPassAttachmentDescriptor::init() 284 { 285 return NS::Object::init<MTL::RenderPassAttachmentDescriptor>(); 286 } 287 288 // property: texture 289 _MTL_INLINE MTL::Texture* MTL::RenderPassAttachmentDescriptor::texture() const 290 { 291 return Object::sendMessage<MTL::Texture*>(this, _MTL_PRIVATE_SEL(texture)); 292 } 293 294 _MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setTexture(const MTL::Texture* texture) 295 { 296 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTexture_), texture); 297 } 298 299 // property: level 300 _MTL_INLINE NS::UInteger MTL::RenderPassAttachmentDescriptor::level() const 301 { 302 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(level)); 303 } 304 305 _MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setLevel(NS::UInteger level) 306 { 307 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLevel_), level); 308 } 309 310 // property: slice 311 _MTL_INLINE NS::UInteger MTL::RenderPassAttachmentDescriptor::slice() const 312 { 313 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(slice)); 314 } 315 316 _MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setSlice(NS::UInteger slice) 317 { 318 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSlice_), slice); 319 } 320 321 // property: depthPlane 322 _MTL_INLINE NS::UInteger MTL::RenderPassAttachmentDescriptor::depthPlane() const 323 { 324 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(depthPlane)); 325 } 326 327 _MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setDepthPlane(NS::UInteger depthPlane) 328 { 329 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthPlane_), depthPlane); 330 } 331 332 // property: resolveTexture 333 _MTL_INLINE MTL::Texture* MTL::RenderPassAttachmentDescriptor::resolveTexture() const 334 { 335 return Object::sendMessage<MTL::Texture*>(this, _MTL_PRIVATE_SEL(resolveTexture)); 336 } 337 338 _MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setResolveTexture(const MTL::Texture* resolveTexture) 339 { 340 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setResolveTexture_), resolveTexture); 341 } 342 343 // property: resolveLevel 344 _MTL_INLINE NS::UInteger MTL::RenderPassAttachmentDescriptor::resolveLevel() const 345 { 346 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(resolveLevel)); 347 } 348 349 _MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setResolveLevel(NS::UInteger resolveLevel) 350 { 351 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setResolveLevel_), resolveLevel); 352 } 353 354 // property: resolveSlice 355 _MTL_INLINE NS::UInteger MTL::RenderPassAttachmentDescriptor::resolveSlice() const 356 { 357 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(resolveSlice)); 358 } 359 360 _MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setResolveSlice(NS::UInteger resolveSlice) 361 { 362 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setResolveSlice_), resolveSlice); 363 } 364 365 // property: resolveDepthPlane 366 _MTL_INLINE NS::UInteger MTL::RenderPassAttachmentDescriptor::resolveDepthPlane() const 367 { 368 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(resolveDepthPlane)); 369 } 370 371 _MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setResolveDepthPlane(NS::UInteger resolveDepthPlane) 372 { 373 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setResolveDepthPlane_), resolveDepthPlane); 374 } 375 376 // property: loadAction 377 _MTL_INLINE MTL::LoadAction MTL::RenderPassAttachmentDescriptor::loadAction() const 378 { 379 return Object::sendMessage<MTL::LoadAction>(this, _MTL_PRIVATE_SEL(loadAction)); 380 } 381 382 _MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setLoadAction(MTL::LoadAction loadAction) 383 { 384 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLoadAction_), loadAction); 385 } 386 387 // property: storeAction 388 _MTL_INLINE MTL::StoreAction MTL::RenderPassAttachmentDescriptor::storeAction() const 389 { 390 return Object::sendMessage<MTL::StoreAction>(this, _MTL_PRIVATE_SEL(storeAction)); 391 } 392 393 _MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setStoreAction(MTL::StoreAction storeAction) 394 { 395 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStoreAction_), storeAction); 396 } 397 398 // property: storeActionOptions 399 _MTL_INLINE MTL::StoreActionOptions MTL::RenderPassAttachmentDescriptor::storeActionOptions() const 400 { 401 return Object::sendMessage<MTL::StoreActionOptions>(this, _MTL_PRIVATE_SEL(storeActionOptions)); 402 } 403 404 _MTL_INLINE void MTL::RenderPassAttachmentDescriptor::setStoreActionOptions(MTL::StoreActionOptions storeActionOptions) 405 { 406 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStoreActionOptions_), storeActionOptions); 407 } 408 409 // static method: alloc 410 _MTL_INLINE MTL::RenderPassColorAttachmentDescriptor* MTL::RenderPassColorAttachmentDescriptor::alloc() 411 { 412 return NS::Object::alloc<MTL::RenderPassColorAttachmentDescriptor>(_MTL_PRIVATE_CLS(MTLRenderPassColorAttachmentDescriptor)); 413 } 414 415 // method: init 416 _MTL_INLINE MTL::RenderPassColorAttachmentDescriptor* MTL::RenderPassColorAttachmentDescriptor::init() 417 { 418 return NS::Object::init<MTL::RenderPassColorAttachmentDescriptor>(); 419 } 420 421 // property: clearColor 422 _MTL_INLINE MTL::ClearColor MTL::RenderPassColorAttachmentDescriptor::clearColor() const 423 { 424 return Object::sendMessage<MTL::ClearColor>(this, _MTL_PRIVATE_SEL(clearColor)); 425 } 426 427 _MTL_INLINE void MTL::RenderPassColorAttachmentDescriptor::setClearColor(MTL::ClearColor clearColor) 428 { 429 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setClearColor_), clearColor); 430 } 431 432 // static method: alloc 433 _MTL_INLINE MTL::RenderPassDepthAttachmentDescriptor* MTL::RenderPassDepthAttachmentDescriptor::alloc() 434 { 435 return NS::Object::alloc<MTL::RenderPassDepthAttachmentDescriptor>(_MTL_PRIVATE_CLS(MTLRenderPassDepthAttachmentDescriptor)); 436 } 437 438 // method: init 439 _MTL_INLINE MTL::RenderPassDepthAttachmentDescriptor* MTL::RenderPassDepthAttachmentDescriptor::init() 440 { 441 return NS::Object::init<MTL::RenderPassDepthAttachmentDescriptor>(); 442 } 443 444 // property: clearDepth 445 _MTL_INLINE double MTL::RenderPassDepthAttachmentDescriptor::clearDepth() const 446 { 447 return Object::sendMessage<double>(this, _MTL_PRIVATE_SEL(clearDepth)); 448 } 449 450 _MTL_INLINE void MTL::RenderPassDepthAttachmentDescriptor::setClearDepth(double clearDepth) 451 { 452 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setClearDepth_), clearDepth); 453 } 454 455 // property: depthResolveFilter 456 _MTL_INLINE MTL::MultisampleDepthResolveFilter MTL::RenderPassDepthAttachmentDescriptor::depthResolveFilter() const 457 { 458 return Object::sendMessage<MTL::MultisampleDepthResolveFilter>(this, _MTL_PRIVATE_SEL(depthResolveFilter)); 459 } 460 461 _MTL_INLINE void MTL::RenderPassDepthAttachmentDescriptor::setDepthResolveFilter(MTL::MultisampleDepthResolveFilter depthResolveFilter) 462 { 463 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthResolveFilter_), depthResolveFilter); 464 } 465 466 // static method: alloc 467 _MTL_INLINE MTL::RenderPassStencilAttachmentDescriptor* MTL::RenderPassStencilAttachmentDescriptor::alloc() 468 { 469 return NS::Object::alloc<MTL::RenderPassStencilAttachmentDescriptor>(_MTL_PRIVATE_CLS(MTLRenderPassStencilAttachmentDescriptor)); 470 } 471 472 // method: init 473 _MTL_INLINE MTL::RenderPassStencilAttachmentDescriptor* MTL::RenderPassStencilAttachmentDescriptor::init() 474 { 475 return NS::Object::init<MTL::RenderPassStencilAttachmentDescriptor>(); 476 } 477 478 // property: clearStencil 479 _MTL_INLINE uint32_t MTL::RenderPassStencilAttachmentDescriptor::clearStencil() const 480 { 481 return Object::sendMessage<uint32_t>(this, _MTL_PRIVATE_SEL(clearStencil)); 482 } 483 484 _MTL_INLINE void MTL::RenderPassStencilAttachmentDescriptor::setClearStencil(uint32_t clearStencil) 485 { 486 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setClearStencil_), clearStencil); 487 } 488 489 // property: stencilResolveFilter 490 _MTL_INLINE MTL::MultisampleStencilResolveFilter MTL::RenderPassStencilAttachmentDescriptor::stencilResolveFilter() const 491 { 492 return Object::sendMessage<MTL::MultisampleStencilResolveFilter>(this, _MTL_PRIVATE_SEL(stencilResolveFilter)); 493 } 494 495 _MTL_INLINE void MTL::RenderPassStencilAttachmentDescriptor::setStencilResolveFilter(MTL::MultisampleStencilResolveFilter stencilResolveFilter) 496 { 497 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStencilResolveFilter_), stencilResolveFilter); 498 } 499 500 // static method: alloc 501 _MTL_INLINE MTL::RenderPassColorAttachmentDescriptorArray* MTL::RenderPassColorAttachmentDescriptorArray::alloc() 502 { 503 return NS::Object::alloc<MTL::RenderPassColorAttachmentDescriptorArray>(_MTL_PRIVATE_CLS(MTLRenderPassColorAttachmentDescriptorArray)); 504 } 505 506 // method: init 507 _MTL_INLINE MTL::RenderPassColorAttachmentDescriptorArray* MTL::RenderPassColorAttachmentDescriptorArray::init() 508 { 509 return NS::Object::init<MTL::RenderPassColorAttachmentDescriptorArray>(); 510 } 511 512 // method: objectAtIndexedSubscript: 513 _MTL_INLINE MTL::RenderPassColorAttachmentDescriptor* MTL::RenderPassColorAttachmentDescriptorArray::object(NS::UInteger attachmentIndex) 514 { 515 return Object::sendMessage<MTL::RenderPassColorAttachmentDescriptor*>(this, _MTL_PRIVATE_SEL(objectAtIndexedSubscript_), attachmentIndex); 516 } 517 518 // method: setObject:atIndexedSubscript: 519 _MTL_INLINE void MTL::RenderPassColorAttachmentDescriptorArray::setObject(const MTL::RenderPassColorAttachmentDescriptor* attachment, NS::UInteger attachmentIndex) 520 { 521 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setObject_atIndexedSubscript_), attachment, attachmentIndex); 522 } 523 524 // static method: alloc 525 _MTL_INLINE MTL::RenderPassSampleBufferAttachmentDescriptor* MTL::RenderPassSampleBufferAttachmentDescriptor::alloc() 526 { 527 return NS::Object::alloc<MTL::RenderPassSampleBufferAttachmentDescriptor>(_MTL_PRIVATE_CLS(MTLRenderPassSampleBufferAttachmentDescriptor)); 528 } 529 530 // method: init 531 _MTL_INLINE MTL::RenderPassSampleBufferAttachmentDescriptor* MTL::RenderPassSampleBufferAttachmentDescriptor::init() 532 { 533 return NS::Object::init<MTL::RenderPassSampleBufferAttachmentDescriptor>(); 534 } 535 536 // property: sampleBuffer 537 _MTL_INLINE MTL::CounterSampleBuffer* MTL::RenderPassSampleBufferAttachmentDescriptor::sampleBuffer() const 538 { 539 return Object::sendMessage<MTL::CounterSampleBuffer*>(this, _MTL_PRIVATE_SEL(sampleBuffer)); 540 } 541 542 _MTL_INLINE void MTL::RenderPassSampleBufferAttachmentDescriptor::setSampleBuffer(const MTL::CounterSampleBuffer* sampleBuffer) 543 { 544 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSampleBuffer_), sampleBuffer); 545 } 546 547 // property: startOfVertexSampleIndex 548 _MTL_INLINE NS::UInteger MTL::RenderPassSampleBufferAttachmentDescriptor::startOfVertexSampleIndex() const 549 { 550 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(startOfVertexSampleIndex)); 551 } 552 553 _MTL_INLINE void MTL::RenderPassSampleBufferAttachmentDescriptor::setStartOfVertexSampleIndex(NS::UInteger startOfVertexSampleIndex) 554 { 555 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStartOfVertexSampleIndex_), startOfVertexSampleIndex); 556 } 557 558 // property: endOfVertexSampleIndex 559 _MTL_INLINE NS::UInteger MTL::RenderPassSampleBufferAttachmentDescriptor::endOfVertexSampleIndex() const 560 { 561 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(endOfVertexSampleIndex)); 562 } 563 564 _MTL_INLINE void MTL::RenderPassSampleBufferAttachmentDescriptor::setEndOfVertexSampleIndex(NS::UInteger endOfVertexSampleIndex) 565 { 566 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setEndOfVertexSampleIndex_), endOfVertexSampleIndex); 567 } 568 569 // property: startOfFragmentSampleIndex 570 _MTL_INLINE NS::UInteger MTL::RenderPassSampleBufferAttachmentDescriptor::startOfFragmentSampleIndex() const 571 { 572 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(startOfFragmentSampleIndex)); 573 } 574 575 _MTL_INLINE void MTL::RenderPassSampleBufferAttachmentDescriptor::setStartOfFragmentSampleIndex(NS::UInteger startOfFragmentSampleIndex) 576 { 577 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStartOfFragmentSampleIndex_), startOfFragmentSampleIndex); 578 } 579 580 // property: endOfFragmentSampleIndex 581 _MTL_INLINE NS::UInteger MTL::RenderPassSampleBufferAttachmentDescriptor::endOfFragmentSampleIndex() const 582 { 583 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(endOfFragmentSampleIndex)); 584 } 585 586 _MTL_INLINE void MTL::RenderPassSampleBufferAttachmentDescriptor::setEndOfFragmentSampleIndex(NS::UInteger endOfFragmentSampleIndex) 587 { 588 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setEndOfFragmentSampleIndex_), endOfFragmentSampleIndex); 589 } 590 591 // static method: alloc 592 _MTL_INLINE MTL::RenderPassSampleBufferAttachmentDescriptorArray* MTL::RenderPassSampleBufferAttachmentDescriptorArray::alloc() 593 { 594 return NS::Object::alloc<MTL::RenderPassSampleBufferAttachmentDescriptorArray>(_MTL_PRIVATE_CLS(MTLRenderPassSampleBufferAttachmentDescriptorArray)); 595 } 596 597 // method: init 598 _MTL_INLINE MTL::RenderPassSampleBufferAttachmentDescriptorArray* MTL::RenderPassSampleBufferAttachmentDescriptorArray::init() 599 { 600 return NS::Object::init<MTL::RenderPassSampleBufferAttachmentDescriptorArray>(); 601 } 602 603 // method: objectAtIndexedSubscript: 604 _MTL_INLINE MTL::RenderPassSampleBufferAttachmentDescriptor* MTL::RenderPassSampleBufferAttachmentDescriptorArray::object(NS::UInteger attachmentIndex) 605 { 606 return Object::sendMessage<MTL::RenderPassSampleBufferAttachmentDescriptor*>(this, _MTL_PRIVATE_SEL(objectAtIndexedSubscript_), attachmentIndex); 607 } 608 609 // method: setObject:atIndexedSubscript: 610 _MTL_INLINE void MTL::RenderPassSampleBufferAttachmentDescriptorArray::setObject(const MTL::RenderPassSampleBufferAttachmentDescriptor* attachment, NS::UInteger attachmentIndex) 611 { 612 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setObject_atIndexedSubscript_), attachment, attachmentIndex); 613 } 614 615 // static method: alloc 616 _MTL_INLINE MTL::RenderPassDescriptor* MTL::RenderPassDescriptor::alloc() 617 { 618 return NS::Object::alloc<MTL::RenderPassDescriptor>(_MTL_PRIVATE_CLS(MTLRenderPassDescriptor)); 619 } 620 621 // method: init 622 _MTL_INLINE MTL::RenderPassDescriptor* MTL::RenderPassDescriptor::init() 623 { 624 return NS::Object::init<MTL::RenderPassDescriptor>(); 625 } 626 627 // static method: renderPassDescriptor 628 _MTL_INLINE MTL::RenderPassDescriptor* MTL::RenderPassDescriptor::renderPassDescriptor() 629 { 630 return Object::sendMessage<MTL::RenderPassDescriptor*>(_MTL_PRIVATE_CLS(MTLRenderPassDescriptor), _MTL_PRIVATE_SEL(renderPassDescriptor)); 631 } 632 633 // property: colorAttachments 634 _MTL_INLINE MTL::RenderPassColorAttachmentDescriptorArray* MTL::RenderPassDescriptor::colorAttachments() const 635 { 636 return Object::sendMessage<MTL::RenderPassColorAttachmentDescriptorArray*>(this, _MTL_PRIVATE_SEL(colorAttachments)); 637 } 638 639 // property: depthAttachment 640 _MTL_INLINE MTL::RenderPassDepthAttachmentDescriptor* MTL::RenderPassDescriptor::depthAttachment() const 641 { 642 return Object::sendMessage<MTL::RenderPassDepthAttachmentDescriptor*>(this, _MTL_PRIVATE_SEL(depthAttachment)); 643 } 644 645 _MTL_INLINE void MTL::RenderPassDescriptor::setDepthAttachment(const MTL::RenderPassDepthAttachmentDescriptor* depthAttachment) 646 { 647 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthAttachment_), depthAttachment); 648 } 649 650 // property: stencilAttachment 651 _MTL_INLINE MTL::RenderPassStencilAttachmentDescriptor* MTL::RenderPassDescriptor::stencilAttachment() const 652 { 653 return Object::sendMessage<MTL::RenderPassStencilAttachmentDescriptor*>(this, _MTL_PRIVATE_SEL(stencilAttachment)); 654 } 655 656 _MTL_INLINE void MTL::RenderPassDescriptor::setStencilAttachment(const MTL::RenderPassStencilAttachmentDescriptor* stencilAttachment) 657 { 658 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStencilAttachment_), stencilAttachment); 659 } 660 661 // property: visibilityResultBuffer 662 _MTL_INLINE MTL::Buffer* MTL::RenderPassDescriptor::visibilityResultBuffer() const 663 { 664 return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(visibilityResultBuffer)); 665 } 666 667 _MTL_INLINE void MTL::RenderPassDescriptor::setVisibilityResultBuffer(const MTL::Buffer* visibilityResultBuffer) 668 { 669 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVisibilityResultBuffer_), visibilityResultBuffer); 670 } 671 672 // property: renderTargetArrayLength 673 _MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::renderTargetArrayLength() const 674 { 675 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(renderTargetArrayLength)); 676 } 677 678 _MTL_INLINE void MTL::RenderPassDescriptor::setRenderTargetArrayLength(NS::UInteger renderTargetArrayLength) 679 { 680 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRenderTargetArrayLength_), renderTargetArrayLength); 681 } 682 683 // property: imageblockSampleLength 684 _MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::imageblockSampleLength() const 685 { 686 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(imageblockSampleLength)); 687 } 688 689 _MTL_INLINE void MTL::RenderPassDescriptor::setImageblockSampleLength(NS::UInteger imageblockSampleLength) 690 { 691 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setImageblockSampleLength_), imageblockSampleLength); 692 } 693 694 // property: threadgroupMemoryLength 695 _MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::threadgroupMemoryLength() const 696 { 697 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(threadgroupMemoryLength)); 698 } 699 700 _MTL_INLINE void MTL::RenderPassDescriptor::setThreadgroupMemoryLength(NS::UInteger threadgroupMemoryLength) 701 { 702 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setThreadgroupMemoryLength_), threadgroupMemoryLength); 703 } 704 705 // property: tileWidth 706 _MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::tileWidth() const 707 { 708 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(tileWidth)); 709 } 710 711 _MTL_INLINE void MTL::RenderPassDescriptor::setTileWidth(NS::UInteger tileWidth) 712 { 713 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTileWidth_), tileWidth); 714 } 715 716 // property: tileHeight 717 _MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::tileHeight() const 718 { 719 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(tileHeight)); 720 } 721 722 _MTL_INLINE void MTL::RenderPassDescriptor::setTileHeight(NS::UInteger tileHeight) 723 { 724 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTileHeight_), tileHeight); 725 } 726 727 // property: defaultRasterSampleCount 728 _MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::defaultRasterSampleCount() const 729 { 730 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(defaultRasterSampleCount)); 731 } 732 733 _MTL_INLINE void MTL::RenderPassDescriptor::setDefaultRasterSampleCount(NS::UInteger defaultRasterSampleCount) 734 { 735 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDefaultRasterSampleCount_), defaultRasterSampleCount); 736 } 737 738 // property: renderTargetWidth 739 _MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::renderTargetWidth() const 740 { 741 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(renderTargetWidth)); 742 } 743 744 _MTL_INLINE void MTL::RenderPassDescriptor::setRenderTargetWidth(NS::UInteger renderTargetWidth) 745 { 746 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRenderTargetWidth_), renderTargetWidth); 747 } 748 749 // property: renderTargetHeight 750 _MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::renderTargetHeight() const 751 { 752 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(renderTargetHeight)); 753 } 754 755 _MTL_INLINE void MTL::RenderPassDescriptor::setRenderTargetHeight(NS::UInteger renderTargetHeight) 756 { 757 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRenderTargetHeight_), renderTargetHeight); 758 } 759 760 // method: setSamplePositions:count: 761 _MTL_INLINE void MTL::RenderPassDescriptor::setSamplePositions(const MTL::SamplePosition* positions, NS::UInteger count) 762 { 763 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSamplePositions_count_), positions, count); 764 } 765 766 // method: getSamplePositions:count: 767 _MTL_INLINE NS::UInteger MTL::RenderPassDescriptor::getSamplePositions(MTL::SamplePosition* positions, NS::UInteger count) 768 { 769 return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(getSamplePositions_count_), positions, count); 770 } 771 772 // property: rasterizationRateMap 773 _MTL_INLINE MTL::RasterizationRateMap* MTL::RenderPassDescriptor::rasterizationRateMap() const 774 { 775 return Object::sendMessage<MTL::RasterizationRateMap*>(this, _MTL_PRIVATE_SEL(rasterizationRateMap)); 776 } 777 778 _MTL_INLINE void MTL::RenderPassDescriptor::setRasterizationRateMap(const MTL::RasterizationRateMap* rasterizationRateMap) 779 { 780 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRasterizationRateMap_), rasterizationRateMap); 781 } 782 783 // property: sampleBufferAttachments 784 _MTL_INLINE MTL::RenderPassSampleBufferAttachmentDescriptorArray* MTL::RenderPassDescriptor::sampleBufferAttachments() const 785 { 786 return Object::sendMessage<MTL::RenderPassSampleBufferAttachmentDescriptorArray*>(this, _MTL_PRIVATE_SEL(sampleBufferAttachments)); 787 }