/ include / Metal / MTLCaptureScope.hpp
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  //-------------------------------------------------------------------------------------------------------------------------------------------------------------