MTLCaptureScope.hpp
1 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 2 // 3 // Metal/MTLCaptureScope.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 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 24 25 #include "MTLDefines.hpp" 26 #include "MTLPrivate.hpp" 27 28 #include "../Foundation/NSObject.hpp" 29 #include "../Foundation/NSString.hpp" 30 31 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 32 33 namespace MTL 34 { 35 class CaptureScope : public NS::Referencing<CaptureScope> 36 { 37 public: 38 class Device* device() const; 39 40 NS::String* label() const; 41 void setLabel(const NS::String* pLabel); 42 43 class CommandQueue* commandQueue() const; 44 45 void beginScope(); 46 void endScope(); 47 }; 48 } 49 50 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 51 52 _MTL_INLINE MTL::Device* MTL::CaptureScope::device() const 53 { 54 return Object::sendMessage<Device*>(this, _MTL_PRIVATE_SEL(device)); 55 } 56 57 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 58 59 _MTL_INLINE NS::String* MTL::CaptureScope::label() const 60 { 61 return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label)); 62 } 63 64 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 65 66 _MTL_INLINE void MTL::CaptureScope::setLabel(const NS::String* pLabel) 67 { 68 Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), pLabel); 69 } 70 71 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 72 73 _MTL_INLINE MTL::CommandQueue* MTL::CaptureScope::commandQueue() const 74 { 75 return Object::sendMessage<CommandQueue*>(this, _MTL_PRIVATE_SEL(commandQueue)); 76 } 77 78 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 79 80 _MTL_INLINE void MTL::CaptureScope::beginScope() 81 { 82 return Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(beginScope)); 83 } 84 85 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 86 87 _MTL_INLINE void MTL::CaptureScope::endScope() 88 { 89 return Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(endScope)); 90 } 91 92 //-------------------------------------------------------------------------------------------------------------------------------------------------------------