xref: /aosp_15_r20/external/vulkan-validation-layers/layers/generated/thread_safety.h (revision b7893ccf7851cd6a48cc5a1e965257d8a5cdcc70)
1*b7893ccfSSadaf Ebrahimi 
2*b7893ccfSSadaf Ebrahimi // This file is ***GENERATED***.  Do Not Edit.
3*b7893ccfSSadaf Ebrahimi // See thread_safety_generator.py for modifications.
4*b7893ccfSSadaf Ebrahimi 
5*b7893ccfSSadaf Ebrahimi /* Copyright (c) 2015-2019 The Khronos Group Inc.
6*b7893ccfSSadaf Ebrahimi  * Copyright (c) 2015-2019 Valve Corporation
7*b7893ccfSSadaf Ebrahimi  * Copyright (c) 2015-2019 LunarG, Inc.
8*b7893ccfSSadaf Ebrahimi  * Copyright (c) 2015-2019 Google Inc.
9*b7893ccfSSadaf Ebrahimi  *
10*b7893ccfSSadaf Ebrahimi  * Licensed under the Apache License, Version 2.0 (the "License");
11*b7893ccfSSadaf Ebrahimi  * you may not use this file except in compliance with the License.
12*b7893ccfSSadaf Ebrahimi  * You may obtain a copy of the License at
13*b7893ccfSSadaf Ebrahimi  *
14*b7893ccfSSadaf Ebrahimi  *     http://www.apache.org/licenses/LICENSE-2.0
15*b7893ccfSSadaf Ebrahimi  *
16*b7893ccfSSadaf Ebrahimi  * Unless required by applicable law or agreed to in writing, software
17*b7893ccfSSadaf Ebrahimi  * distributed under the License is distributed on an "AS IS" BASIS,
18*b7893ccfSSadaf Ebrahimi  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19*b7893ccfSSadaf Ebrahimi  * See the License for the specific language governing permissions and
20*b7893ccfSSadaf Ebrahimi  * limitations under the License.
21*b7893ccfSSadaf Ebrahimi  *
22*b7893ccfSSadaf Ebrahimi  * Author: Mark Lobodzinski <[email protected]>
23*b7893ccfSSadaf Ebrahimi  */
24*b7893ccfSSadaf Ebrahimi 
25*b7893ccfSSadaf Ebrahimi #pragma once
26*b7893ccfSSadaf Ebrahimi 
27*b7893ccfSSadaf Ebrahimi #include <chrono>
28*b7893ccfSSadaf Ebrahimi #include <thread>
29*b7893ccfSSadaf Ebrahimi #include <mutex>
30*b7893ccfSSadaf Ebrahimi #include <vector>
31*b7893ccfSSadaf Ebrahimi #include <unordered_set>
32*b7893ccfSSadaf Ebrahimi #include <string>
33*b7893ccfSSadaf Ebrahimi 
34*b7893ccfSSadaf Ebrahimi VK_DEFINE_NON_DISPATCHABLE_HANDLE(DISTINCT_NONDISPATCHABLE_PHONY_HANDLE)
35*b7893ccfSSadaf Ebrahimi // The following line must match the vulkan_core.h condition guarding VK_DEFINE_NON_DISPATCHABLE_HANDLE
36*b7893ccfSSadaf Ebrahimi #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__)) || defined(_M_X64) || defined(__ia64) ||     defined(_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
37*b7893ccfSSadaf Ebrahimi // If pointers are 64-bit, then there can be separate counters for each
38*b7893ccfSSadaf Ebrahimi // NONDISPATCHABLE_HANDLE type.  Otherwise they are all typedef uint64_t.
39*b7893ccfSSadaf Ebrahimi #define DISTINCT_NONDISPATCHABLE_HANDLES
40*b7893ccfSSadaf Ebrahimi // Make sure we catch any disagreement between us and the vulkan definition
41*b7893ccfSSadaf Ebrahimi static_assert(std::is_pointer<DISTINCT_NONDISPATCHABLE_PHONY_HANDLE>::value,
42*b7893ccfSSadaf Ebrahimi               "Mismatched non-dispatchable handle handle, expected pointer type.");
43*b7893ccfSSadaf Ebrahimi #else
44*b7893ccfSSadaf Ebrahimi // Make sure we catch any disagreement between us and the vulkan definition
45*b7893ccfSSadaf Ebrahimi static_assert(std::is_same<uint64_t, DISTINCT_NONDISPATCHABLE_PHONY_HANDLE>::value,
46*b7893ccfSSadaf Ebrahimi               "Mismatched non-dispatchable handle handle, expected uint64_t.");
47*b7893ccfSSadaf Ebrahimi #endif
48*b7893ccfSSadaf Ebrahimi 
49*b7893ccfSSadaf Ebrahimi // Suppress unused warning on Linux
50*b7893ccfSSadaf Ebrahimi #if defined(__GNUC__)
51*b7893ccfSSadaf Ebrahimi #define DECORATE_UNUSED __attribute__((unused))
52*b7893ccfSSadaf Ebrahimi #else
53*b7893ccfSSadaf Ebrahimi #define DECORATE_UNUSED
54*b7893ccfSSadaf Ebrahimi #endif
55*b7893ccfSSadaf Ebrahimi 
56*b7893ccfSSadaf Ebrahimi // clang-format off
57*b7893ccfSSadaf Ebrahimi static const char DECORATE_UNUSED *kVUID_Threading_Info = "UNASSIGNED-Threading-Info";
58*b7893ccfSSadaf Ebrahimi static const char DECORATE_UNUSED *kVUID_Threading_MultipleThreads = "UNASSIGNED-Threading-MultipleThreads";
59*b7893ccfSSadaf Ebrahimi static const char DECORATE_UNUSED *kVUID_Threading_SingleThreadReuse = "UNASSIGNED-Threading-SingleThreadReuse";
60*b7893ccfSSadaf Ebrahimi // clang-format on
61*b7893ccfSSadaf Ebrahimi 
62*b7893ccfSSadaf Ebrahimi #undef DECORATE_UNUSED
63*b7893ccfSSadaf Ebrahimi 
64*b7893ccfSSadaf Ebrahimi struct object_use_data {
65*b7893ccfSSadaf Ebrahimi     loader_platform_thread_id thread;
66*b7893ccfSSadaf Ebrahimi     int reader_count;
67*b7893ccfSSadaf Ebrahimi     int writer_count;
68*b7893ccfSSadaf Ebrahimi };
69*b7893ccfSSadaf Ebrahimi 
70*b7893ccfSSadaf Ebrahimi // This is a wrapper around unordered_map that optimizes for the common case
71*b7893ccfSSadaf Ebrahimi // of only containing a single element. The "first" element's use is stored
72*b7893ccfSSadaf Ebrahimi // inline in the class and doesn't require hashing or memory (de)allocation.
73*b7893ccfSSadaf Ebrahimi // TODO: Consider generalizing this from one element to N elements (where N
74*b7893ccfSSadaf Ebrahimi // is a template parameter).
75*b7893ccfSSadaf Ebrahimi template <typename Key, typename T>
76*b7893ccfSSadaf Ebrahimi class small_unordered_map {
77*b7893ccfSSadaf Ebrahimi 
78*b7893ccfSSadaf Ebrahimi     bool first_data_allocated;
79*b7893ccfSSadaf Ebrahimi     Key first_data_key;
80*b7893ccfSSadaf Ebrahimi     T first_data;
81*b7893ccfSSadaf Ebrahimi 
82*b7893ccfSSadaf Ebrahimi     std::unordered_map<Key, T> uses;
83*b7893ccfSSadaf Ebrahimi 
84*b7893ccfSSadaf Ebrahimi public:
small_unordered_map()85*b7893ccfSSadaf Ebrahimi     small_unordered_map() : first_data_allocated(false) {}
86*b7893ccfSSadaf Ebrahimi 
contains(const Key & object)87*b7893ccfSSadaf Ebrahimi     bool contains(const Key& object) const {
88*b7893ccfSSadaf Ebrahimi         if (first_data_allocated && object == first_data_key) {
89*b7893ccfSSadaf Ebrahimi             return true;
90*b7893ccfSSadaf Ebrahimi         // check size() first to avoid hashing object unnecessarily.
91*b7893ccfSSadaf Ebrahimi         } else if (uses.size() == 0) {
92*b7893ccfSSadaf Ebrahimi             return false;
93*b7893ccfSSadaf Ebrahimi         } else {
94*b7893ccfSSadaf Ebrahimi             return uses.find(object) != uses.end();
95*b7893ccfSSadaf Ebrahimi         }
96*b7893ccfSSadaf Ebrahimi     }
97*b7893ccfSSadaf Ebrahimi 
98*b7893ccfSSadaf Ebrahimi     T& operator[](const Key& object) {
99*b7893ccfSSadaf Ebrahimi         if (first_data_allocated && first_data_key == object) {
100*b7893ccfSSadaf Ebrahimi             return first_data;
101*b7893ccfSSadaf Ebrahimi         } else if (!first_data_allocated && uses.size() == 0) {
102*b7893ccfSSadaf Ebrahimi             first_data_allocated = true;
103*b7893ccfSSadaf Ebrahimi             first_data_key = object;
104*b7893ccfSSadaf Ebrahimi             return first_data;
105*b7893ccfSSadaf Ebrahimi         } else {
106*b7893ccfSSadaf Ebrahimi             return uses[object];
107*b7893ccfSSadaf Ebrahimi         }
108*b7893ccfSSadaf Ebrahimi     }
109*b7893ccfSSadaf Ebrahimi 
erase(const Key & object)110*b7893ccfSSadaf Ebrahimi     typename std::unordered_map<Key, T>::size_type erase(const Key& object) {
111*b7893ccfSSadaf Ebrahimi         if (first_data_allocated && first_data_key == object) {
112*b7893ccfSSadaf Ebrahimi             first_data_allocated = false;
113*b7893ccfSSadaf Ebrahimi             return 1;
114*b7893ccfSSadaf Ebrahimi         } else {
115*b7893ccfSSadaf Ebrahimi             return uses.erase(object);
116*b7893ccfSSadaf Ebrahimi         }
117*b7893ccfSSadaf Ebrahimi     }
118*b7893ccfSSadaf Ebrahimi };
119*b7893ccfSSadaf Ebrahimi 
120*b7893ccfSSadaf Ebrahimi #define THREAD_SAFETY_BUCKETS_LOG2 6
121*b7893ccfSSadaf Ebrahimi #define THREAD_SAFETY_BUCKETS (1 << THREAD_SAFETY_BUCKETS_LOG2)
122*b7893ccfSSadaf Ebrahimi 
ThreadSafetyHashObject(T object)123*b7893ccfSSadaf Ebrahimi template <typename T> inline uint32_t ThreadSafetyHashObject(T object)
124*b7893ccfSSadaf Ebrahimi {
125*b7893ccfSSadaf Ebrahimi     uint64_t u64 = (uint64_t)(uintptr_t)object;
126*b7893ccfSSadaf Ebrahimi     uint32_t hash = (uint32_t)(u64 >> 32) + (uint32_t)u64;
127*b7893ccfSSadaf Ebrahimi     hash ^= (hash >> THREAD_SAFETY_BUCKETS_LOG2) ^ (hash >> (2*THREAD_SAFETY_BUCKETS_LOG2));
128*b7893ccfSSadaf Ebrahimi     hash &= (THREAD_SAFETY_BUCKETS-1);
129*b7893ccfSSadaf Ebrahimi     return hash;
130*b7893ccfSSadaf Ebrahimi }
131*b7893ccfSSadaf Ebrahimi 
132*b7893ccfSSadaf Ebrahimi template <typename T>
133*b7893ccfSSadaf Ebrahimi class counter {
134*b7893ccfSSadaf Ebrahimi public:
135*b7893ccfSSadaf Ebrahimi     const char *typeName;
136*b7893ccfSSadaf Ebrahimi     VkDebugReportObjectTypeEXT objectType;
137*b7893ccfSSadaf Ebrahimi     debug_report_data **report_data;
138*b7893ccfSSadaf Ebrahimi 
139*b7893ccfSSadaf Ebrahimi     // Per-bucket locking, to reduce contention.
140*b7893ccfSSadaf Ebrahimi     struct CounterBucket {
141*b7893ccfSSadaf Ebrahimi         small_unordered_map<T, object_use_data> uses;
142*b7893ccfSSadaf Ebrahimi         std::mutex counter_lock;
143*b7893ccfSSadaf Ebrahimi     };
144*b7893ccfSSadaf Ebrahimi 
145*b7893ccfSSadaf Ebrahimi     CounterBucket buckets[THREAD_SAFETY_BUCKETS];
GetBucket(T object)146*b7893ccfSSadaf Ebrahimi     CounterBucket &GetBucket(T object)
147*b7893ccfSSadaf Ebrahimi     {
148*b7893ccfSSadaf Ebrahimi         return buckets[ThreadSafetyHashObject(object)];
149*b7893ccfSSadaf Ebrahimi     }
150*b7893ccfSSadaf Ebrahimi 
StartWrite(T object)151*b7893ccfSSadaf Ebrahimi     void StartWrite(T object) {
152*b7893ccfSSadaf Ebrahimi         if (object == VK_NULL_HANDLE) {
153*b7893ccfSSadaf Ebrahimi             return;
154*b7893ccfSSadaf Ebrahimi         }
155*b7893ccfSSadaf Ebrahimi         auto &bucket = GetBucket(object);
156*b7893ccfSSadaf Ebrahimi         bool skip = false;
157*b7893ccfSSadaf Ebrahimi         loader_platform_thread_id tid = loader_platform_get_thread_id();
158*b7893ccfSSadaf Ebrahimi         std::unique_lock<std::mutex> lock(bucket.counter_lock);
159*b7893ccfSSadaf Ebrahimi         if (!bucket.uses.contains(object)) {
160*b7893ccfSSadaf Ebrahimi             // There is no current use of the object.  Record writer thread.
161*b7893ccfSSadaf Ebrahimi             struct object_use_data *use_data = &bucket.uses[object];
162*b7893ccfSSadaf Ebrahimi             use_data->reader_count = 0;
163*b7893ccfSSadaf Ebrahimi             use_data->writer_count = 1;
164*b7893ccfSSadaf Ebrahimi             use_data->thread = tid;
165*b7893ccfSSadaf Ebrahimi         } else {
166*b7893ccfSSadaf Ebrahimi             struct object_use_data *use_data = &bucket.uses[object];
167*b7893ccfSSadaf Ebrahimi             if (use_data->reader_count == 0) {
168*b7893ccfSSadaf Ebrahimi                 // There are no readers.  Two writers just collided.
169*b7893ccfSSadaf Ebrahimi                 if (use_data->thread != tid) {
170*b7893ccfSSadaf Ebrahimi                     skip |= log_msg(*report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, objectType, (uint64_t)(object),
171*b7893ccfSSadaf Ebrahimi                         kVUID_Threading_MultipleThreads,
172*b7893ccfSSadaf Ebrahimi                         "THREADING ERROR : object of type %s is simultaneously used in "
173*b7893ccfSSadaf Ebrahimi                         "thread 0x%" PRIx64 " and thread 0x%" PRIx64,
174*b7893ccfSSadaf Ebrahimi                         typeName, (uint64_t)use_data->thread, (uint64_t)tid);
175*b7893ccfSSadaf Ebrahimi                     if (skip) {
176*b7893ccfSSadaf Ebrahimi                         WaitForObjectIdle(bucket, object, lock);
177*b7893ccfSSadaf Ebrahimi                         // There is now no current use of the object.  Record writer thread.
178*b7893ccfSSadaf Ebrahimi                         struct object_use_data *new_use_data = &bucket.uses[object];
179*b7893ccfSSadaf Ebrahimi                         new_use_data->thread = tid;
180*b7893ccfSSadaf Ebrahimi                         new_use_data->reader_count = 0;
181*b7893ccfSSadaf Ebrahimi                         new_use_data->writer_count = 1;
182*b7893ccfSSadaf Ebrahimi                     } else {
183*b7893ccfSSadaf Ebrahimi                         // Continue with an unsafe use of the object.
184*b7893ccfSSadaf Ebrahimi                         use_data->thread = tid;
185*b7893ccfSSadaf Ebrahimi                         use_data->writer_count += 1;
186*b7893ccfSSadaf Ebrahimi                     }
187*b7893ccfSSadaf Ebrahimi                 } else {
188*b7893ccfSSadaf Ebrahimi                     // This is either safe multiple use in one call, or recursive use.
189*b7893ccfSSadaf Ebrahimi                     // There is no way to make recursion safe.  Just forge ahead.
190*b7893ccfSSadaf Ebrahimi                     use_data->writer_count += 1;
191*b7893ccfSSadaf Ebrahimi                 }
192*b7893ccfSSadaf Ebrahimi             } else {
193*b7893ccfSSadaf Ebrahimi                 // There are readers.  This writer collided with them.
194*b7893ccfSSadaf Ebrahimi                 if (use_data->thread != tid) {
195*b7893ccfSSadaf Ebrahimi                     skip |= log_msg(*report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, objectType, (uint64_t)(object),
196*b7893ccfSSadaf Ebrahimi                         kVUID_Threading_MultipleThreads,
197*b7893ccfSSadaf Ebrahimi                         "THREADING ERROR : object of type %s is simultaneously used in "
198*b7893ccfSSadaf Ebrahimi                         "thread 0x%" PRIx64 " and thread 0x%" PRIx64,
199*b7893ccfSSadaf Ebrahimi                         typeName, (uint64_t)use_data->thread, (uint64_t)tid);
200*b7893ccfSSadaf Ebrahimi                     if (skip) {
201*b7893ccfSSadaf Ebrahimi                         WaitForObjectIdle(bucket, object, lock);
202*b7893ccfSSadaf Ebrahimi                         // There is now no current use of the object.  Record writer thread.
203*b7893ccfSSadaf Ebrahimi                         struct object_use_data *new_use_data = &bucket.uses[object];
204*b7893ccfSSadaf Ebrahimi                         new_use_data->thread = tid;
205*b7893ccfSSadaf Ebrahimi                         new_use_data->reader_count = 0;
206*b7893ccfSSadaf Ebrahimi                         new_use_data->writer_count = 1;
207*b7893ccfSSadaf Ebrahimi                     } else {
208*b7893ccfSSadaf Ebrahimi                         // Continue with an unsafe use of the object.
209*b7893ccfSSadaf Ebrahimi                         use_data->thread = tid;
210*b7893ccfSSadaf Ebrahimi                         use_data->writer_count += 1;
211*b7893ccfSSadaf Ebrahimi                     }
212*b7893ccfSSadaf Ebrahimi                 } else {
213*b7893ccfSSadaf Ebrahimi                     // This is either safe multiple use in one call, or recursive use.
214*b7893ccfSSadaf Ebrahimi                     // There is no way to make recursion safe.  Just forge ahead.
215*b7893ccfSSadaf Ebrahimi                     use_data->writer_count += 1;
216*b7893ccfSSadaf Ebrahimi                 }
217*b7893ccfSSadaf Ebrahimi             }
218*b7893ccfSSadaf Ebrahimi         }
219*b7893ccfSSadaf Ebrahimi     }
220*b7893ccfSSadaf Ebrahimi 
FinishWrite(T object)221*b7893ccfSSadaf Ebrahimi     void FinishWrite(T object) {
222*b7893ccfSSadaf Ebrahimi         if (object == VK_NULL_HANDLE) {
223*b7893ccfSSadaf Ebrahimi             return;
224*b7893ccfSSadaf Ebrahimi         }
225*b7893ccfSSadaf Ebrahimi         auto &bucket = GetBucket(object);
226*b7893ccfSSadaf Ebrahimi         // Object is no longer in use
227*b7893ccfSSadaf Ebrahimi         std::unique_lock<std::mutex> lock(bucket.counter_lock);
228*b7893ccfSSadaf Ebrahimi         struct object_use_data *use_data = &bucket.uses[object];
229*b7893ccfSSadaf Ebrahimi         use_data->writer_count -= 1;
230*b7893ccfSSadaf Ebrahimi         if ((use_data->reader_count == 0) && (use_data->writer_count == 0)) {
231*b7893ccfSSadaf Ebrahimi             bucket.uses.erase(object);
232*b7893ccfSSadaf Ebrahimi         }
233*b7893ccfSSadaf Ebrahimi     }
234*b7893ccfSSadaf Ebrahimi 
StartRead(T object)235*b7893ccfSSadaf Ebrahimi     void StartRead(T object) {
236*b7893ccfSSadaf Ebrahimi         if (object == VK_NULL_HANDLE) {
237*b7893ccfSSadaf Ebrahimi             return;
238*b7893ccfSSadaf Ebrahimi         }
239*b7893ccfSSadaf Ebrahimi         auto &bucket = GetBucket(object);
240*b7893ccfSSadaf Ebrahimi         bool skip = false;
241*b7893ccfSSadaf Ebrahimi         loader_platform_thread_id tid = loader_platform_get_thread_id();
242*b7893ccfSSadaf Ebrahimi         std::unique_lock<std::mutex> lock(bucket.counter_lock);
243*b7893ccfSSadaf Ebrahimi         if (!bucket.uses.contains(object)) {
244*b7893ccfSSadaf Ebrahimi             // There is no current use of the object.  Record reader count
245*b7893ccfSSadaf Ebrahimi             struct object_use_data *use_data = &bucket.uses[object];
246*b7893ccfSSadaf Ebrahimi             use_data->reader_count = 1;
247*b7893ccfSSadaf Ebrahimi             use_data->writer_count = 0;
248*b7893ccfSSadaf Ebrahimi             use_data->thread = tid;
249*b7893ccfSSadaf Ebrahimi         } else if (bucket.uses[object].writer_count > 0 && bucket.uses[object].thread != tid) {
250*b7893ccfSSadaf Ebrahimi             // There is a writer of the object.
251*b7893ccfSSadaf Ebrahimi             skip |= log_msg(*report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, objectType, (uint64_t)(object),
252*b7893ccfSSadaf Ebrahimi                 kVUID_Threading_MultipleThreads,
253*b7893ccfSSadaf Ebrahimi                 "THREADING ERROR : object of type %s is simultaneously used in "
254*b7893ccfSSadaf Ebrahimi                 "thread 0x%" PRIx64 " and thread 0x%" PRIx64,
255*b7893ccfSSadaf Ebrahimi                 typeName, (uint64_t)bucket.uses[object].thread, (uint64_t)tid);
256*b7893ccfSSadaf Ebrahimi             if (skip) {
257*b7893ccfSSadaf Ebrahimi                 WaitForObjectIdle(bucket, object, lock);
258*b7893ccfSSadaf Ebrahimi                 // There is no current use of the object.  Record reader count
259*b7893ccfSSadaf Ebrahimi                 struct object_use_data *use_data = &bucket.uses[object];
260*b7893ccfSSadaf Ebrahimi                 use_data->reader_count = 1;
261*b7893ccfSSadaf Ebrahimi                 use_data->writer_count = 0;
262*b7893ccfSSadaf Ebrahimi                 use_data->thread = tid;
263*b7893ccfSSadaf Ebrahimi             } else {
264*b7893ccfSSadaf Ebrahimi                 bucket.uses[object].reader_count += 1;
265*b7893ccfSSadaf Ebrahimi             }
266*b7893ccfSSadaf Ebrahimi         } else {
267*b7893ccfSSadaf Ebrahimi             // There are other readers of the object.  Increase reader count
268*b7893ccfSSadaf Ebrahimi             bucket.uses[object].reader_count += 1;
269*b7893ccfSSadaf Ebrahimi         }
270*b7893ccfSSadaf Ebrahimi     }
FinishRead(T object)271*b7893ccfSSadaf Ebrahimi     void FinishRead(T object) {
272*b7893ccfSSadaf Ebrahimi         if (object == VK_NULL_HANDLE) {
273*b7893ccfSSadaf Ebrahimi             return;
274*b7893ccfSSadaf Ebrahimi         }
275*b7893ccfSSadaf Ebrahimi         auto &bucket = GetBucket(object);
276*b7893ccfSSadaf Ebrahimi         std::unique_lock<std::mutex> lock(bucket.counter_lock);
277*b7893ccfSSadaf Ebrahimi         struct object_use_data *use_data = &bucket.uses[object];
278*b7893ccfSSadaf Ebrahimi         use_data->reader_count -= 1;
279*b7893ccfSSadaf Ebrahimi         if ((use_data->reader_count == 0) && (use_data->writer_count == 0)) {
280*b7893ccfSSadaf Ebrahimi             bucket.uses.erase(object);
281*b7893ccfSSadaf Ebrahimi         }
282*b7893ccfSSadaf Ebrahimi     }
283*b7893ccfSSadaf Ebrahimi     counter(const char *name = "", VkDebugReportObjectTypeEXT type = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, debug_report_data **rep_data = nullptr) {
284*b7893ccfSSadaf Ebrahimi         typeName = name;
285*b7893ccfSSadaf Ebrahimi         objectType = type;
286*b7893ccfSSadaf Ebrahimi         report_data = rep_data;
287*b7893ccfSSadaf Ebrahimi     }
288*b7893ccfSSadaf Ebrahimi 
289*b7893ccfSSadaf Ebrahimi private:
WaitForObjectIdle(CounterBucket & bucket,T object,std::unique_lock<std::mutex> & lock)290*b7893ccfSSadaf Ebrahimi     void WaitForObjectIdle(CounterBucket &bucket, T object, std::unique_lock<std::mutex> &lock) {
291*b7893ccfSSadaf Ebrahimi         // Wait for thread-safe access to object instead of skipping call.
292*b7893ccfSSadaf Ebrahimi         // Don't use condition_variable to wait because it should be extremely
293*b7893ccfSSadaf Ebrahimi         // rare to have collisions, but signaling would be very frequent.
294*b7893ccfSSadaf Ebrahimi         while (bucket.uses.contains(object)) {
295*b7893ccfSSadaf Ebrahimi             lock.unlock();
296*b7893ccfSSadaf Ebrahimi             std::this_thread::sleep_for(std::chrono::microseconds(1));
297*b7893ccfSSadaf Ebrahimi             lock.lock();
298*b7893ccfSSadaf Ebrahimi         }
299*b7893ccfSSadaf Ebrahimi     }
300*b7893ccfSSadaf Ebrahimi };
301*b7893ccfSSadaf Ebrahimi 
302*b7893ccfSSadaf Ebrahimi 
303*b7893ccfSSadaf Ebrahimi 
304*b7893ccfSSadaf Ebrahimi class ThreadSafety : public ValidationObject {
305*b7893ccfSSadaf Ebrahimi public:
306*b7893ccfSSadaf Ebrahimi 
307*b7893ccfSSadaf Ebrahimi     // Override chassis read/write locks for this validation object
308*b7893ccfSSadaf Ebrahimi     // This override takes a deferred lock. i.e. it is not acquired.
write_lock()309*b7893ccfSSadaf Ebrahimi     std::unique_lock<std::mutex> write_lock() {
310*b7893ccfSSadaf Ebrahimi         return std::unique_lock<std::mutex>(validation_object_mutex, std::defer_lock);
311*b7893ccfSSadaf Ebrahimi     }
312*b7893ccfSSadaf Ebrahimi 
313*b7893ccfSSadaf Ebrahimi     // Per-bucket locking, to reduce contention.
314*b7893ccfSSadaf Ebrahimi     struct CommandBufferBucket {
315*b7893ccfSSadaf Ebrahimi         std::mutex command_pool_lock;
316*b7893ccfSSadaf Ebrahimi         small_unordered_map<VkCommandBuffer, VkCommandPool> command_pool_map;
317*b7893ccfSSadaf Ebrahimi     };
318*b7893ccfSSadaf Ebrahimi 
319*b7893ccfSSadaf Ebrahimi     CommandBufferBucket buckets[THREAD_SAFETY_BUCKETS];
GetBucket(VkCommandBuffer object)320*b7893ccfSSadaf Ebrahimi     CommandBufferBucket &GetBucket(VkCommandBuffer object)
321*b7893ccfSSadaf Ebrahimi     {
322*b7893ccfSSadaf Ebrahimi         return buckets[ThreadSafetyHashObject(object)];
323*b7893ccfSSadaf Ebrahimi     }
324*b7893ccfSSadaf Ebrahimi 
325*b7893ccfSSadaf Ebrahimi     counter<VkCommandBuffer> c_VkCommandBuffer;
326*b7893ccfSSadaf Ebrahimi     counter<VkDevice> c_VkDevice;
327*b7893ccfSSadaf Ebrahimi     counter<VkInstance> c_VkInstance;
328*b7893ccfSSadaf Ebrahimi     counter<VkQueue> c_VkQueue;
329*b7893ccfSSadaf Ebrahimi #ifdef DISTINCT_NONDISPATCHABLE_HANDLES
330*b7893ccfSSadaf Ebrahimi 
331*b7893ccfSSadaf Ebrahimi     // Special entry to allow tracking of command pool Reset and Destroy
332*b7893ccfSSadaf Ebrahimi     counter<VkCommandPool> c_VkCommandPoolContents;
333*b7893ccfSSadaf Ebrahimi     counter<VkAccelerationStructureNV> c_VkAccelerationStructureNV;
334*b7893ccfSSadaf Ebrahimi     counter<VkBuffer> c_VkBuffer;
335*b7893ccfSSadaf Ebrahimi     counter<VkBufferView> c_VkBufferView;
336*b7893ccfSSadaf Ebrahimi     counter<VkCommandPool> c_VkCommandPool;
337*b7893ccfSSadaf Ebrahimi     counter<VkDebugReportCallbackEXT> c_VkDebugReportCallbackEXT;
338*b7893ccfSSadaf Ebrahimi     counter<VkDebugUtilsMessengerEXT> c_VkDebugUtilsMessengerEXT;
339*b7893ccfSSadaf Ebrahimi     counter<VkDescriptorPool> c_VkDescriptorPool;
340*b7893ccfSSadaf Ebrahimi     counter<VkDescriptorSet> c_VkDescriptorSet;
341*b7893ccfSSadaf Ebrahimi     counter<VkDescriptorSetLayout> c_VkDescriptorSetLayout;
342*b7893ccfSSadaf Ebrahimi     counter<VkDescriptorUpdateTemplate> c_VkDescriptorUpdateTemplate;
343*b7893ccfSSadaf Ebrahimi     counter<VkDeviceMemory> c_VkDeviceMemory;
344*b7893ccfSSadaf Ebrahimi     counter<VkDisplayKHR> c_VkDisplayKHR;
345*b7893ccfSSadaf Ebrahimi     counter<VkDisplayModeKHR> c_VkDisplayModeKHR;
346*b7893ccfSSadaf Ebrahimi     counter<VkEvent> c_VkEvent;
347*b7893ccfSSadaf Ebrahimi     counter<VkFence> c_VkFence;
348*b7893ccfSSadaf Ebrahimi     counter<VkFramebuffer> c_VkFramebuffer;
349*b7893ccfSSadaf Ebrahimi     counter<VkImage> c_VkImage;
350*b7893ccfSSadaf Ebrahimi     counter<VkImageView> c_VkImageView;
351*b7893ccfSSadaf Ebrahimi     counter<VkIndirectCommandsLayoutNVX> c_VkIndirectCommandsLayoutNVX;
352*b7893ccfSSadaf Ebrahimi     counter<VkObjectTableNVX> c_VkObjectTableNVX;
353*b7893ccfSSadaf Ebrahimi     counter<VkPerformanceConfigurationINTEL> c_VkPerformanceConfigurationINTEL;
354*b7893ccfSSadaf Ebrahimi     counter<VkPipeline> c_VkPipeline;
355*b7893ccfSSadaf Ebrahimi     counter<VkPipelineCache> c_VkPipelineCache;
356*b7893ccfSSadaf Ebrahimi     counter<VkPipelineLayout> c_VkPipelineLayout;
357*b7893ccfSSadaf Ebrahimi     counter<VkQueryPool> c_VkQueryPool;
358*b7893ccfSSadaf Ebrahimi     counter<VkRenderPass> c_VkRenderPass;
359*b7893ccfSSadaf Ebrahimi     counter<VkSampler> c_VkSampler;
360*b7893ccfSSadaf Ebrahimi     counter<VkSamplerYcbcrConversion> c_VkSamplerYcbcrConversion;
361*b7893ccfSSadaf Ebrahimi     counter<VkSemaphore> c_VkSemaphore;
362*b7893ccfSSadaf Ebrahimi     counter<VkShaderModule> c_VkShaderModule;
363*b7893ccfSSadaf Ebrahimi     counter<VkSurfaceKHR> c_VkSurfaceKHR;
364*b7893ccfSSadaf Ebrahimi     counter<VkSwapchainKHR> c_VkSwapchainKHR;
365*b7893ccfSSadaf Ebrahimi     counter<VkValidationCacheEXT> c_VkValidationCacheEXT;
366*b7893ccfSSadaf Ebrahimi 
367*b7893ccfSSadaf Ebrahimi 
368*b7893ccfSSadaf Ebrahimi #else   // DISTINCT_NONDISPATCHABLE_HANDLES
369*b7893ccfSSadaf Ebrahimi     // Special entry to allow tracking of command pool Reset and Destroy
370*b7893ccfSSadaf Ebrahimi     counter<uint64_t> c_VkCommandPoolContents;
371*b7893ccfSSadaf Ebrahimi 
372*b7893ccfSSadaf Ebrahimi     counter<uint64_t> c_uint64_t;
373*b7893ccfSSadaf Ebrahimi #endif  // DISTINCT_NONDISPATCHABLE_HANDLES
374*b7893ccfSSadaf Ebrahimi 
ThreadSafety()375*b7893ccfSSadaf Ebrahimi     ThreadSafety()
376*b7893ccfSSadaf Ebrahimi         : c_VkCommandBuffer("VkCommandBuffer", VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, &report_data),
377*b7893ccfSSadaf Ebrahimi           c_VkDevice("VkDevice", VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, &report_data),
378*b7893ccfSSadaf Ebrahimi           c_VkInstance("VkInstance", VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT, &report_data),
379*b7893ccfSSadaf Ebrahimi           c_VkQueue("VkQueue", VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT, &report_data),
380*b7893ccfSSadaf Ebrahimi           c_VkCommandPoolContents("VkCommandPool", VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT, &report_data),
381*b7893ccfSSadaf Ebrahimi 
382*b7893ccfSSadaf Ebrahimi #ifdef DISTINCT_NONDISPATCHABLE_HANDLES
383*b7893ccfSSadaf Ebrahimi           c_VkAccelerationStructureNV("VkAccelerationStructureNV", VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT, &report_data),
384*b7893ccfSSadaf Ebrahimi           c_VkBuffer("VkBuffer", VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT, &report_data),
385*b7893ccfSSadaf Ebrahimi           c_VkBufferView("VkBufferView", VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT, &report_data),
386*b7893ccfSSadaf Ebrahimi           c_VkCommandPool("VkCommandPool", VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT, &report_data),
387*b7893ccfSSadaf Ebrahimi           c_VkDebugReportCallbackEXT("VkDebugReportCallbackEXT", VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT, &report_data),
388*b7893ccfSSadaf Ebrahimi           c_VkDebugUtilsMessengerEXT("VkDebugUtilsMessengerEXT", VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, &report_data),
389*b7893ccfSSadaf Ebrahimi           c_VkDescriptorPool("VkDescriptorPool", VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT, &report_data),
390*b7893ccfSSadaf Ebrahimi           c_VkDescriptorSet("VkDescriptorSet", VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, &report_data),
391*b7893ccfSSadaf Ebrahimi           c_VkDescriptorSetLayout("VkDescriptorSetLayout", VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT, &report_data),
392*b7893ccfSSadaf Ebrahimi           c_VkDescriptorUpdateTemplate("VkDescriptorUpdateTemplate", VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT, &report_data),
393*b7893ccfSSadaf Ebrahimi           c_VkDeviceMemory("VkDeviceMemory", VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, &report_data),
394*b7893ccfSSadaf Ebrahimi           c_VkDisplayKHR("VkDisplayKHR", VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT, &report_data),
395*b7893ccfSSadaf Ebrahimi           c_VkDisplayModeKHR("VkDisplayModeKHR", VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT, &report_data),
396*b7893ccfSSadaf Ebrahimi           c_VkEvent("VkEvent", VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT, &report_data),
397*b7893ccfSSadaf Ebrahimi           c_VkFence("VkFence", VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT, &report_data),
398*b7893ccfSSadaf Ebrahimi           c_VkFramebuffer("VkFramebuffer", VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT, &report_data),
399*b7893ccfSSadaf Ebrahimi           c_VkImage("VkImage", VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, &report_data),
400*b7893ccfSSadaf Ebrahimi           c_VkImageView("VkImageView", VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT, &report_data),
401*b7893ccfSSadaf Ebrahimi           c_VkIndirectCommandsLayoutNVX("VkIndirectCommandsLayoutNVX", VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT, &report_data),
402*b7893ccfSSadaf Ebrahimi           c_VkObjectTableNVX("VkObjectTableNVX", VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT, &report_data),
403*b7893ccfSSadaf Ebrahimi           c_VkPerformanceConfigurationINTEL("VkPerformanceConfigurationINTEL", VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, &report_data),
404*b7893ccfSSadaf Ebrahimi           c_VkPipeline("VkPipeline", VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, &report_data),
405*b7893ccfSSadaf Ebrahimi           c_VkPipelineCache("VkPipelineCache", VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT, &report_data),
406*b7893ccfSSadaf Ebrahimi           c_VkPipelineLayout("VkPipelineLayout", VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT, &report_data),
407*b7893ccfSSadaf Ebrahimi           c_VkQueryPool("VkQueryPool", VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT, &report_data),
408*b7893ccfSSadaf Ebrahimi           c_VkRenderPass("VkRenderPass", VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, &report_data),
409*b7893ccfSSadaf Ebrahimi           c_VkSampler("VkSampler", VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT, &report_data),
410*b7893ccfSSadaf Ebrahimi           c_VkSamplerYcbcrConversion("VkSamplerYcbcrConversion", VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT, &report_data),
411*b7893ccfSSadaf Ebrahimi           c_VkSemaphore("VkSemaphore", VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT, &report_data),
412*b7893ccfSSadaf Ebrahimi           c_VkShaderModule("VkShaderModule", VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT, &report_data),
413*b7893ccfSSadaf Ebrahimi           c_VkSurfaceKHR("VkSurfaceKHR", VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT, &report_data),
414*b7893ccfSSadaf Ebrahimi           c_VkSwapchainKHR("VkSwapchainKHR", VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT, &report_data),
415*b7893ccfSSadaf Ebrahimi           c_VkValidationCacheEXT("VkValidationCacheEXT", VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT, &report_data)
416*b7893ccfSSadaf Ebrahimi 
417*b7893ccfSSadaf Ebrahimi 
418*b7893ccfSSadaf Ebrahimi #else   // DISTINCT_NONDISPATCHABLE_HANDLES
419*b7893ccfSSadaf Ebrahimi           c_uint64_t("NON_DISPATCHABLE_HANDLE", VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, &report_data)
420*b7893ccfSSadaf Ebrahimi #endif  // DISTINCT_NONDISPATCHABLE_HANDLES
421*b7893ccfSSadaf Ebrahimi               {};
422*b7893ccfSSadaf Ebrahimi 
423*b7893ccfSSadaf Ebrahimi #define WRAPPER(type)                                                    void StartWriteObject(type object) {                                     c_##type.StartWrite(object);                                     }                                                                    void FinishWriteObject(type object) {                                    c_##type.FinishWrite(object);                                    }                                                                    void StartReadObject(type object) {                                      c_##type.StartRead(object);                                      }                                                                    void FinishReadObject(type object) {                                     c_##type.FinishRead(object);                                     }
424*b7893ccfSSadaf Ebrahimi 
425*b7893ccfSSadaf Ebrahimi WRAPPER(VkDevice)
WRAPPER(VkInstance)426*b7893ccfSSadaf Ebrahimi WRAPPER(VkInstance)
427*b7893ccfSSadaf Ebrahimi WRAPPER(VkQueue)
428*b7893ccfSSadaf Ebrahimi #ifdef DISTINCT_NONDISPATCHABLE_HANDLES
429*b7893ccfSSadaf Ebrahimi WRAPPER(VkAccelerationStructureNV)
430*b7893ccfSSadaf Ebrahimi WRAPPER(VkBuffer)
431*b7893ccfSSadaf Ebrahimi WRAPPER(VkBufferView)
432*b7893ccfSSadaf Ebrahimi WRAPPER(VkCommandPool)
433*b7893ccfSSadaf Ebrahimi WRAPPER(VkDebugReportCallbackEXT)
434*b7893ccfSSadaf Ebrahimi WRAPPER(VkDebugUtilsMessengerEXT)
435*b7893ccfSSadaf Ebrahimi WRAPPER(VkDescriptorPool)
436*b7893ccfSSadaf Ebrahimi WRAPPER(VkDescriptorSet)
437*b7893ccfSSadaf Ebrahimi WRAPPER(VkDescriptorSetLayout)
438*b7893ccfSSadaf Ebrahimi WRAPPER(VkDescriptorUpdateTemplate)
439*b7893ccfSSadaf Ebrahimi WRAPPER(VkDeviceMemory)
440*b7893ccfSSadaf Ebrahimi WRAPPER(VkDisplayKHR)
441*b7893ccfSSadaf Ebrahimi WRAPPER(VkDisplayModeKHR)
442*b7893ccfSSadaf Ebrahimi WRAPPER(VkEvent)
443*b7893ccfSSadaf Ebrahimi WRAPPER(VkFence)
444*b7893ccfSSadaf Ebrahimi WRAPPER(VkFramebuffer)
445*b7893ccfSSadaf Ebrahimi WRAPPER(VkImage)
446*b7893ccfSSadaf Ebrahimi WRAPPER(VkImageView)
447*b7893ccfSSadaf Ebrahimi WRAPPER(VkIndirectCommandsLayoutNVX)
448*b7893ccfSSadaf Ebrahimi WRAPPER(VkObjectTableNVX)
449*b7893ccfSSadaf Ebrahimi WRAPPER(VkPerformanceConfigurationINTEL)
450*b7893ccfSSadaf Ebrahimi WRAPPER(VkPipeline)
451*b7893ccfSSadaf Ebrahimi WRAPPER(VkPipelineCache)
452*b7893ccfSSadaf Ebrahimi WRAPPER(VkPipelineLayout)
453*b7893ccfSSadaf Ebrahimi WRAPPER(VkQueryPool)
454*b7893ccfSSadaf Ebrahimi WRAPPER(VkRenderPass)
455*b7893ccfSSadaf Ebrahimi WRAPPER(VkSampler)
456*b7893ccfSSadaf Ebrahimi WRAPPER(VkSamplerYcbcrConversion)
457*b7893ccfSSadaf Ebrahimi WRAPPER(VkSemaphore)
458*b7893ccfSSadaf Ebrahimi WRAPPER(VkShaderModule)
459*b7893ccfSSadaf Ebrahimi WRAPPER(VkSurfaceKHR)
460*b7893ccfSSadaf Ebrahimi WRAPPER(VkSwapchainKHR)
461*b7893ccfSSadaf Ebrahimi WRAPPER(VkValidationCacheEXT)
462*b7893ccfSSadaf Ebrahimi 
463*b7893ccfSSadaf Ebrahimi 
464*b7893ccfSSadaf Ebrahimi #else   // DISTINCT_NONDISPATCHABLE_HANDLES
465*b7893ccfSSadaf Ebrahimi WRAPPER(uint64_t)
466*b7893ccfSSadaf Ebrahimi #endif  // DISTINCT_NONDISPATCHABLE_HANDLES
467*b7893ccfSSadaf Ebrahimi 
468*b7893ccfSSadaf Ebrahimi     // VkCommandBuffer needs check for implicit use of command pool
469*b7893ccfSSadaf Ebrahimi     void StartWriteObject(VkCommandBuffer object, bool lockPool = true) {
470*b7893ccfSSadaf Ebrahimi         if (lockPool) {
471*b7893ccfSSadaf Ebrahimi             auto &bucket = GetBucket(object);
472*b7893ccfSSadaf Ebrahimi             std::unique_lock<std::mutex> lock(bucket.command_pool_lock);
473*b7893ccfSSadaf Ebrahimi             VkCommandPool pool = bucket.command_pool_map[object];
474*b7893ccfSSadaf Ebrahimi             lock.unlock();
475*b7893ccfSSadaf Ebrahimi             StartWriteObject(pool);
476*b7893ccfSSadaf Ebrahimi         }
477*b7893ccfSSadaf Ebrahimi         c_VkCommandBuffer.StartWrite(object);
478*b7893ccfSSadaf Ebrahimi     }
479*b7893ccfSSadaf Ebrahimi     void FinishWriteObject(VkCommandBuffer object, bool lockPool = true) {
480*b7893ccfSSadaf Ebrahimi         c_VkCommandBuffer.FinishWrite(object);
481*b7893ccfSSadaf Ebrahimi         if (lockPool) {
482*b7893ccfSSadaf Ebrahimi             auto &bucket = GetBucket(object);
483*b7893ccfSSadaf Ebrahimi             std::unique_lock<std::mutex> lock(bucket.command_pool_lock);
484*b7893ccfSSadaf Ebrahimi             VkCommandPool pool = bucket.command_pool_map[object];
485*b7893ccfSSadaf Ebrahimi             lock.unlock();
486*b7893ccfSSadaf Ebrahimi             FinishWriteObject(pool);
487*b7893ccfSSadaf Ebrahimi         }
488*b7893ccfSSadaf Ebrahimi     }
StartReadObject(VkCommandBuffer object)489*b7893ccfSSadaf Ebrahimi     void StartReadObject(VkCommandBuffer object) {
490*b7893ccfSSadaf Ebrahimi         auto &bucket = GetBucket(object);
491*b7893ccfSSadaf Ebrahimi         std::unique_lock<std::mutex> lock(bucket.command_pool_lock);
492*b7893ccfSSadaf Ebrahimi         VkCommandPool pool = bucket.command_pool_map[object];
493*b7893ccfSSadaf Ebrahimi         lock.unlock();
494*b7893ccfSSadaf Ebrahimi         // We set up a read guard against the "Contents" counter to catch conflict vs. vkResetCommandPool and vkDestroyCommandPool
495*b7893ccfSSadaf Ebrahimi         // while *not* establishing a read guard against the command pool counter itself to avoid false postives for
496*b7893ccfSSadaf Ebrahimi         // non-externally sync'd command buffers
497*b7893ccfSSadaf Ebrahimi         c_VkCommandPoolContents.StartRead(pool);
498*b7893ccfSSadaf Ebrahimi         c_VkCommandBuffer.StartRead(object);
499*b7893ccfSSadaf Ebrahimi     }
FinishReadObject(VkCommandBuffer object)500*b7893ccfSSadaf Ebrahimi     void FinishReadObject(VkCommandBuffer object) {
501*b7893ccfSSadaf Ebrahimi         auto &bucket = GetBucket(object);
502*b7893ccfSSadaf Ebrahimi         c_VkCommandBuffer.FinishRead(object);
503*b7893ccfSSadaf Ebrahimi         std::unique_lock<std::mutex> lock(bucket.command_pool_lock);
504*b7893ccfSSadaf Ebrahimi         VkCommandPool pool = bucket.command_pool_map[object];
505*b7893ccfSSadaf Ebrahimi         lock.unlock();
506*b7893ccfSSadaf Ebrahimi         c_VkCommandPoolContents.FinishRead(pool);
507*b7893ccfSSadaf Ebrahimi     }
508*b7893ccfSSadaf Ebrahimi 
509*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyInstance(
510*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
511*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
512*b7893ccfSSadaf Ebrahimi 
513*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyInstance(
514*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
515*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
516*b7893ccfSSadaf Ebrahimi 
517*b7893ccfSSadaf Ebrahimi void PreCallRecordEnumeratePhysicalDevices(
518*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
519*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pPhysicalDeviceCount,
520*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice*                           pPhysicalDevices);
521*b7893ccfSSadaf Ebrahimi 
522*b7893ccfSSadaf Ebrahimi void PostCallRecordEnumeratePhysicalDevices(
523*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
524*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pPhysicalDeviceCount,
525*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice*                           pPhysicalDevices,
526*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
527*b7893ccfSSadaf Ebrahimi 
528*b7893ccfSSadaf Ebrahimi void PreCallRecordGetInstanceProcAddr(
529*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
530*b7893ccfSSadaf Ebrahimi     const char*                                 pName);
531*b7893ccfSSadaf Ebrahimi 
532*b7893ccfSSadaf Ebrahimi void PostCallRecordGetInstanceProcAddr(
533*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
534*b7893ccfSSadaf Ebrahimi     const char*                                 pName);
535*b7893ccfSSadaf Ebrahimi 
536*b7893ccfSSadaf Ebrahimi void PreCallRecordGetDeviceProcAddr(
537*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
538*b7893ccfSSadaf Ebrahimi     const char*                                 pName);
539*b7893ccfSSadaf Ebrahimi 
540*b7893ccfSSadaf Ebrahimi void PostCallRecordGetDeviceProcAddr(
541*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
542*b7893ccfSSadaf Ebrahimi     const char*                                 pName);
543*b7893ccfSSadaf Ebrahimi 
544*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyDevice(
545*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
546*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
547*b7893ccfSSadaf Ebrahimi 
548*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyDevice(
549*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
550*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
551*b7893ccfSSadaf Ebrahimi 
552*b7893ccfSSadaf Ebrahimi void PreCallRecordGetDeviceQueue(
553*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
554*b7893ccfSSadaf Ebrahimi     uint32_t                                    queueFamilyIndex,
555*b7893ccfSSadaf Ebrahimi     uint32_t                                    queueIndex,
556*b7893ccfSSadaf Ebrahimi     VkQueue*                                    pQueue);
557*b7893ccfSSadaf Ebrahimi 
558*b7893ccfSSadaf Ebrahimi void PostCallRecordGetDeviceQueue(
559*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
560*b7893ccfSSadaf Ebrahimi     uint32_t                                    queueFamilyIndex,
561*b7893ccfSSadaf Ebrahimi     uint32_t                                    queueIndex,
562*b7893ccfSSadaf Ebrahimi     VkQueue*                                    pQueue);
563*b7893ccfSSadaf Ebrahimi 
564*b7893ccfSSadaf Ebrahimi void PreCallRecordQueueSubmit(
565*b7893ccfSSadaf Ebrahimi     VkQueue                                     queue,
566*b7893ccfSSadaf Ebrahimi     uint32_t                                    submitCount,
567*b7893ccfSSadaf Ebrahimi     const VkSubmitInfo*                         pSubmits,
568*b7893ccfSSadaf Ebrahimi     VkFence                                     fence);
569*b7893ccfSSadaf Ebrahimi 
570*b7893ccfSSadaf Ebrahimi void PostCallRecordQueueSubmit(
571*b7893ccfSSadaf Ebrahimi     VkQueue                                     queue,
572*b7893ccfSSadaf Ebrahimi     uint32_t                                    submitCount,
573*b7893ccfSSadaf Ebrahimi     const VkSubmitInfo*                         pSubmits,
574*b7893ccfSSadaf Ebrahimi     VkFence                                     fence,
575*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
576*b7893ccfSSadaf Ebrahimi 
577*b7893ccfSSadaf Ebrahimi void PreCallRecordQueueWaitIdle(
578*b7893ccfSSadaf Ebrahimi     VkQueue                                     queue);
579*b7893ccfSSadaf Ebrahimi 
580*b7893ccfSSadaf Ebrahimi void PostCallRecordQueueWaitIdle(
581*b7893ccfSSadaf Ebrahimi     VkQueue                                     queue,
582*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
583*b7893ccfSSadaf Ebrahimi 
584*b7893ccfSSadaf Ebrahimi void PreCallRecordDeviceWaitIdle(
585*b7893ccfSSadaf Ebrahimi     VkDevice                                    device);
586*b7893ccfSSadaf Ebrahimi 
587*b7893ccfSSadaf Ebrahimi void PostCallRecordDeviceWaitIdle(
588*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
589*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
590*b7893ccfSSadaf Ebrahimi 
591*b7893ccfSSadaf Ebrahimi void PreCallRecordAllocateMemory(
592*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
593*b7893ccfSSadaf Ebrahimi     const VkMemoryAllocateInfo*                 pAllocateInfo,
594*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
595*b7893ccfSSadaf Ebrahimi     VkDeviceMemory*                             pMemory);
596*b7893ccfSSadaf Ebrahimi 
597*b7893ccfSSadaf Ebrahimi void PostCallRecordAllocateMemory(
598*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
599*b7893ccfSSadaf Ebrahimi     const VkMemoryAllocateInfo*                 pAllocateInfo,
600*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
601*b7893ccfSSadaf Ebrahimi     VkDeviceMemory*                             pMemory,
602*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
603*b7893ccfSSadaf Ebrahimi 
604*b7893ccfSSadaf Ebrahimi void PreCallRecordFreeMemory(
605*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
606*b7893ccfSSadaf Ebrahimi     VkDeviceMemory                              memory,
607*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
608*b7893ccfSSadaf Ebrahimi 
609*b7893ccfSSadaf Ebrahimi void PostCallRecordFreeMemory(
610*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
611*b7893ccfSSadaf Ebrahimi     VkDeviceMemory                              memory,
612*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
613*b7893ccfSSadaf Ebrahimi 
614*b7893ccfSSadaf Ebrahimi void PreCallRecordMapMemory(
615*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
616*b7893ccfSSadaf Ebrahimi     VkDeviceMemory                              memory,
617*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
618*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                size,
619*b7893ccfSSadaf Ebrahimi     VkMemoryMapFlags                            flags,
620*b7893ccfSSadaf Ebrahimi     void**                                      ppData);
621*b7893ccfSSadaf Ebrahimi 
622*b7893ccfSSadaf Ebrahimi void PostCallRecordMapMemory(
623*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
624*b7893ccfSSadaf Ebrahimi     VkDeviceMemory                              memory,
625*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
626*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                size,
627*b7893ccfSSadaf Ebrahimi     VkMemoryMapFlags                            flags,
628*b7893ccfSSadaf Ebrahimi     void**                                      ppData,
629*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
630*b7893ccfSSadaf Ebrahimi 
631*b7893ccfSSadaf Ebrahimi void PreCallRecordUnmapMemory(
632*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
633*b7893ccfSSadaf Ebrahimi     VkDeviceMemory                              memory);
634*b7893ccfSSadaf Ebrahimi 
635*b7893ccfSSadaf Ebrahimi void PostCallRecordUnmapMemory(
636*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
637*b7893ccfSSadaf Ebrahimi     VkDeviceMemory                              memory);
638*b7893ccfSSadaf Ebrahimi 
639*b7893ccfSSadaf Ebrahimi void PreCallRecordFlushMappedMemoryRanges(
640*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
641*b7893ccfSSadaf Ebrahimi     uint32_t                                    memoryRangeCount,
642*b7893ccfSSadaf Ebrahimi     const VkMappedMemoryRange*                  pMemoryRanges);
643*b7893ccfSSadaf Ebrahimi 
644*b7893ccfSSadaf Ebrahimi void PostCallRecordFlushMappedMemoryRanges(
645*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
646*b7893ccfSSadaf Ebrahimi     uint32_t                                    memoryRangeCount,
647*b7893ccfSSadaf Ebrahimi     const VkMappedMemoryRange*                  pMemoryRanges,
648*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
649*b7893ccfSSadaf Ebrahimi 
650*b7893ccfSSadaf Ebrahimi void PreCallRecordInvalidateMappedMemoryRanges(
651*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
652*b7893ccfSSadaf Ebrahimi     uint32_t                                    memoryRangeCount,
653*b7893ccfSSadaf Ebrahimi     const VkMappedMemoryRange*                  pMemoryRanges);
654*b7893ccfSSadaf Ebrahimi 
655*b7893ccfSSadaf Ebrahimi void PostCallRecordInvalidateMappedMemoryRanges(
656*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
657*b7893ccfSSadaf Ebrahimi     uint32_t                                    memoryRangeCount,
658*b7893ccfSSadaf Ebrahimi     const VkMappedMemoryRange*                  pMemoryRanges,
659*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
660*b7893ccfSSadaf Ebrahimi 
661*b7893ccfSSadaf Ebrahimi void PreCallRecordGetDeviceMemoryCommitment(
662*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
663*b7893ccfSSadaf Ebrahimi     VkDeviceMemory                              memory,
664*b7893ccfSSadaf Ebrahimi     VkDeviceSize*                               pCommittedMemoryInBytes);
665*b7893ccfSSadaf Ebrahimi 
666*b7893ccfSSadaf Ebrahimi void PostCallRecordGetDeviceMemoryCommitment(
667*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
668*b7893ccfSSadaf Ebrahimi     VkDeviceMemory                              memory,
669*b7893ccfSSadaf Ebrahimi     VkDeviceSize*                               pCommittedMemoryInBytes);
670*b7893ccfSSadaf Ebrahimi 
671*b7893ccfSSadaf Ebrahimi void PreCallRecordBindBufferMemory(
672*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
673*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
674*b7893ccfSSadaf Ebrahimi     VkDeviceMemory                              memory,
675*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                memoryOffset);
676*b7893ccfSSadaf Ebrahimi 
677*b7893ccfSSadaf Ebrahimi void PostCallRecordBindBufferMemory(
678*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
679*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
680*b7893ccfSSadaf Ebrahimi     VkDeviceMemory                              memory,
681*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                memoryOffset,
682*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
683*b7893ccfSSadaf Ebrahimi 
684*b7893ccfSSadaf Ebrahimi void PreCallRecordBindImageMemory(
685*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
686*b7893ccfSSadaf Ebrahimi     VkImage                                     image,
687*b7893ccfSSadaf Ebrahimi     VkDeviceMemory                              memory,
688*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                memoryOffset);
689*b7893ccfSSadaf Ebrahimi 
690*b7893ccfSSadaf Ebrahimi void PostCallRecordBindImageMemory(
691*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
692*b7893ccfSSadaf Ebrahimi     VkImage                                     image,
693*b7893ccfSSadaf Ebrahimi     VkDeviceMemory                              memory,
694*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                memoryOffset,
695*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
696*b7893ccfSSadaf Ebrahimi 
697*b7893ccfSSadaf Ebrahimi void PreCallRecordGetBufferMemoryRequirements(
698*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
699*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
700*b7893ccfSSadaf Ebrahimi     VkMemoryRequirements*                       pMemoryRequirements);
701*b7893ccfSSadaf Ebrahimi 
702*b7893ccfSSadaf Ebrahimi void PostCallRecordGetBufferMemoryRequirements(
703*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
704*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
705*b7893ccfSSadaf Ebrahimi     VkMemoryRequirements*                       pMemoryRequirements);
706*b7893ccfSSadaf Ebrahimi 
707*b7893ccfSSadaf Ebrahimi void PreCallRecordGetImageMemoryRequirements(
708*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
709*b7893ccfSSadaf Ebrahimi     VkImage                                     image,
710*b7893ccfSSadaf Ebrahimi     VkMemoryRequirements*                       pMemoryRequirements);
711*b7893ccfSSadaf Ebrahimi 
712*b7893ccfSSadaf Ebrahimi void PostCallRecordGetImageMemoryRequirements(
713*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
714*b7893ccfSSadaf Ebrahimi     VkImage                                     image,
715*b7893ccfSSadaf Ebrahimi     VkMemoryRequirements*                       pMemoryRequirements);
716*b7893ccfSSadaf Ebrahimi 
717*b7893ccfSSadaf Ebrahimi void PreCallRecordGetImageSparseMemoryRequirements(
718*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
719*b7893ccfSSadaf Ebrahimi     VkImage                                     image,
720*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pSparseMemoryRequirementCount,
721*b7893ccfSSadaf Ebrahimi     VkSparseImageMemoryRequirements*            pSparseMemoryRequirements);
722*b7893ccfSSadaf Ebrahimi 
723*b7893ccfSSadaf Ebrahimi void PostCallRecordGetImageSparseMemoryRequirements(
724*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
725*b7893ccfSSadaf Ebrahimi     VkImage                                     image,
726*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pSparseMemoryRequirementCount,
727*b7893ccfSSadaf Ebrahimi     VkSparseImageMemoryRequirements*            pSparseMemoryRequirements);
728*b7893ccfSSadaf Ebrahimi 
729*b7893ccfSSadaf Ebrahimi void PreCallRecordQueueBindSparse(
730*b7893ccfSSadaf Ebrahimi     VkQueue                                     queue,
731*b7893ccfSSadaf Ebrahimi     uint32_t                                    bindInfoCount,
732*b7893ccfSSadaf Ebrahimi     const VkBindSparseInfo*                     pBindInfo,
733*b7893ccfSSadaf Ebrahimi     VkFence                                     fence);
734*b7893ccfSSadaf Ebrahimi 
735*b7893ccfSSadaf Ebrahimi void PostCallRecordQueueBindSparse(
736*b7893ccfSSadaf Ebrahimi     VkQueue                                     queue,
737*b7893ccfSSadaf Ebrahimi     uint32_t                                    bindInfoCount,
738*b7893ccfSSadaf Ebrahimi     const VkBindSparseInfo*                     pBindInfo,
739*b7893ccfSSadaf Ebrahimi     VkFence                                     fence,
740*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
741*b7893ccfSSadaf Ebrahimi 
742*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateFence(
743*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
744*b7893ccfSSadaf Ebrahimi     const VkFenceCreateInfo*                    pCreateInfo,
745*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
746*b7893ccfSSadaf Ebrahimi     VkFence*                                    pFence);
747*b7893ccfSSadaf Ebrahimi 
748*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateFence(
749*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
750*b7893ccfSSadaf Ebrahimi     const VkFenceCreateInfo*                    pCreateInfo,
751*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
752*b7893ccfSSadaf Ebrahimi     VkFence*                                    pFence,
753*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
754*b7893ccfSSadaf Ebrahimi 
755*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyFence(
756*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
757*b7893ccfSSadaf Ebrahimi     VkFence                                     fence,
758*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
759*b7893ccfSSadaf Ebrahimi 
760*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyFence(
761*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
762*b7893ccfSSadaf Ebrahimi     VkFence                                     fence,
763*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
764*b7893ccfSSadaf Ebrahimi 
765*b7893ccfSSadaf Ebrahimi void PreCallRecordResetFences(
766*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
767*b7893ccfSSadaf Ebrahimi     uint32_t                                    fenceCount,
768*b7893ccfSSadaf Ebrahimi     const VkFence*                              pFences);
769*b7893ccfSSadaf Ebrahimi 
770*b7893ccfSSadaf Ebrahimi void PostCallRecordResetFences(
771*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
772*b7893ccfSSadaf Ebrahimi     uint32_t                                    fenceCount,
773*b7893ccfSSadaf Ebrahimi     const VkFence*                              pFences,
774*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
775*b7893ccfSSadaf Ebrahimi 
776*b7893ccfSSadaf Ebrahimi void PreCallRecordGetFenceStatus(
777*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
778*b7893ccfSSadaf Ebrahimi     VkFence                                     fence);
779*b7893ccfSSadaf Ebrahimi 
780*b7893ccfSSadaf Ebrahimi void PostCallRecordGetFenceStatus(
781*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
782*b7893ccfSSadaf Ebrahimi     VkFence                                     fence,
783*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
784*b7893ccfSSadaf Ebrahimi 
785*b7893ccfSSadaf Ebrahimi void PreCallRecordWaitForFences(
786*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
787*b7893ccfSSadaf Ebrahimi     uint32_t                                    fenceCount,
788*b7893ccfSSadaf Ebrahimi     const VkFence*                              pFences,
789*b7893ccfSSadaf Ebrahimi     VkBool32                                    waitAll,
790*b7893ccfSSadaf Ebrahimi     uint64_t                                    timeout);
791*b7893ccfSSadaf Ebrahimi 
792*b7893ccfSSadaf Ebrahimi void PostCallRecordWaitForFences(
793*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
794*b7893ccfSSadaf Ebrahimi     uint32_t                                    fenceCount,
795*b7893ccfSSadaf Ebrahimi     const VkFence*                              pFences,
796*b7893ccfSSadaf Ebrahimi     VkBool32                                    waitAll,
797*b7893ccfSSadaf Ebrahimi     uint64_t                                    timeout,
798*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
799*b7893ccfSSadaf Ebrahimi 
800*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateSemaphore(
801*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
802*b7893ccfSSadaf Ebrahimi     const VkSemaphoreCreateInfo*                pCreateInfo,
803*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
804*b7893ccfSSadaf Ebrahimi     VkSemaphore*                                pSemaphore);
805*b7893ccfSSadaf Ebrahimi 
806*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateSemaphore(
807*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
808*b7893ccfSSadaf Ebrahimi     const VkSemaphoreCreateInfo*                pCreateInfo,
809*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
810*b7893ccfSSadaf Ebrahimi     VkSemaphore*                                pSemaphore,
811*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
812*b7893ccfSSadaf Ebrahimi 
813*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroySemaphore(
814*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
815*b7893ccfSSadaf Ebrahimi     VkSemaphore                                 semaphore,
816*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
817*b7893ccfSSadaf Ebrahimi 
818*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroySemaphore(
819*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
820*b7893ccfSSadaf Ebrahimi     VkSemaphore                                 semaphore,
821*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
822*b7893ccfSSadaf Ebrahimi 
823*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateEvent(
824*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
825*b7893ccfSSadaf Ebrahimi     const VkEventCreateInfo*                    pCreateInfo,
826*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
827*b7893ccfSSadaf Ebrahimi     VkEvent*                                    pEvent);
828*b7893ccfSSadaf Ebrahimi 
829*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateEvent(
830*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
831*b7893ccfSSadaf Ebrahimi     const VkEventCreateInfo*                    pCreateInfo,
832*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
833*b7893ccfSSadaf Ebrahimi     VkEvent*                                    pEvent,
834*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
835*b7893ccfSSadaf Ebrahimi 
836*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyEvent(
837*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
838*b7893ccfSSadaf Ebrahimi     VkEvent                                     event,
839*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
840*b7893ccfSSadaf Ebrahimi 
841*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyEvent(
842*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
843*b7893ccfSSadaf Ebrahimi     VkEvent                                     event,
844*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
845*b7893ccfSSadaf Ebrahimi 
846*b7893ccfSSadaf Ebrahimi void PreCallRecordGetEventStatus(
847*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
848*b7893ccfSSadaf Ebrahimi     VkEvent                                     event);
849*b7893ccfSSadaf Ebrahimi 
850*b7893ccfSSadaf Ebrahimi void PostCallRecordGetEventStatus(
851*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
852*b7893ccfSSadaf Ebrahimi     VkEvent                                     event,
853*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
854*b7893ccfSSadaf Ebrahimi 
855*b7893ccfSSadaf Ebrahimi void PreCallRecordSetEvent(
856*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
857*b7893ccfSSadaf Ebrahimi     VkEvent                                     event);
858*b7893ccfSSadaf Ebrahimi 
859*b7893ccfSSadaf Ebrahimi void PostCallRecordSetEvent(
860*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
861*b7893ccfSSadaf Ebrahimi     VkEvent                                     event,
862*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
863*b7893ccfSSadaf Ebrahimi 
864*b7893ccfSSadaf Ebrahimi void PreCallRecordResetEvent(
865*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
866*b7893ccfSSadaf Ebrahimi     VkEvent                                     event);
867*b7893ccfSSadaf Ebrahimi 
868*b7893ccfSSadaf Ebrahimi void PostCallRecordResetEvent(
869*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
870*b7893ccfSSadaf Ebrahimi     VkEvent                                     event,
871*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
872*b7893ccfSSadaf Ebrahimi 
873*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateQueryPool(
874*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
875*b7893ccfSSadaf Ebrahimi     const VkQueryPoolCreateInfo*                pCreateInfo,
876*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
877*b7893ccfSSadaf Ebrahimi     VkQueryPool*                                pQueryPool);
878*b7893ccfSSadaf Ebrahimi 
879*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateQueryPool(
880*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
881*b7893ccfSSadaf Ebrahimi     const VkQueryPoolCreateInfo*                pCreateInfo,
882*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
883*b7893ccfSSadaf Ebrahimi     VkQueryPool*                                pQueryPool,
884*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
885*b7893ccfSSadaf Ebrahimi 
886*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyQueryPool(
887*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
888*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
889*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
890*b7893ccfSSadaf Ebrahimi 
891*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyQueryPool(
892*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
893*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
894*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
895*b7893ccfSSadaf Ebrahimi 
896*b7893ccfSSadaf Ebrahimi void PreCallRecordGetQueryPoolResults(
897*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
898*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
899*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstQuery,
900*b7893ccfSSadaf Ebrahimi     uint32_t                                    queryCount,
901*b7893ccfSSadaf Ebrahimi     size_t                                      dataSize,
902*b7893ccfSSadaf Ebrahimi     void*                                       pData,
903*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                stride,
904*b7893ccfSSadaf Ebrahimi     VkQueryResultFlags                          flags);
905*b7893ccfSSadaf Ebrahimi 
906*b7893ccfSSadaf Ebrahimi void PostCallRecordGetQueryPoolResults(
907*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
908*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
909*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstQuery,
910*b7893ccfSSadaf Ebrahimi     uint32_t                                    queryCount,
911*b7893ccfSSadaf Ebrahimi     size_t                                      dataSize,
912*b7893ccfSSadaf Ebrahimi     void*                                       pData,
913*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                stride,
914*b7893ccfSSadaf Ebrahimi     VkQueryResultFlags                          flags,
915*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
916*b7893ccfSSadaf Ebrahimi 
917*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateBuffer(
918*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
919*b7893ccfSSadaf Ebrahimi     const VkBufferCreateInfo*                   pCreateInfo,
920*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
921*b7893ccfSSadaf Ebrahimi     VkBuffer*                                   pBuffer);
922*b7893ccfSSadaf Ebrahimi 
923*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateBuffer(
924*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
925*b7893ccfSSadaf Ebrahimi     const VkBufferCreateInfo*                   pCreateInfo,
926*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
927*b7893ccfSSadaf Ebrahimi     VkBuffer*                                   pBuffer,
928*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
929*b7893ccfSSadaf Ebrahimi 
930*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyBuffer(
931*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
932*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
933*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
934*b7893ccfSSadaf Ebrahimi 
935*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyBuffer(
936*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
937*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
938*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
939*b7893ccfSSadaf Ebrahimi 
940*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateBufferView(
941*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
942*b7893ccfSSadaf Ebrahimi     const VkBufferViewCreateInfo*               pCreateInfo,
943*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
944*b7893ccfSSadaf Ebrahimi     VkBufferView*                               pView);
945*b7893ccfSSadaf Ebrahimi 
946*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateBufferView(
947*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
948*b7893ccfSSadaf Ebrahimi     const VkBufferViewCreateInfo*               pCreateInfo,
949*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
950*b7893ccfSSadaf Ebrahimi     VkBufferView*                               pView,
951*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
952*b7893ccfSSadaf Ebrahimi 
953*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyBufferView(
954*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
955*b7893ccfSSadaf Ebrahimi     VkBufferView                                bufferView,
956*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
957*b7893ccfSSadaf Ebrahimi 
958*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyBufferView(
959*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
960*b7893ccfSSadaf Ebrahimi     VkBufferView                                bufferView,
961*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
962*b7893ccfSSadaf Ebrahimi 
963*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateImage(
964*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
965*b7893ccfSSadaf Ebrahimi     const VkImageCreateInfo*                    pCreateInfo,
966*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
967*b7893ccfSSadaf Ebrahimi     VkImage*                                    pImage);
968*b7893ccfSSadaf Ebrahimi 
969*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateImage(
970*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
971*b7893ccfSSadaf Ebrahimi     const VkImageCreateInfo*                    pCreateInfo,
972*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
973*b7893ccfSSadaf Ebrahimi     VkImage*                                    pImage,
974*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
975*b7893ccfSSadaf Ebrahimi 
976*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyImage(
977*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
978*b7893ccfSSadaf Ebrahimi     VkImage                                     image,
979*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
980*b7893ccfSSadaf Ebrahimi 
981*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyImage(
982*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
983*b7893ccfSSadaf Ebrahimi     VkImage                                     image,
984*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
985*b7893ccfSSadaf Ebrahimi 
986*b7893ccfSSadaf Ebrahimi void PreCallRecordGetImageSubresourceLayout(
987*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
988*b7893ccfSSadaf Ebrahimi     VkImage                                     image,
989*b7893ccfSSadaf Ebrahimi     const VkImageSubresource*                   pSubresource,
990*b7893ccfSSadaf Ebrahimi     VkSubresourceLayout*                        pLayout);
991*b7893ccfSSadaf Ebrahimi 
992*b7893ccfSSadaf Ebrahimi void PostCallRecordGetImageSubresourceLayout(
993*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
994*b7893ccfSSadaf Ebrahimi     VkImage                                     image,
995*b7893ccfSSadaf Ebrahimi     const VkImageSubresource*                   pSubresource,
996*b7893ccfSSadaf Ebrahimi     VkSubresourceLayout*                        pLayout);
997*b7893ccfSSadaf Ebrahimi 
998*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateImageView(
999*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1000*b7893ccfSSadaf Ebrahimi     const VkImageViewCreateInfo*                pCreateInfo,
1001*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1002*b7893ccfSSadaf Ebrahimi     VkImageView*                                pView);
1003*b7893ccfSSadaf Ebrahimi 
1004*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateImageView(
1005*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1006*b7893ccfSSadaf Ebrahimi     const VkImageViewCreateInfo*                pCreateInfo,
1007*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1008*b7893ccfSSadaf Ebrahimi     VkImageView*                                pView,
1009*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1010*b7893ccfSSadaf Ebrahimi 
1011*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyImageView(
1012*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1013*b7893ccfSSadaf Ebrahimi     VkImageView                                 imageView,
1014*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1015*b7893ccfSSadaf Ebrahimi 
1016*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyImageView(
1017*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1018*b7893ccfSSadaf Ebrahimi     VkImageView                                 imageView,
1019*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1020*b7893ccfSSadaf Ebrahimi 
1021*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateShaderModule(
1022*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1023*b7893ccfSSadaf Ebrahimi     const VkShaderModuleCreateInfo*             pCreateInfo,
1024*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1025*b7893ccfSSadaf Ebrahimi     VkShaderModule*                             pShaderModule);
1026*b7893ccfSSadaf Ebrahimi 
1027*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateShaderModule(
1028*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1029*b7893ccfSSadaf Ebrahimi     const VkShaderModuleCreateInfo*             pCreateInfo,
1030*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1031*b7893ccfSSadaf Ebrahimi     VkShaderModule*                             pShaderModule,
1032*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1033*b7893ccfSSadaf Ebrahimi 
1034*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyShaderModule(
1035*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1036*b7893ccfSSadaf Ebrahimi     VkShaderModule                              shaderModule,
1037*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1038*b7893ccfSSadaf Ebrahimi 
1039*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyShaderModule(
1040*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1041*b7893ccfSSadaf Ebrahimi     VkShaderModule                              shaderModule,
1042*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1043*b7893ccfSSadaf Ebrahimi 
1044*b7893ccfSSadaf Ebrahimi void PreCallRecordCreatePipelineCache(
1045*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1046*b7893ccfSSadaf Ebrahimi     const VkPipelineCacheCreateInfo*            pCreateInfo,
1047*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1048*b7893ccfSSadaf Ebrahimi     VkPipelineCache*                            pPipelineCache);
1049*b7893ccfSSadaf Ebrahimi 
1050*b7893ccfSSadaf Ebrahimi void PostCallRecordCreatePipelineCache(
1051*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1052*b7893ccfSSadaf Ebrahimi     const VkPipelineCacheCreateInfo*            pCreateInfo,
1053*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1054*b7893ccfSSadaf Ebrahimi     VkPipelineCache*                            pPipelineCache,
1055*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1056*b7893ccfSSadaf Ebrahimi 
1057*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyPipelineCache(
1058*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1059*b7893ccfSSadaf Ebrahimi     VkPipelineCache                             pipelineCache,
1060*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1061*b7893ccfSSadaf Ebrahimi 
1062*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyPipelineCache(
1063*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1064*b7893ccfSSadaf Ebrahimi     VkPipelineCache                             pipelineCache,
1065*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1066*b7893ccfSSadaf Ebrahimi 
1067*b7893ccfSSadaf Ebrahimi void PreCallRecordGetPipelineCacheData(
1068*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1069*b7893ccfSSadaf Ebrahimi     VkPipelineCache                             pipelineCache,
1070*b7893ccfSSadaf Ebrahimi     size_t*                                     pDataSize,
1071*b7893ccfSSadaf Ebrahimi     void*                                       pData);
1072*b7893ccfSSadaf Ebrahimi 
1073*b7893ccfSSadaf Ebrahimi void PostCallRecordGetPipelineCacheData(
1074*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1075*b7893ccfSSadaf Ebrahimi     VkPipelineCache                             pipelineCache,
1076*b7893ccfSSadaf Ebrahimi     size_t*                                     pDataSize,
1077*b7893ccfSSadaf Ebrahimi     void*                                       pData,
1078*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1079*b7893ccfSSadaf Ebrahimi 
1080*b7893ccfSSadaf Ebrahimi void PreCallRecordMergePipelineCaches(
1081*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1082*b7893ccfSSadaf Ebrahimi     VkPipelineCache                             dstCache,
1083*b7893ccfSSadaf Ebrahimi     uint32_t                                    srcCacheCount,
1084*b7893ccfSSadaf Ebrahimi     const VkPipelineCache*                      pSrcCaches);
1085*b7893ccfSSadaf Ebrahimi 
1086*b7893ccfSSadaf Ebrahimi void PostCallRecordMergePipelineCaches(
1087*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1088*b7893ccfSSadaf Ebrahimi     VkPipelineCache                             dstCache,
1089*b7893ccfSSadaf Ebrahimi     uint32_t                                    srcCacheCount,
1090*b7893ccfSSadaf Ebrahimi     const VkPipelineCache*                      pSrcCaches,
1091*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1092*b7893ccfSSadaf Ebrahimi 
1093*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateGraphicsPipelines(
1094*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1095*b7893ccfSSadaf Ebrahimi     VkPipelineCache                             pipelineCache,
1096*b7893ccfSSadaf Ebrahimi     uint32_t                                    createInfoCount,
1097*b7893ccfSSadaf Ebrahimi     const VkGraphicsPipelineCreateInfo*         pCreateInfos,
1098*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1099*b7893ccfSSadaf Ebrahimi     VkPipeline*                                 pPipelines);
1100*b7893ccfSSadaf Ebrahimi 
1101*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateGraphicsPipelines(
1102*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1103*b7893ccfSSadaf Ebrahimi     VkPipelineCache                             pipelineCache,
1104*b7893ccfSSadaf Ebrahimi     uint32_t                                    createInfoCount,
1105*b7893ccfSSadaf Ebrahimi     const VkGraphicsPipelineCreateInfo*         pCreateInfos,
1106*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1107*b7893ccfSSadaf Ebrahimi     VkPipeline*                                 pPipelines,
1108*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1109*b7893ccfSSadaf Ebrahimi 
1110*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateComputePipelines(
1111*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1112*b7893ccfSSadaf Ebrahimi     VkPipelineCache                             pipelineCache,
1113*b7893ccfSSadaf Ebrahimi     uint32_t                                    createInfoCount,
1114*b7893ccfSSadaf Ebrahimi     const VkComputePipelineCreateInfo*          pCreateInfos,
1115*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1116*b7893ccfSSadaf Ebrahimi     VkPipeline*                                 pPipelines);
1117*b7893ccfSSadaf Ebrahimi 
1118*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateComputePipelines(
1119*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1120*b7893ccfSSadaf Ebrahimi     VkPipelineCache                             pipelineCache,
1121*b7893ccfSSadaf Ebrahimi     uint32_t                                    createInfoCount,
1122*b7893ccfSSadaf Ebrahimi     const VkComputePipelineCreateInfo*          pCreateInfos,
1123*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1124*b7893ccfSSadaf Ebrahimi     VkPipeline*                                 pPipelines,
1125*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1126*b7893ccfSSadaf Ebrahimi 
1127*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyPipeline(
1128*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1129*b7893ccfSSadaf Ebrahimi     VkPipeline                                  pipeline,
1130*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1131*b7893ccfSSadaf Ebrahimi 
1132*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyPipeline(
1133*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1134*b7893ccfSSadaf Ebrahimi     VkPipeline                                  pipeline,
1135*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1136*b7893ccfSSadaf Ebrahimi 
1137*b7893ccfSSadaf Ebrahimi void PreCallRecordCreatePipelineLayout(
1138*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1139*b7893ccfSSadaf Ebrahimi     const VkPipelineLayoutCreateInfo*           pCreateInfo,
1140*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1141*b7893ccfSSadaf Ebrahimi     VkPipelineLayout*                           pPipelineLayout);
1142*b7893ccfSSadaf Ebrahimi 
1143*b7893ccfSSadaf Ebrahimi void PostCallRecordCreatePipelineLayout(
1144*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1145*b7893ccfSSadaf Ebrahimi     const VkPipelineLayoutCreateInfo*           pCreateInfo,
1146*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1147*b7893ccfSSadaf Ebrahimi     VkPipelineLayout*                           pPipelineLayout,
1148*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1149*b7893ccfSSadaf Ebrahimi 
1150*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyPipelineLayout(
1151*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1152*b7893ccfSSadaf Ebrahimi     VkPipelineLayout                            pipelineLayout,
1153*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1154*b7893ccfSSadaf Ebrahimi 
1155*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyPipelineLayout(
1156*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1157*b7893ccfSSadaf Ebrahimi     VkPipelineLayout                            pipelineLayout,
1158*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1159*b7893ccfSSadaf Ebrahimi 
1160*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateSampler(
1161*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1162*b7893ccfSSadaf Ebrahimi     const VkSamplerCreateInfo*                  pCreateInfo,
1163*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1164*b7893ccfSSadaf Ebrahimi     VkSampler*                                  pSampler);
1165*b7893ccfSSadaf Ebrahimi 
1166*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateSampler(
1167*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1168*b7893ccfSSadaf Ebrahimi     const VkSamplerCreateInfo*                  pCreateInfo,
1169*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1170*b7893ccfSSadaf Ebrahimi     VkSampler*                                  pSampler,
1171*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1172*b7893ccfSSadaf Ebrahimi 
1173*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroySampler(
1174*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1175*b7893ccfSSadaf Ebrahimi     VkSampler                                   sampler,
1176*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1177*b7893ccfSSadaf Ebrahimi 
1178*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroySampler(
1179*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1180*b7893ccfSSadaf Ebrahimi     VkSampler                                   sampler,
1181*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1182*b7893ccfSSadaf Ebrahimi 
1183*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateDescriptorSetLayout(
1184*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1185*b7893ccfSSadaf Ebrahimi     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
1186*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1187*b7893ccfSSadaf Ebrahimi     VkDescriptorSetLayout*                      pSetLayout);
1188*b7893ccfSSadaf Ebrahimi 
1189*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateDescriptorSetLayout(
1190*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1191*b7893ccfSSadaf Ebrahimi     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
1192*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1193*b7893ccfSSadaf Ebrahimi     VkDescriptorSetLayout*                      pSetLayout,
1194*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1195*b7893ccfSSadaf Ebrahimi 
1196*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyDescriptorSetLayout(
1197*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1198*b7893ccfSSadaf Ebrahimi     VkDescriptorSetLayout                       descriptorSetLayout,
1199*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1200*b7893ccfSSadaf Ebrahimi 
1201*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyDescriptorSetLayout(
1202*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1203*b7893ccfSSadaf Ebrahimi     VkDescriptorSetLayout                       descriptorSetLayout,
1204*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1205*b7893ccfSSadaf Ebrahimi 
1206*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateDescriptorPool(
1207*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1208*b7893ccfSSadaf Ebrahimi     const VkDescriptorPoolCreateInfo*           pCreateInfo,
1209*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1210*b7893ccfSSadaf Ebrahimi     VkDescriptorPool*                           pDescriptorPool);
1211*b7893ccfSSadaf Ebrahimi 
1212*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateDescriptorPool(
1213*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1214*b7893ccfSSadaf Ebrahimi     const VkDescriptorPoolCreateInfo*           pCreateInfo,
1215*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1216*b7893ccfSSadaf Ebrahimi     VkDescriptorPool*                           pDescriptorPool,
1217*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1218*b7893ccfSSadaf Ebrahimi 
1219*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyDescriptorPool(
1220*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1221*b7893ccfSSadaf Ebrahimi     VkDescriptorPool                            descriptorPool,
1222*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1223*b7893ccfSSadaf Ebrahimi 
1224*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyDescriptorPool(
1225*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1226*b7893ccfSSadaf Ebrahimi     VkDescriptorPool                            descriptorPool,
1227*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1228*b7893ccfSSadaf Ebrahimi 
1229*b7893ccfSSadaf Ebrahimi void PreCallRecordResetDescriptorPool(
1230*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1231*b7893ccfSSadaf Ebrahimi     VkDescriptorPool                            descriptorPool,
1232*b7893ccfSSadaf Ebrahimi     VkDescriptorPoolResetFlags                  flags);
1233*b7893ccfSSadaf Ebrahimi 
1234*b7893ccfSSadaf Ebrahimi void PostCallRecordResetDescriptorPool(
1235*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1236*b7893ccfSSadaf Ebrahimi     VkDescriptorPool                            descriptorPool,
1237*b7893ccfSSadaf Ebrahimi     VkDescriptorPoolResetFlags                  flags,
1238*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1239*b7893ccfSSadaf Ebrahimi 
1240*b7893ccfSSadaf Ebrahimi void PreCallRecordAllocateDescriptorSets(
1241*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1242*b7893ccfSSadaf Ebrahimi     const VkDescriptorSetAllocateInfo*          pAllocateInfo,
1243*b7893ccfSSadaf Ebrahimi     VkDescriptorSet*                            pDescriptorSets);
1244*b7893ccfSSadaf Ebrahimi 
1245*b7893ccfSSadaf Ebrahimi void PostCallRecordAllocateDescriptorSets(
1246*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1247*b7893ccfSSadaf Ebrahimi     const VkDescriptorSetAllocateInfo*          pAllocateInfo,
1248*b7893ccfSSadaf Ebrahimi     VkDescriptorSet*                            pDescriptorSets,
1249*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1250*b7893ccfSSadaf Ebrahimi 
1251*b7893ccfSSadaf Ebrahimi void PreCallRecordFreeDescriptorSets(
1252*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1253*b7893ccfSSadaf Ebrahimi     VkDescriptorPool                            descriptorPool,
1254*b7893ccfSSadaf Ebrahimi     uint32_t                                    descriptorSetCount,
1255*b7893ccfSSadaf Ebrahimi     const VkDescriptorSet*                      pDescriptorSets);
1256*b7893ccfSSadaf Ebrahimi 
1257*b7893ccfSSadaf Ebrahimi void PostCallRecordFreeDescriptorSets(
1258*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1259*b7893ccfSSadaf Ebrahimi     VkDescriptorPool                            descriptorPool,
1260*b7893ccfSSadaf Ebrahimi     uint32_t                                    descriptorSetCount,
1261*b7893ccfSSadaf Ebrahimi     const VkDescriptorSet*                      pDescriptorSets,
1262*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1263*b7893ccfSSadaf Ebrahimi 
1264*b7893ccfSSadaf Ebrahimi void PreCallRecordUpdateDescriptorSets(
1265*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1266*b7893ccfSSadaf Ebrahimi     uint32_t                                    descriptorWriteCount,
1267*b7893ccfSSadaf Ebrahimi     const VkWriteDescriptorSet*                 pDescriptorWrites,
1268*b7893ccfSSadaf Ebrahimi     uint32_t                                    descriptorCopyCount,
1269*b7893ccfSSadaf Ebrahimi     const VkCopyDescriptorSet*                  pDescriptorCopies);
1270*b7893ccfSSadaf Ebrahimi 
1271*b7893ccfSSadaf Ebrahimi void PostCallRecordUpdateDescriptorSets(
1272*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1273*b7893ccfSSadaf Ebrahimi     uint32_t                                    descriptorWriteCount,
1274*b7893ccfSSadaf Ebrahimi     const VkWriteDescriptorSet*                 pDescriptorWrites,
1275*b7893ccfSSadaf Ebrahimi     uint32_t                                    descriptorCopyCount,
1276*b7893ccfSSadaf Ebrahimi     const VkCopyDescriptorSet*                  pDescriptorCopies);
1277*b7893ccfSSadaf Ebrahimi 
1278*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateFramebuffer(
1279*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1280*b7893ccfSSadaf Ebrahimi     const VkFramebufferCreateInfo*              pCreateInfo,
1281*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1282*b7893ccfSSadaf Ebrahimi     VkFramebuffer*                              pFramebuffer);
1283*b7893ccfSSadaf Ebrahimi 
1284*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateFramebuffer(
1285*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1286*b7893ccfSSadaf Ebrahimi     const VkFramebufferCreateInfo*              pCreateInfo,
1287*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1288*b7893ccfSSadaf Ebrahimi     VkFramebuffer*                              pFramebuffer,
1289*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1290*b7893ccfSSadaf Ebrahimi 
1291*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyFramebuffer(
1292*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1293*b7893ccfSSadaf Ebrahimi     VkFramebuffer                               framebuffer,
1294*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1295*b7893ccfSSadaf Ebrahimi 
1296*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyFramebuffer(
1297*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1298*b7893ccfSSadaf Ebrahimi     VkFramebuffer                               framebuffer,
1299*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1300*b7893ccfSSadaf Ebrahimi 
1301*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateRenderPass(
1302*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1303*b7893ccfSSadaf Ebrahimi     const VkRenderPassCreateInfo*               pCreateInfo,
1304*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1305*b7893ccfSSadaf Ebrahimi     VkRenderPass*                               pRenderPass);
1306*b7893ccfSSadaf Ebrahimi 
1307*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateRenderPass(
1308*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1309*b7893ccfSSadaf Ebrahimi     const VkRenderPassCreateInfo*               pCreateInfo,
1310*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1311*b7893ccfSSadaf Ebrahimi     VkRenderPass*                               pRenderPass,
1312*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1313*b7893ccfSSadaf Ebrahimi 
1314*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyRenderPass(
1315*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1316*b7893ccfSSadaf Ebrahimi     VkRenderPass                                renderPass,
1317*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1318*b7893ccfSSadaf Ebrahimi 
1319*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyRenderPass(
1320*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1321*b7893ccfSSadaf Ebrahimi     VkRenderPass                                renderPass,
1322*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1323*b7893ccfSSadaf Ebrahimi 
1324*b7893ccfSSadaf Ebrahimi void PreCallRecordGetRenderAreaGranularity(
1325*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1326*b7893ccfSSadaf Ebrahimi     VkRenderPass                                renderPass,
1327*b7893ccfSSadaf Ebrahimi     VkExtent2D*                                 pGranularity);
1328*b7893ccfSSadaf Ebrahimi 
1329*b7893ccfSSadaf Ebrahimi void PostCallRecordGetRenderAreaGranularity(
1330*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1331*b7893ccfSSadaf Ebrahimi     VkRenderPass                                renderPass,
1332*b7893ccfSSadaf Ebrahimi     VkExtent2D*                                 pGranularity);
1333*b7893ccfSSadaf Ebrahimi 
1334*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateCommandPool(
1335*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1336*b7893ccfSSadaf Ebrahimi     const VkCommandPoolCreateInfo*              pCreateInfo,
1337*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1338*b7893ccfSSadaf Ebrahimi     VkCommandPool*                              pCommandPool);
1339*b7893ccfSSadaf Ebrahimi 
1340*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateCommandPool(
1341*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1342*b7893ccfSSadaf Ebrahimi     const VkCommandPoolCreateInfo*              pCreateInfo,
1343*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
1344*b7893ccfSSadaf Ebrahimi     VkCommandPool*                              pCommandPool,
1345*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1346*b7893ccfSSadaf Ebrahimi 
1347*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyCommandPool(
1348*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1349*b7893ccfSSadaf Ebrahimi     VkCommandPool                               commandPool,
1350*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1351*b7893ccfSSadaf Ebrahimi 
1352*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyCommandPool(
1353*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1354*b7893ccfSSadaf Ebrahimi     VkCommandPool                               commandPool,
1355*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
1356*b7893ccfSSadaf Ebrahimi 
1357*b7893ccfSSadaf Ebrahimi void PreCallRecordResetCommandPool(
1358*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1359*b7893ccfSSadaf Ebrahimi     VkCommandPool                               commandPool,
1360*b7893ccfSSadaf Ebrahimi     VkCommandPoolResetFlags                     flags);
1361*b7893ccfSSadaf Ebrahimi 
1362*b7893ccfSSadaf Ebrahimi void PostCallRecordResetCommandPool(
1363*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1364*b7893ccfSSadaf Ebrahimi     VkCommandPool                               commandPool,
1365*b7893ccfSSadaf Ebrahimi     VkCommandPoolResetFlags                     flags,
1366*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1367*b7893ccfSSadaf Ebrahimi 
1368*b7893ccfSSadaf Ebrahimi void PreCallRecordAllocateCommandBuffers(
1369*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1370*b7893ccfSSadaf Ebrahimi     const VkCommandBufferAllocateInfo*          pAllocateInfo,
1371*b7893ccfSSadaf Ebrahimi     VkCommandBuffer*                            pCommandBuffers);
1372*b7893ccfSSadaf Ebrahimi 
1373*b7893ccfSSadaf Ebrahimi void PostCallRecordAllocateCommandBuffers(
1374*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1375*b7893ccfSSadaf Ebrahimi     const VkCommandBufferAllocateInfo*          pAllocateInfo,
1376*b7893ccfSSadaf Ebrahimi     VkCommandBuffer*                            pCommandBuffers,
1377*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1378*b7893ccfSSadaf Ebrahimi 
1379*b7893ccfSSadaf Ebrahimi void PreCallRecordFreeCommandBuffers(
1380*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1381*b7893ccfSSadaf Ebrahimi     VkCommandPool                               commandPool,
1382*b7893ccfSSadaf Ebrahimi     uint32_t                                    commandBufferCount,
1383*b7893ccfSSadaf Ebrahimi     const VkCommandBuffer*                      pCommandBuffers);
1384*b7893ccfSSadaf Ebrahimi 
1385*b7893ccfSSadaf Ebrahimi void PostCallRecordFreeCommandBuffers(
1386*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
1387*b7893ccfSSadaf Ebrahimi     VkCommandPool                               commandPool,
1388*b7893ccfSSadaf Ebrahimi     uint32_t                                    commandBufferCount,
1389*b7893ccfSSadaf Ebrahimi     const VkCommandBuffer*                      pCommandBuffers);
1390*b7893ccfSSadaf Ebrahimi 
1391*b7893ccfSSadaf Ebrahimi void PreCallRecordBeginCommandBuffer(
1392*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1393*b7893ccfSSadaf Ebrahimi     const VkCommandBufferBeginInfo*             pBeginInfo);
1394*b7893ccfSSadaf Ebrahimi 
1395*b7893ccfSSadaf Ebrahimi void PostCallRecordBeginCommandBuffer(
1396*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1397*b7893ccfSSadaf Ebrahimi     const VkCommandBufferBeginInfo*             pBeginInfo,
1398*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1399*b7893ccfSSadaf Ebrahimi 
1400*b7893ccfSSadaf Ebrahimi void PreCallRecordEndCommandBuffer(
1401*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer);
1402*b7893ccfSSadaf Ebrahimi 
1403*b7893ccfSSadaf Ebrahimi void PostCallRecordEndCommandBuffer(
1404*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1405*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1406*b7893ccfSSadaf Ebrahimi 
1407*b7893ccfSSadaf Ebrahimi void PreCallRecordResetCommandBuffer(
1408*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1409*b7893ccfSSadaf Ebrahimi     VkCommandBufferResetFlags                   flags);
1410*b7893ccfSSadaf Ebrahimi 
1411*b7893ccfSSadaf Ebrahimi void PostCallRecordResetCommandBuffer(
1412*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1413*b7893ccfSSadaf Ebrahimi     VkCommandBufferResetFlags                   flags,
1414*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
1415*b7893ccfSSadaf Ebrahimi 
1416*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdBindPipeline(
1417*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1418*b7893ccfSSadaf Ebrahimi     VkPipelineBindPoint                         pipelineBindPoint,
1419*b7893ccfSSadaf Ebrahimi     VkPipeline                                  pipeline);
1420*b7893ccfSSadaf Ebrahimi 
1421*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdBindPipeline(
1422*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1423*b7893ccfSSadaf Ebrahimi     VkPipelineBindPoint                         pipelineBindPoint,
1424*b7893ccfSSadaf Ebrahimi     VkPipeline                                  pipeline);
1425*b7893ccfSSadaf Ebrahimi 
1426*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetViewport(
1427*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1428*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstViewport,
1429*b7893ccfSSadaf Ebrahimi     uint32_t                                    viewportCount,
1430*b7893ccfSSadaf Ebrahimi     const VkViewport*                           pViewports);
1431*b7893ccfSSadaf Ebrahimi 
1432*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetViewport(
1433*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1434*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstViewport,
1435*b7893ccfSSadaf Ebrahimi     uint32_t                                    viewportCount,
1436*b7893ccfSSadaf Ebrahimi     const VkViewport*                           pViewports);
1437*b7893ccfSSadaf Ebrahimi 
1438*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetScissor(
1439*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1440*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstScissor,
1441*b7893ccfSSadaf Ebrahimi     uint32_t                                    scissorCount,
1442*b7893ccfSSadaf Ebrahimi     const VkRect2D*                             pScissors);
1443*b7893ccfSSadaf Ebrahimi 
1444*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetScissor(
1445*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1446*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstScissor,
1447*b7893ccfSSadaf Ebrahimi     uint32_t                                    scissorCount,
1448*b7893ccfSSadaf Ebrahimi     const VkRect2D*                             pScissors);
1449*b7893ccfSSadaf Ebrahimi 
1450*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetLineWidth(
1451*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1452*b7893ccfSSadaf Ebrahimi     float                                       lineWidth);
1453*b7893ccfSSadaf Ebrahimi 
1454*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetLineWidth(
1455*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1456*b7893ccfSSadaf Ebrahimi     float                                       lineWidth);
1457*b7893ccfSSadaf Ebrahimi 
1458*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetDepthBias(
1459*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1460*b7893ccfSSadaf Ebrahimi     float                                       depthBiasConstantFactor,
1461*b7893ccfSSadaf Ebrahimi     float                                       depthBiasClamp,
1462*b7893ccfSSadaf Ebrahimi     float                                       depthBiasSlopeFactor);
1463*b7893ccfSSadaf Ebrahimi 
1464*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetDepthBias(
1465*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1466*b7893ccfSSadaf Ebrahimi     float                                       depthBiasConstantFactor,
1467*b7893ccfSSadaf Ebrahimi     float                                       depthBiasClamp,
1468*b7893ccfSSadaf Ebrahimi     float                                       depthBiasSlopeFactor);
1469*b7893ccfSSadaf Ebrahimi 
1470*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetBlendConstants(
1471*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1472*b7893ccfSSadaf Ebrahimi     const float                                 blendConstants[4]);
1473*b7893ccfSSadaf Ebrahimi 
1474*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetBlendConstants(
1475*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1476*b7893ccfSSadaf Ebrahimi     const float                                 blendConstants[4]);
1477*b7893ccfSSadaf Ebrahimi 
1478*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetDepthBounds(
1479*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1480*b7893ccfSSadaf Ebrahimi     float                                       minDepthBounds,
1481*b7893ccfSSadaf Ebrahimi     float                                       maxDepthBounds);
1482*b7893ccfSSadaf Ebrahimi 
1483*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetDepthBounds(
1484*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1485*b7893ccfSSadaf Ebrahimi     float                                       minDepthBounds,
1486*b7893ccfSSadaf Ebrahimi     float                                       maxDepthBounds);
1487*b7893ccfSSadaf Ebrahimi 
1488*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetStencilCompareMask(
1489*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1490*b7893ccfSSadaf Ebrahimi     VkStencilFaceFlags                          faceMask,
1491*b7893ccfSSadaf Ebrahimi     uint32_t                                    compareMask);
1492*b7893ccfSSadaf Ebrahimi 
1493*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetStencilCompareMask(
1494*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1495*b7893ccfSSadaf Ebrahimi     VkStencilFaceFlags                          faceMask,
1496*b7893ccfSSadaf Ebrahimi     uint32_t                                    compareMask);
1497*b7893ccfSSadaf Ebrahimi 
1498*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetStencilWriteMask(
1499*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1500*b7893ccfSSadaf Ebrahimi     VkStencilFaceFlags                          faceMask,
1501*b7893ccfSSadaf Ebrahimi     uint32_t                                    writeMask);
1502*b7893ccfSSadaf Ebrahimi 
1503*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetStencilWriteMask(
1504*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1505*b7893ccfSSadaf Ebrahimi     VkStencilFaceFlags                          faceMask,
1506*b7893ccfSSadaf Ebrahimi     uint32_t                                    writeMask);
1507*b7893ccfSSadaf Ebrahimi 
1508*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetStencilReference(
1509*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1510*b7893ccfSSadaf Ebrahimi     VkStencilFaceFlags                          faceMask,
1511*b7893ccfSSadaf Ebrahimi     uint32_t                                    reference);
1512*b7893ccfSSadaf Ebrahimi 
1513*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetStencilReference(
1514*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1515*b7893ccfSSadaf Ebrahimi     VkStencilFaceFlags                          faceMask,
1516*b7893ccfSSadaf Ebrahimi     uint32_t                                    reference);
1517*b7893ccfSSadaf Ebrahimi 
1518*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdBindDescriptorSets(
1519*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1520*b7893ccfSSadaf Ebrahimi     VkPipelineBindPoint                         pipelineBindPoint,
1521*b7893ccfSSadaf Ebrahimi     VkPipelineLayout                            layout,
1522*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstSet,
1523*b7893ccfSSadaf Ebrahimi     uint32_t                                    descriptorSetCount,
1524*b7893ccfSSadaf Ebrahimi     const VkDescriptorSet*                      pDescriptorSets,
1525*b7893ccfSSadaf Ebrahimi     uint32_t                                    dynamicOffsetCount,
1526*b7893ccfSSadaf Ebrahimi     const uint32_t*                             pDynamicOffsets);
1527*b7893ccfSSadaf Ebrahimi 
1528*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdBindDescriptorSets(
1529*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1530*b7893ccfSSadaf Ebrahimi     VkPipelineBindPoint                         pipelineBindPoint,
1531*b7893ccfSSadaf Ebrahimi     VkPipelineLayout                            layout,
1532*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstSet,
1533*b7893ccfSSadaf Ebrahimi     uint32_t                                    descriptorSetCount,
1534*b7893ccfSSadaf Ebrahimi     const VkDescriptorSet*                      pDescriptorSets,
1535*b7893ccfSSadaf Ebrahimi     uint32_t                                    dynamicOffsetCount,
1536*b7893ccfSSadaf Ebrahimi     const uint32_t*                             pDynamicOffsets);
1537*b7893ccfSSadaf Ebrahimi 
1538*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdBindIndexBuffer(
1539*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1540*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
1541*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
1542*b7893ccfSSadaf Ebrahimi     VkIndexType                                 indexType);
1543*b7893ccfSSadaf Ebrahimi 
1544*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdBindIndexBuffer(
1545*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1546*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
1547*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
1548*b7893ccfSSadaf Ebrahimi     VkIndexType                                 indexType);
1549*b7893ccfSSadaf Ebrahimi 
1550*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdBindVertexBuffers(
1551*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1552*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstBinding,
1553*b7893ccfSSadaf Ebrahimi     uint32_t                                    bindingCount,
1554*b7893ccfSSadaf Ebrahimi     const VkBuffer*                             pBuffers,
1555*b7893ccfSSadaf Ebrahimi     const VkDeviceSize*                         pOffsets);
1556*b7893ccfSSadaf Ebrahimi 
1557*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdBindVertexBuffers(
1558*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1559*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstBinding,
1560*b7893ccfSSadaf Ebrahimi     uint32_t                                    bindingCount,
1561*b7893ccfSSadaf Ebrahimi     const VkBuffer*                             pBuffers,
1562*b7893ccfSSadaf Ebrahimi     const VkDeviceSize*                         pOffsets);
1563*b7893ccfSSadaf Ebrahimi 
1564*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdDraw(
1565*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1566*b7893ccfSSadaf Ebrahimi     uint32_t                                    vertexCount,
1567*b7893ccfSSadaf Ebrahimi     uint32_t                                    instanceCount,
1568*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstVertex,
1569*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstInstance);
1570*b7893ccfSSadaf Ebrahimi 
1571*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdDraw(
1572*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1573*b7893ccfSSadaf Ebrahimi     uint32_t                                    vertexCount,
1574*b7893ccfSSadaf Ebrahimi     uint32_t                                    instanceCount,
1575*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstVertex,
1576*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstInstance);
1577*b7893ccfSSadaf Ebrahimi 
1578*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdDrawIndexed(
1579*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1580*b7893ccfSSadaf Ebrahimi     uint32_t                                    indexCount,
1581*b7893ccfSSadaf Ebrahimi     uint32_t                                    instanceCount,
1582*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstIndex,
1583*b7893ccfSSadaf Ebrahimi     int32_t                                     vertexOffset,
1584*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstInstance);
1585*b7893ccfSSadaf Ebrahimi 
1586*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdDrawIndexed(
1587*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1588*b7893ccfSSadaf Ebrahimi     uint32_t                                    indexCount,
1589*b7893ccfSSadaf Ebrahimi     uint32_t                                    instanceCount,
1590*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstIndex,
1591*b7893ccfSSadaf Ebrahimi     int32_t                                     vertexOffset,
1592*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstInstance);
1593*b7893ccfSSadaf Ebrahimi 
1594*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdDrawIndirect(
1595*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1596*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
1597*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
1598*b7893ccfSSadaf Ebrahimi     uint32_t                                    drawCount,
1599*b7893ccfSSadaf Ebrahimi     uint32_t                                    stride);
1600*b7893ccfSSadaf Ebrahimi 
1601*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdDrawIndirect(
1602*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1603*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
1604*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
1605*b7893ccfSSadaf Ebrahimi     uint32_t                                    drawCount,
1606*b7893ccfSSadaf Ebrahimi     uint32_t                                    stride);
1607*b7893ccfSSadaf Ebrahimi 
1608*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdDrawIndexedIndirect(
1609*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1610*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
1611*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
1612*b7893ccfSSadaf Ebrahimi     uint32_t                                    drawCount,
1613*b7893ccfSSadaf Ebrahimi     uint32_t                                    stride);
1614*b7893ccfSSadaf Ebrahimi 
1615*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdDrawIndexedIndirect(
1616*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1617*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
1618*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
1619*b7893ccfSSadaf Ebrahimi     uint32_t                                    drawCount,
1620*b7893ccfSSadaf Ebrahimi     uint32_t                                    stride);
1621*b7893ccfSSadaf Ebrahimi 
1622*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdDispatch(
1623*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1624*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountX,
1625*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountY,
1626*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountZ);
1627*b7893ccfSSadaf Ebrahimi 
1628*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdDispatch(
1629*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1630*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountX,
1631*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountY,
1632*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountZ);
1633*b7893ccfSSadaf Ebrahimi 
1634*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdDispatchIndirect(
1635*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1636*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
1637*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset);
1638*b7893ccfSSadaf Ebrahimi 
1639*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdDispatchIndirect(
1640*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1641*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
1642*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset);
1643*b7893ccfSSadaf Ebrahimi 
1644*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdCopyBuffer(
1645*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1646*b7893ccfSSadaf Ebrahimi     VkBuffer                                    srcBuffer,
1647*b7893ccfSSadaf Ebrahimi     VkBuffer                                    dstBuffer,
1648*b7893ccfSSadaf Ebrahimi     uint32_t                                    regionCount,
1649*b7893ccfSSadaf Ebrahimi     const VkBufferCopy*                         pRegions);
1650*b7893ccfSSadaf Ebrahimi 
1651*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdCopyBuffer(
1652*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1653*b7893ccfSSadaf Ebrahimi     VkBuffer                                    srcBuffer,
1654*b7893ccfSSadaf Ebrahimi     VkBuffer                                    dstBuffer,
1655*b7893ccfSSadaf Ebrahimi     uint32_t                                    regionCount,
1656*b7893ccfSSadaf Ebrahimi     const VkBufferCopy*                         pRegions);
1657*b7893ccfSSadaf Ebrahimi 
1658*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdCopyImage(
1659*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1660*b7893ccfSSadaf Ebrahimi     VkImage                                     srcImage,
1661*b7893ccfSSadaf Ebrahimi     VkImageLayout                               srcImageLayout,
1662*b7893ccfSSadaf Ebrahimi     VkImage                                     dstImage,
1663*b7893ccfSSadaf Ebrahimi     VkImageLayout                               dstImageLayout,
1664*b7893ccfSSadaf Ebrahimi     uint32_t                                    regionCount,
1665*b7893ccfSSadaf Ebrahimi     const VkImageCopy*                          pRegions);
1666*b7893ccfSSadaf Ebrahimi 
1667*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdCopyImage(
1668*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1669*b7893ccfSSadaf Ebrahimi     VkImage                                     srcImage,
1670*b7893ccfSSadaf Ebrahimi     VkImageLayout                               srcImageLayout,
1671*b7893ccfSSadaf Ebrahimi     VkImage                                     dstImage,
1672*b7893ccfSSadaf Ebrahimi     VkImageLayout                               dstImageLayout,
1673*b7893ccfSSadaf Ebrahimi     uint32_t                                    regionCount,
1674*b7893ccfSSadaf Ebrahimi     const VkImageCopy*                          pRegions);
1675*b7893ccfSSadaf Ebrahimi 
1676*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdBlitImage(
1677*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1678*b7893ccfSSadaf Ebrahimi     VkImage                                     srcImage,
1679*b7893ccfSSadaf Ebrahimi     VkImageLayout                               srcImageLayout,
1680*b7893ccfSSadaf Ebrahimi     VkImage                                     dstImage,
1681*b7893ccfSSadaf Ebrahimi     VkImageLayout                               dstImageLayout,
1682*b7893ccfSSadaf Ebrahimi     uint32_t                                    regionCount,
1683*b7893ccfSSadaf Ebrahimi     const VkImageBlit*                          pRegions,
1684*b7893ccfSSadaf Ebrahimi     VkFilter                                    filter);
1685*b7893ccfSSadaf Ebrahimi 
1686*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdBlitImage(
1687*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1688*b7893ccfSSadaf Ebrahimi     VkImage                                     srcImage,
1689*b7893ccfSSadaf Ebrahimi     VkImageLayout                               srcImageLayout,
1690*b7893ccfSSadaf Ebrahimi     VkImage                                     dstImage,
1691*b7893ccfSSadaf Ebrahimi     VkImageLayout                               dstImageLayout,
1692*b7893ccfSSadaf Ebrahimi     uint32_t                                    regionCount,
1693*b7893ccfSSadaf Ebrahimi     const VkImageBlit*                          pRegions,
1694*b7893ccfSSadaf Ebrahimi     VkFilter                                    filter);
1695*b7893ccfSSadaf Ebrahimi 
1696*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdCopyBufferToImage(
1697*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1698*b7893ccfSSadaf Ebrahimi     VkBuffer                                    srcBuffer,
1699*b7893ccfSSadaf Ebrahimi     VkImage                                     dstImage,
1700*b7893ccfSSadaf Ebrahimi     VkImageLayout                               dstImageLayout,
1701*b7893ccfSSadaf Ebrahimi     uint32_t                                    regionCount,
1702*b7893ccfSSadaf Ebrahimi     const VkBufferImageCopy*                    pRegions);
1703*b7893ccfSSadaf Ebrahimi 
1704*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdCopyBufferToImage(
1705*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1706*b7893ccfSSadaf Ebrahimi     VkBuffer                                    srcBuffer,
1707*b7893ccfSSadaf Ebrahimi     VkImage                                     dstImage,
1708*b7893ccfSSadaf Ebrahimi     VkImageLayout                               dstImageLayout,
1709*b7893ccfSSadaf Ebrahimi     uint32_t                                    regionCount,
1710*b7893ccfSSadaf Ebrahimi     const VkBufferImageCopy*                    pRegions);
1711*b7893ccfSSadaf Ebrahimi 
1712*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdCopyImageToBuffer(
1713*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1714*b7893ccfSSadaf Ebrahimi     VkImage                                     srcImage,
1715*b7893ccfSSadaf Ebrahimi     VkImageLayout                               srcImageLayout,
1716*b7893ccfSSadaf Ebrahimi     VkBuffer                                    dstBuffer,
1717*b7893ccfSSadaf Ebrahimi     uint32_t                                    regionCount,
1718*b7893ccfSSadaf Ebrahimi     const VkBufferImageCopy*                    pRegions);
1719*b7893ccfSSadaf Ebrahimi 
1720*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdCopyImageToBuffer(
1721*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1722*b7893ccfSSadaf Ebrahimi     VkImage                                     srcImage,
1723*b7893ccfSSadaf Ebrahimi     VkImageLayout                               srcImageLayout,
1724*b7893ccfSSadaf Ebrahimi     VkBuffer                                    dstBuffer,
1725*b7893ccfSSadaf Ebrahimi     uint32_t                                    regionCount,
1726*b7893ccfSSadaf Ebrahimi     const VkBufferImageCopy*                    pRegions);
1727*b7893ccfSSadaf Ebrahimi 
1728*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdUpdateBuffer(
1729*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1730*b7893ccfSSadaf Ebrahimi     VkBuffer                                    dstBuffer,
1731*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                dstOffset,
1732*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                dataSize,
1733*b7893ccfSSadaf Ebrahimi     const void*                                 pData);
1734*b7893ccfSSadaf Ebrahimi 
1735*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdUpdateBuffer(
1736*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1737*b7893ccfSSadaf Ebrahimi     VkBuffer                                    dstBuffer,
1738*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                dstOffset,
1739*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                dataSize,
1740*b7893ccfSSadaf Ebrahimi     const void*                                 pData);
1741*b7893ccfSSadaf Ebrahimi 
1742*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdFillBuffer(
1743*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1744*b7893ccfSSadaf Ebrahimi     VkBuffer                                    dstBuffer,
1745*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                dstOffset,
1746*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                size,
1747*b7893ccfSSadaf Ebrahimi     uint32_t                                    data);
1748*b7893ccfSSadaf Ebrahimi 
1749*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdFillBuffer(
1750*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1751*b7893ccfSSadaf Ebrahimi     VkBuffer                                    dstBuffer,
1752*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                dstOffset,
1753*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                size,
1754*b7893ccfSSadaf Ebrahimi     uint32_t                                    data);
1755*b7893ccfSSadaf Ebrahimi 
1756*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdClearColorImage(
1757*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1758*b7893ccfSSadaf Ebrahimi     VkImage                                     image,
1759*b7893ccfSSadaf Ebrahimi     VkImageLayout                               imageLayout,
1760*b7893ccfSSadaf Ebrahimi     const VkClearColorValue*                    pColor,
1761*b7893ccfSSadaf Ebrahimi     uint32_t                                    rangeCount,
1762*b7893ccfSSadaf Ebrahimi     const VkImageSubresourceRange*              pRanges);
1763*b7893ccfSSadaf Ebrahimi 
1764*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdClearColorImage(
1765*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1766*b7893ccfSSadaf Ebrahimi     VkImage                                     image,
1767*b7893ccfSSadaf Ebrahimi     VkImageLayout                               imageLayout,
1768*b7893ccfSSadaf Ebrahimi     const VkClearColorValue*                    pColor,
1769*b7893ccfSSadaf Ebrahimi     uint32_t                                    rangeCount,
1770*b7893ccfSSadaf Ebrahimi     const VkImageSubresourceRange*              pRanges);
1771*b7893ccfSSadaf Ebrahimi 
1772*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdClearDepthStencilImage(
1773*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1774*b7893ccfSSadaf Ebrahimi     VkImage                                     image,
1775*b7893ccfSSadaf Ebrahimi     VkImageLayout                               imageLayout,
1776*b7893ccfSSadaf Ebrahimi     const VkClearDepthStencilValue*             pDepthStencil,
1777*b7893ccfSSadaf Ebrahimi     uint32_t                                    rangeCount,
1778*b7893ccfSSadaf Ebrahimi     const VkImageSubresourceRange*              pRanges);
1779*b7893ccfSSadaf Ebrahimi 
1780*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdClearDepthStencilImage(
1781*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1782*b7893ccfSSadaf Ebrahimi     VkImage                                     image,
1783*b7893ccfSSadaf Ebrahimi     VkImageLayout                               imageLayout,
1784*b7893ccfSSadaf Ebrahimi     const VkClearDepthStencilValue*             pDepthStencil,
1785*b7893ccfSSadaf Ebrahimi     uint32_t                                    rangeCount,
1786*b7893ccfSSadaf Ebrahimi     const VkImageSubresourceRange*              pRanges);
1787*b7893ccfSSadaf Ebrahimi 
1788*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdClearAttachments(
1789*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1790*b7893ccfSSadaf Ebrahimi     uint32_t                                    attachmentCount,
1791*b7893ccfSSadaf Ebrahimi     const VkClearAttachment*                    pAttachments,
1792*b7893ccfSSadaf Ebrahimi     uint32_t                                    rectCount,
1793*b7893ccfSSadaf Ebrahimi     const VkClearRect*                          pRects);
1794*b7893ccfSSadaf Ebrahimi 
1795*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdClearAttachments(
1796*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1797*b7893ccfSSadaf Ebrahimi     uint32_t                                    attachmentCount,
1798*b7893ccfSSadaf Ebrahimi     const VkClearAttachment*                    pAttachments,
1799*b7893ccfSSadaf Ebrahimi     uint32_t                                    rectCount,
1800*b7893ccfSSadaf Ebrahimi     const VkClearRect*                          pRects);
1801*b7893ccfSSadaf Ebrahimi 
1802*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdResolveImage(
1803*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1804*b7893ccfSSadaf Ebrahimi     VkImage                                     srcImage,
1805*b7893ccfSSadaf Ebrahimi     VkImageLayout                               srcImageLayout,
1806*b7893ccfSSadaf Ebrahimi     VkImage                                     dstImage,
1807*b7893ccfSSadaf Ebrahimi     VkImageLayout                               dstImageLayout,
1808*b7893ccfSSadaf Ebrahimi     uint32_t                                    regionCount,
1809*b7893ccfSSadaf Ebrahimi     const VkImageResolve*                       pRegions);
1810*b7893ccfSSadaf Ebrahimi 
1811*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdResolveImage(
1812*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1813*b7893ccfSSadaf Ebrahimi     VkImage                                     srcImage,
1814*b7893ccfSSadaf Ebrahimi     VkImageLayout                               srcImageLayout,
1815*b7893ccfSSadaf Ebrahimi     VkImage                                     dstImage,
1816*b7893ccfSSadaf Ebrahimi     VkImageLayout                               dstImageLayout,
1817*b7893ccfSSadaf Ebrahimi     uint32_t                                    regionCount,
1818*b7893ccfSSadaf Ebrahimi     const VkImageResolve*                       pRegions);
1819*b7893ccfSSadaf Ebrahimi 
1820*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetEvent(
1821*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1822*b7893ccfSSadaf Ebrahimi     VkEvent                                     event,
1823*b7893ccfSSadaf Ebrahimi     VkPipelineStageFlags                        stageMask);
1824*b7893ccfSSadaf Ebrahimi 
1825*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetEvent(
1826*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1827*b7893ccfSSadaf Ebrahimi     VkEvent                                     event,
1828*b7893ccfSSadaf Ebrahimi     VkPipelineStageFlags                        stageMask);
1829*b7893ccfSSadaf Ebrahimi 
1830*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdResetEvent(
1831*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1832*b7893ccfSSadaf Ebrahimi     VkEvent                                     event,
1833*b7893ccfSSadaf Ebrahimi     VkPipelineStageFlags                        stageMask);
1834*b7893ccfSSadaf Ebrahimi 
1835*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdResetEvent(
1836*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1837*b7893ccfSSadaf Ebrahimi     VkEvent                                     event,
1838*b7893ccfSSadaf Ebrahimi     VkPipelineStageFlags                        stageMask);
1839*b7893ccfSSadaf Ebrahimi 
1840*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdWaitEvents(
1841*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1842*b7893ccfSSadaf Ebrahimi     uint32_t                                    eventCount,
1843*b7893ccfSSadaf Ebrahimi     const VkEvent*                              pEvents,
1844*b7893ccfSSadaf Ebrahimi     VkPipelineStageFlags                        srcStageMask,
1845*b7893ccfSSadaf Ebrahimi     VkPipelineStageFlags                        dstStageMask,
1846*b7893ccfSSadaf Ebrahimi     uint32_t                                    memoryBarrierCount,
1847*b7893ccfSSadaf Ebrahimi     const VkMemoryBarrier*                      pMemoryBarriers,
1848*b7893ccfSSadaf Ebrahimi     uint32_t                                    bufferMemoryBarrierCount,
1849*b7893ccfSSadaf Ebrahimi     const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
1850*b7893ccfSSadaf Ebrahimi     uint32_t                                    imageMemoryBarrierCount,
1851*b7893ccfSSadaf Ebrahimi     const VkImageMemoryBarrier*                 pImageMemoryBarriers);
1852*b7893ccfSSadaf Ebrahimi 
1853*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdWaitEvents(
1854*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1855*b7893ccfSSadaf Ebrahimi     uint32_t                                    eventCount,
1856*b7893ccfSSadaf Ebrahimi     const VkEvent*                              pEvents,
1857*b7893ccfSSadaf Ebrahimi     VkPipelineStageFlags                        srcStageMask,
1858*b7893ccfSSadaf Ebrahimi     VkPipelineStageFlags                        dstStageMask,
1859*b7893ccfSSadaf Ebrahimi     uint32_t                                    memoryBarrierCount,
1860*b7893ccfSSadaf Ebrahimi     const VkMemoryBarrier*                      pMemoryBarriers,
1861*b7893ccfSSadaf Ebrahimi     uint32_t                                    bufferMemoryBarrierCount,
1862*b7893ccfSSadaf Ebrahimi     const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
1863*b7893ccfSSadaf Ebrahimi     uint32_t                                    imageMemoryBarrierCount,
1864*b7893ccfSSadaf Ebrahimi     const VkImageMemoryBarrier*                 pImageMemoryBarriers);
1865*b7893ccfSSadaf Ebrahimi 
1866*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdPipelineBarrier(
1867*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1868*b7893ccfSSadaf Ebrahimi     VkPipelineStageFlags                        srcStageMask,
1869*b7893ccfSSadaf Ebrahimi     VkPipelineStageFlags                        dstStageMask,
1870*b7893ccfSSadaf Ebrahimi     VkDependencyFlags                           dependencyFlags,
1871*b7893ccfSSadaf Ebrahimi     uint32_t                                    memoryBarrierCount,
1872*b7893ccfSSadaf Ebrahimi     const VkMemoryBarrier*                      pMemoryBarriers,
1873*b7893ccfSSadaf Ebrahimi     uint32_t                                    bufferMemoryBarrierCount,
1874*b7893ccfSSadaf Ebrahimi     const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
1875*b7893ccfSSadaf Ebrahimi     uint32_t                                    imageMemoryBarrierCount,
1876*b7893ccfSSadaf Ebrahimi     const VkImageMemoryBarrier*                 pImageMemoryBarriers);
1877*b7893ccfSSadaf Ebrahimi 
1878*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdPipelineBarrier(
1879*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1880*b7893ccfSSadaf Ebrahimi     VkPipelineStageFlags                        srcStageMask,
1881*b7893ccfSSadaf Ebrahimi     VkPipelineStageFlags                        dstStageMask,
1882*b7893ccfSSadaf Ebrahimi     VkDependencyFlags                           dependencyFlags,
1883*b7893ccfSSadaf Ebrahimi     uint32_t                                    memoryBarrierCount,
1884*b7893ccfSSadaf Ebrahimi     const VkMemoryBarrier*                      pMemoryBarriers,
1885*b7893ccfSSadaf Ebrahimi     uint32_t                                    bufferMemoryBarrierCount,
1886*b7893ccfSSadaf Ebrahimi     const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
1887*b7893ccfSSadaf Ebrahimi     uint32_t                                    imageMemoryBarrierCount,
1888*b7893ccfSSadaf Ebrahimi     const VkImageMemoryBarrier*                 pImageMemoryBarriers);
1889*b7893ccfSSadaf Ebrahimi 
1890*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdBeginQuery(
1891*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1892*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
1893*b7893ccfSSadaf Ebrahimi     uint32_t                                    query,
1894*b7893ccfSSadaf Ebrahimi     VkQueryControlFlags                         flags);
1895*b7893ccfSSadaf Ebrahimi 
1896*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdBeginQuery(
1897*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1898*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
1899*b7893ccfSSadaf Ebrahimi     uint32_t                                    query,
1900*b7893ccfSSadaf Ebrahimi     VkQueryControlFlags                         flags);
1901*b7893ccfSSadaf Ebrahimi 
1902*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdEndQuery(
1903*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1904*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
1905*b7893ccfSSadaf Ebrahimi     uint32_t                                    query);
1906*b7893ccfSSadaf Ebrahimi 
1907*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdEndQuery(
1908*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1909*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
1910*b7893ccfSSadaf Ebrahimi     uint32_t                                    query);
1911*b7893ccfSSadaf Ebrahimi 
1912*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdResetQueryPool(
1913*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1914*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
1915*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstQuery,
1916*b7893ccfSSadaf Ebrahimi     uint32_t                                    queryCount);
1917*b7893ccfSSadaf Ebrahimi 
1918*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdResetQueryPool(
1919*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1920*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
1921*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstQuery,
1922*b7893ccfSSadaf Ebrahimi     uint32_t                                    queryCount);
1923*b7893ccfSSadaf Ebrahimi 
1924*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdWriteTimestamp(
1925*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1926*b7893ccfSSadaf Ebrahimi     VkPipelineStageFlagBits                     pipelineStage,
1927*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
1928*b7893ccfSSadaf Ebrahimi     uint32_t                                    query);
1929*b7893ccfSSadaf Ebrahimi 
1930*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdWriteTimestamp(
1931*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1932*b7893ccfSSadaf Ebrahimi     VkPipelineStageFlagBits                     pipelineStage,
1933*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
1934*b7893ccfSSadaf Ebrahimi     uint32_t                                    query);
1935*b7893ccfSSadaf Ebrahimi 
1936*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdCopyQueryPoolResults(
1937*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1938*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
1939*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstQuery,
1940*b7893ccfSSadaf Ebrahimi     uint32_t                                    queryCount,
1941*b7893ccfSSadaf Ebrahimi     VkBuffer                                    dstBuffer,
1942*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                dstOffset,
1943*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                stride,
1944*b7893ccfSSadaf Ebrahimi     VkQueryResultFlags                          flags);
1945*b7893ccfSSadaf Ebrahimi 
1946*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdCopyQueryPoolResults(
1947*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1948*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
1949*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstQuery,
1950*b7893ccfSSadaf Ebrahimi     uint32_t                                    queryCount,
1951*b7893ccfSSadaf Ebrahimi     VkBuffer                                    dstBuffer,
1952*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                dstOffset,
1953*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                stride,
1954*b7893ccfSSadaf Ebrahimi     VkQueryResultFlags                          flags);
1955*b7893ccfSSadaf Ebrahimi 
1956*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdPushConstants(
1957*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1958*b7893ccfSSadaf Ebrahimi     VkPipelineLayout                            layout,
1959*b7893ccfSSadaf Ebrahimi     VkShaderStageFlags                          stageFlags,
1960*b7893ccfSSadaf Ebrahimi     uint32_t                                    offset,
1961*b7893ccfSSadaf Ebrahimi     uint32_t                                    size,
1962*b7893ccfSSadaf Ebrahimi     const void*                                 pValues);
1963*b7893ccfSSadaf Ebrahimi 
1964*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdPushConstants(
1965*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1966*b7893ccfSSadaf Ebrahimi     VkPipelineLayout                            layout,
1967*b7893ccfSSadaf Ebrahimi     VkShaderStageFlags                          stageFlags,
1968*b7893ccfSSadaf Ebrahimi     uint32_t                                    offset,
1969*b7893ccfSSadaf Ebrahimi     uint32_t                                    size,
1970*b7893ccfSSadaf Ebrahimi     const void*                                 pValues);
1971*b7893ccfSSadaf Ebrahimi 
1972*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdBeginRenderPass(
1973*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1974*b7893ccfSSadaf Ebrahimi     const VkRenderPassBeginInfo*                pRenderPassBegin,
1975*b7893ccfSSadaf Ebrahimi     VkSubpassContents                           contents);
1976*b7893ccfSSadaf Ebrahimi 
1977*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdBeginRenderPass(
1978*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1979*b7893ccfSSadaf Ebrahimi     const VkRenderPassBeginInfo*                pRenderPassBegin,
1980*b7893ccfSSadaf Ebrahimi     VkSubpassContents                           contents);
1981*b7893ccfSSadaf Ebrahimi 
1982*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdNextSubpass(
1983*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1984*b7893ccfSSadaf Ebrahimi     VkSubpassContents                           contents);
1985*b7893ccfSSadaf Ebrahimi 
1986*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdNextSubpass(
1987*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1988*b7893ccfSSadaf Ebrahimi     VkSubpassContents                           contents);
1989*b7893ccfSSadaf Ebrahimi 
1990*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdEndRenderPass(
1991*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer);
1992*b7893ccfSSadaf Ebrahimi 
1993*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdEndRenderPass(
1994*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer);
1995*b7893ccfSSadaf Ebrahimi 
1996*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdExecuteCommands(
1997*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
1998*b7893ccfSSadaf Ebrahimi     uint32_t                                    commandBufferCount,
1999*b7893ccfSSadaf Ebrahimi     const VkCommandBuffer*                      pCommandBuffers);
2000*b7893ccfSSadaf Ebrahimi 
2001*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdExecuteCommands(
2002*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2003*b7893ccfSSadaf Ebrahimi     uint32_t                                    commandBufferCount,
2004*b7893ccfSSadaf Ebrahimi     const VkCommandBuffer*                      pCommandBuffers);
2005*b7893ccfSSadaf Ebrahimi 
2006*b7893ccfSSadaf Ebrahimi void PreCallRecordBindBufferMemory2(
2007*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2008*b7893ccfSSadaf Ebrahimi     uint32_t                                    bindInfoCount,
2009*b7893ccfSSadaf Ebrahimi     const VkBindBufferMemoryInfo*               pBindInfos);
2010*b7893ccfSSadaf Ebrahimi 
2011*b7893ccfSSadaf Ebrahimi void PostCallRecordBindBufferMemory2(
2012*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2013*b7893ccfSSadaf Ebrahimi     uint32_t                                    bindInfoCount,
2014*b7893ccfSSadaf Ebrahimi     const VkBindBufferMemoryInfo*               pBindInfos,
2015*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2016*b7893ccfSSadaf Ebrahimi 
2017*b7893ccfSSadaf Ebrahimi void PreCallRecordBindImageMemory2(
2018*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2019*b7893ccfSSadaf Ebrahimi     uint32_t                                    bindInfoCount,
2020*b7893ccfSSadaf Ebrahimi     const VkBindImageMemoryInfo*                pBindInfos);
2021*b7893ccfSSadaf Ebrahimi 
2022*b7893ccfSSadaf Ebrahimi void PostCallRecordBindImageMemory2(
2023*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2024*b7893ccfSSadaf Ebrahimi     uint32_t                                    bindInfoCount,
2025*b7893ccfSSadaf Ebrahimi     const VkBindImageMemoryInfo*                pBindInfos,
2026*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2027*b7893ccfSSadaf Ebrahimi 
2028*b7893ccfSSadaf Ebrahimi void PreCallRecordGetDeviceGroupPeerMemoryFeatures(
2029*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2030*b7893ccfSSadaf Ebrahimi     uint32_t                                    heapIndex,
2031*b7893ccfSSadaf Ebrahimi     uint32_t                                    localDeviceIndex,
2032*b7893ccfSSadaf Ebrahimi     uint32_t                                    remoteDeviceIndex,
2033*b7893ccfSSadaf Ebrahimi     VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures);
2034*b7893ccfSSadaf Ebrahimi 
2035*b7893ccfSSadaf Ebrahimi void PostCallRecordGetDeviceGroupPeerMemoryFeatures(
2036*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2037*b7893ccfSSadaf Ebrahimi     uint32_t                                    heapIndex,
2038*b7893ccfSSadaf Ebrahimi     uint32_t                                    localDeviceIndex,
2039*b7893ccfSSadaf Ebrahimi     uint32_t                                    remoteDeviceIndex,
2040*b7893ccfSSadaf Ebrahimi     VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures);
2041*b7893ccfSSadaf Ebrahimi 
2042*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetDeviceMask(
2043*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2044*b7893ccfSSadaf Ebrahimi     uint32_t                                    deviceMask);
2045*b7893ccfSSadaf Ebrahimi 
2046*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetDeviceMask(
2047*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2048*b7893ccfSSadaf Ebrahimi     uint32_t                                    deviceMask);
2049*b7893ccfSSadaf Ebrahimi 
2050*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdDispatchBase(
2051*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2052*b7893ccfSSadaf Ebrahimi     uint32_t                                    baseGroupX,
2053*b7893ccfSSadaf Ebrahimi     uint32_t                                    baseGroupY,
2054*b7893ccfSSadaf Ebrahimi     uint32_t                                    baseGroupZ,
2055*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountX,
2056*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountY,
2057*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountZ);
2058*b7893ccfSSadaf Ebrahimi 
2059*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdDispatchBase(
2060*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2061*b7893ccfSSadaf Ebrahimi     uint32_t                                    baseGroupX,
2062*b7893ccfSSadaf Ebrahimi     uint32_t                                    baseGroupY,
2063*b7893ccfSSadaf Ebrahimi     uint32_t                                    baseGroupZ,
2064*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountX,
2065*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountY,
2066*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountZ);
2067*b7893ccfSSadaf Ebrahimi 
2068*b7893ccfSSadaf Ebrahimi void PreCallRecordEnumeratePhysicalDeviceGroups(
2069*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2070*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pPhysicalDeviceGroupCount,
2071*b7893ccfSSadaf Ebrahimi     VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties);
2072*b7893ccfSSadaf Ebrahimi 
2073*b7893ccfSSadaf Ebrahimi void PostCallRecordEnumeratePhysicalDeviceGroups(
2074*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2075*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pPhysicalDeviceGroupCount,
2076*b7893ccfSSadaf Ebrahimi     VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties,
2077*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2078*b7893ccfSSadaf Ebrahimi 
2079*b7893ccfSSadaf Ebrahimi void PreCallRecordGetImageMemoryRequirements2(
2080*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2081*b7893ccfSSadaf Ebrahimi     const VkImageMemoryRequirementsInfo2*       pInfo,
2082*b7893ccfSSadaf Ebrahimi     VkMemoryRequirements2*                      pMemoryRequirements);
2083*b7893ccfSSadaf Ebrahimi 
2084*b7893ccfSSadaf Ebrahimi void PostCallRecordGetImageMemoryRequirements2(
2085*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2086*b7893ccfSSadaf Ebrahimi     const VkImageMemoryRequirementsInfo2*       pInfo,
2087*b7893ccfSSadaf Ebrahimi     VkMemoryRequirements2*                      pMemoryRequirements);
2088*b7893ccfSSadaf Ebrahimi 
2089*b7893ccfSSadaf Ebrahimi void PreCallRecordGetBufferMemoryRequirements2(
2090*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2091*b7893ccfSSadaf Ebrahimi     const VkBufferMemoryRequirementsInfo2*      pInfo,
2092*b7893ccfSSadaf Ebrahimi     VkMemoryRequirements2*                      pMemoryRequirements);
2093*b7893ccfSSadaf Ebrahimi 
2094*b7893ccfSSadaf Ebrahimi void PostCallRecordGetBufferMemoryRequirements2(
2095*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2096*b7893ccfSSadaf Ebrahimi     const VkBufferMemoryRequirementsInfo2*      pInfo,
2097*b7893ccfSSadaf Ebrahimi     VkMemoryRequirements2*                      pMemoryRequirements);
2098*b7893ccfSSadaf Ebrahimi 
2099*b7893ccfSSadaf Ebrahimi void PreCallRecordGetImageSparseMemoryRequirements2(
2100*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2101*b7893ccfSSadaf Ebrahimi     const VkImageSparseMemoryRequirementsInfo2* pInfo,
2102*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pSparseMemoryRequirementCount,
2103*b7893ccfSSadaf Ebrahimi     VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
2104*b7893ccfSSadaf Ebrahimi 
2105*b7893ccfSSadaf Ebrahimi void PostCallRecordGetImageSparseMemoryRequirements2(
2106*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2107*b7893ccfSSadaf Ebrahimi     const VkImageSparseMemoryRequirementsInfo2* pInfo,
2108*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pSparseMemoryRequirementCount,
2109*b7893ccfSSadaf Ebrahimi     VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
2110*b7893ccfSSadaf Ebrahimi 
2111*b7893ccfSSadaf Ebrahimi void PreCallRecordTrimCommandPool(
2112*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2113*b7893ccfSSadaf Ebrahimi     VkCommandPool                               commandPool,
2114*b7893ccfSSadaf Ebrahimi     VkCommandPoolTrimFlags                      flags);
2115*b7893ccfSSadaf Ebrahimi 
2116*b7893ccfSSadaf Ebrahimi void PostCallRecordTrimCommandPool(
2117*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2118*b7893ccfSSadaf Ebrahimi     VkCommandPool                               commandPool,
2119*b7893ccfSSadaf Ebrahimi     VkCommandPoolTrimFlags                      flags);
2120*b7893ccfSSadaf Ebrahimi 
2121*b7893ccfSSadaf Ebrahimi void PreCallRecordGetDeviceQueue2(
2122*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2123*b7893ccfSSadaf Ebrahimi     const VkDeviceQueueInfo2*                   pQueueInfo,
2124*b7893ccfSSadaf Ebrahimi     VkQueue*                                    pQueue);
2125*b7893ccfSSadaf Ebrahimi 
2126*b7893ccfSSadaf Ebrahimi void PostCallRecordGetDeviceQueue2(
2127*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2128*b7893ccfSSadaf Ebrahimi     const VkDeviceQueueInfo2*                   pQueueInfo,
2129*b7893ccfSSadaf Ebrahimi     VkQueue*                                    pQueue);
2130*b7893ccfSSadaf Ebrahimi 
2131*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateSamplerYcbcrConversion(
2132*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2133*b7893ccfSSadaf Ebrahimi     const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
2134*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2135*b7893ccfSSadaf Ebrahimi     VkSamplerYcbcrConversion*                   pYcbcrConversion);
2136*b7893ccfSSadaf Ebrahimi 
2137*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateSamplerYcbcrConversion(
2138*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2139*b7893ccfSSadaf Ebrahimi     const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
2140*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2141*b7893ccfSSadaf Ebrahimi     VkSamplerYcbcrConversion*                   pYcbcrConversion,
2142*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2143*b7893ccfSSadaf Ebrahimi 
2144*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroySamplerYcbcrConversion(
2145*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2146*b7893ccfSSadaf Ebrahimi     VkSamplerYcbcrConversion                    ycbcrConversion,
2147*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
2148*b7893ccfSSadaf Ebrahimi 
2149*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroySamplerYcbcrConversion(
2150*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2151*b7893ccfSSadaf Ebrahimi     VkSamplerYcbcrConversion                    ycbcrConversion,
2152*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
2153*b7893ccfSSadaf Ebrahimi 
2154*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateDescriptorUpdateTemplate(
2155*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2156*b7893ccfSSadaf Ebrahimi     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
2157*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2158*b7893ccfSSadaf Ebrahimi     VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate);
2159*b7893ccfSSadaf Ebrahimi 
2160*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateDescriptorUpdateTemplate(
2161*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2162*b7893ccfSSadaf Ebrahimi     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
2163*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2164*b7893ccfSSadaf Ebrahimi     VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate,
2165*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2166*b7893ccfSSadaf Ebrahimi 
2167*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyDescriptorUpdateTemplate(
2168*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2169*b7893ccfSSadaf Ebrahimi     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
2170*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
2171*b7893ccfSSadaf Ebrahimi 
2172*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyDescriptorUpdateTemplate(
2173*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2174*b7893ccfSSadaf Ebrahimi     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
2175*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
2176*b7893ccfSSadaf Ebrahimi 
2177*b7893ccfSSadaf Ebrahimi void PreCallRecordUpdateDescriptorSetWithTemplate(
2178*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2179*b7893ccfSSadaf Ebrahimi     VkDescriptorSet                             descriptorSet,
2180*b7893ccfSSadaf Ebrahimi     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
2181*b7893ccfSSadaf Ebrahimi     const void*                                 pData);
2182*b7893ccfSSadaf Ebrahimi 
2183*b7893ccfSSadaf Ebrahimi void PostCallRecordUpdateDescriptorSetWithTemplate(
2184*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2185*b7893ccfSSadaf Ebrahimi     VkDescriptorSet                             descriptorSet,
2186*b7893ccfSSadaf Ebrahimi     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
2187*b7893ccfSSadaf Ebrahimi     const void*                                 pData);
2188*b7893ccfSSadaf Ebrahimi 
2189*b7893ccfSSadaf Ebrahimi void PreCallRecordGetDescriptorSetLayoutSupport(
2190*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2191*b7893ccfSSadaf Ebrahimi     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
2192*b7893ccfSSadaf Ebrahimi     VkDescriptorSetLayoutSupport*               pSupport);
2193*b7893ccfSSadaf Ebrahimi 
2194*b7893ccfSSadaf Ebrahimi void PostCallRecordGetDescriptorSetLayoutSupport(
2195*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2196*b7893ccfSSadaf Ebrahimi     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
2197*b7893ccfSSadaf Ebrahimi     VkDescriptorSetLayoutSupport*               pSupport);
2198*b7893ccfSSadaf Ebrahimi 
2199*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroySurfaceKHR(
2200*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2201*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR                                surface,
2202*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
2203*b7893ccfSSadaf Ebrahimi 
2204*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroySurfaceKHR(
2205*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2206*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR                                surface,
2207*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
2208*b7893ccfSSadaf Ebrahimi 
2209*b7893ccfSSadaf Ebrahimi void PreCallRecordGetPhysicalDeviceSurfaceSupportKHR(
2210*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2211*b7893ccfSSadaf Ebrahimi     uint32_t                                    queueFamilyIndex,
2212*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR                                surface,
2213*b7893ccfSSadaf Ebrahimi     VkBool32*                                   pSupported);
2214*b7893ccfSSadaf Ebrahimi 
2215*b7893ccfSSadaf Ebrahimi void PostCallRecordGetPhysicalDeviceSurfaceSupportKHR(
2216*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2217*b7893ccfSSadaf Ebrahimi     uint32_t                                    queueFamilyIndex,
2218*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR                                surface,
2219*b7893ccfSSadaf Ebrahimi     VkBool32*                                   pSupported,
2220*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2221*b7893ccfSSadaf Ebrahimi 
2222*b7893ccfSSadaf Ebrahimi void PreCallRecordGetPhysicalDeviceSurfaceCapabilitiesKHR(
2223*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2224*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR                                surface,
2225*b7893ccfSSadaf Ebrahimi     VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities);
2226*b7893ccfSSadaf Ebrahimi 
2227*b7893ccfSSadaf Ebrahimi void PostCallRecordGetPhysicalDeviceSurfaceCapabilitiesKHR(
2228*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2229*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR                                surface,
2230*b7893ccfSSadaf Ebrahimi     VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities,
2231*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2232*b7893ccfSSadaf Ebrahimi 
2233*b7893ccfSSadaf Ebrahimi void PreCallRecordGetPhysicalDeviceSurfaceFormatsKHR(
2234*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2235*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR                                surface,
2236*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pSurfaceFormatCount,
2237*b7893ccfSSadaf Ebrahimi     VkSurfaceFormatKHR*                         pSurfaceFormats);
2238*b7893ccfSSadaf Ebrahimi 
2239*b7893ccfSSadaf Ebrahimi void PostCallRecordGetPhysicalDeviceSurfaceFormatsKHR(
2240*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2241*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR                                surface,
2242*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pSurfaceFormatCount,
2243*b7893ccfSSadaf Ebrahimi     VkSurfaceFormatKHR*                         pSurfaceFormats,
2244*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2245*b7893ccfSSadaf Ebrahimi 
2246*b7893ccfSSadaf Ebrahimi void PreCallRecordGetPhysicalDeviceSurfacePresentModesKHR(
2247*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2248*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR                                surface,
2249*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pPresentModeCount,
2250*b7893ccfSSadaf Ebrahimi     VkPresentModeKHR*                           pPresentModes);
2251*b7893ccfSSadaf Ebrahimi 
2252*b7893ccfSSadaf Ebrahimi void PostCallRecordGetPhysicalDeviceSurfacePresentModesKHR(
2253*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2254*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR                                surface,
2255*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pPresentModeCount,
2256*b7893ccfSSadaf Ebrahimi     VkPresentModeKHR*                           pPresentModes,
2257*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2258*b7893ccfSSadaf Ebrahimi 
2259*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateSwapchainKHR(
2260*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2261*b7893ccfSSadaf Ebrahimi     const VkSwapchainCreateInfoKHR*             pCreateInfo,
2262*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2263*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR*                             pSwapchain);
2264*b7893ccfSSadaf Ebrahimi 
2265*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateSwapchainKHR(
2266*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2267*b7893ccfSSadaf Ebrahimi     const VkSwapchainCreateInfoKHR*             pCreateInfo,
2268*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2269*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR*                             pSwapchain,
2270*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2271*b7893ccfSSadaf Ebrahimi 
2272*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroySwapchainKHR(
2273*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2274*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain,
2275*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
2276*b7893ccfSSadaf Ebrahimi 
2277*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroySwapchainKHR(
2278*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2279*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain,
2280*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
2281*b7893ccfSSadaf Ebrahimi 
2282*b7893ccfSSadaf Ebrahimi void PreCallRecordGetSwapchainImagesKHR(
2283*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2284*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain,
2285*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pSwapchainImageCount,
2286*b7893ccfSSadaf Ebrahimi     VkImage*                                    pSwapchainImages);
2287*b7893ccfSSadaf Ebrahimi 
2288*b7893ccfSSadaf Ebrahimi void PostCallRecordGetSwapchainImagesKHR(
2289*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2290*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain,
2291*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pSwapchainImageCount,
2292*b7893ccfSSadaf Ebrahimi     VkImage*                                    pSwapchainImages,
2293*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2294*b7893ccfSSadaf Ebrahimi 
2295*b7893ccfSSadaf Ebrahimi void PreCallRecordAcquireNextImageKHR(
2296*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2297*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain,
2298*b7893ccfSSadaf Ebrahimi     uint64_t                                    timeout,
2299*b7893ccfSSadaf Ebrahimi     VkSemaphore                                 semaphore,
2300*b7893ccfSSadaf Ebrahimi     VkFence                                     fence,
2301*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pImageIndex);
2302*b7893ccfSSadaf Ebrahimi 
2303*b7893ccfSSadaf Ebrahimi void PostCallRecordAcquireNextImageKHR(
2304*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2305*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain,
2306*b7893ccfSSadaf Ebrahimi     uint64_t                                    timeout,
2307*b7893ccfSSadaf Ebrahimi     VkSemaphore                                 semaphore,
2308*b7893ccfSSadaf Ebrahimi     VkFence                                     fence,
2309*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pImageIndex,
2310*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2311*b7893ccfSSadaf Ebrahimi 
2312*b7893ccfSSadaf Ebrahimi void PreCallRecordGetDeviceGroupPresentCapabilitiesKHR(
2313*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2314*b7893ccfSSadaf Ebrahimi     VkDeviceGroupPresentCapabilitiesKHR*        pDeviceGroupPresentCapabilities);
2315*b7893ccfSSadaf Ebrahimi 
2316*b7893ccfSSadaf Ebrahimi void PostCallRecordGetDeviceGroupPresentCapabilitiesKHR(
2317*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2318*b7893ccfSSadaf Ebrahimi     VkDeviceGroupPresentCapabilitiesKHR*        pDeviceGroupPresentCapabilities,
2319*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2320*b7893ccfSSadaf Ebrahimi 
2321*b7893ccfSSadaf Ebrahimi void PreCallRecordGetDeviceGroupSurfacePresentModesKHR(
2322*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2323*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR                                surface,
2324*b7893ccfSSadaf Ebrahimi     VkDeviceGroupPresentModeFlagsKHR*           pModes);
2325*b7893ccfSSadaf Ebrahimi 
2326*b7893ccfSSadaf Ebrahimi void PostCallRecordGetDeviceGroupSurfacePresentModesKHR(
2327*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2328*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR                                surface,
2329*b7893ccfSSadaf Ebrahimi     VkDeviceGroupPresentModeFlagsKHR*           pModes,
2330*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2331*b7893ccfSSadaf Ebrahimi 
2332*b7893ccfSSadaf Ebrahimi void PreCallRecordGetPhysicalDevicePresentRectanglesKHR(
2333*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2334*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR                                surface,
2335*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pRectCount,
2336*b7893ccfSSadaf Ebrahimi     VkRect2D*                                   pRects);
2337*b7893ccfSSadaf Ebrahimi 
2338*b7893ccfSSadaf Ebrahimi void PostCallRecordGetPhysicalDevicePresentRectanglesKHR(
2339*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2340*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR                                surface,
2341*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pRectCount,
2342*b7893ccfSSadaf Ebrahimi     VkRect2D*                                   pRects,
2343*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2344*b7893ccfSSadaf Ebrahimi 
2345*b7893ccfSSadaf Ebrahimi void PreCallRecordAcquireNextImage2KHR(
2346*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2347*b7893ccfSSadaf Ebrahimi     const VkAcquireNextImageInfoKHR*            pAcquireInfo,
2348*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pImageIndex);
2349*b7893ccfSSadaf Ebrahimi 
2350*b7893ccfSSadaf Ebrahimi void PostCallRecordAcquireNextImage2KHR(
2351*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2352*b7893ccfSSadaf Ebrahimi     const VkAcquireNextImageInfoKHR*            pAcquireInfo,
2353*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pImageIndex,
2354*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2355*b7893ccfSSadaf Ebrahimi 
2356*b7893ccfSSadaf Ebrahimi void PreCallRecordGetDisplayPlaneSupportedDisplaysKHR(
2357*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2358*b7893ccfSSadaf Ebrahimi     uint32_t                                    planeIndex,
2359*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pDisplayCount,
2360*b7893ccfSSadaf Ebrahimi     VkDisplayKHR*                               pDisplays);
2361*b7893ccfSSadaf Ebrahimi 
2362*b7893ccfSSadaf Ebrahimi void PostCallRecordGetDisplayPlaneSupportedDisplaysKHR(
2363*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2364*b7893ccfSSadaf Ebrahimi     uint32_t                                    planeIndex,
2365*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pDisplayCount,
2366*b7893ccfSSadaf Ebrahimi     VkDisplayKHR*                               pDisplays,
2367*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2368*b7893ccfSSadaf Ebrahimi 
2369*b7893ccfSSadaf Ebrahimi void PreCallRecordGetDisplayModePropertiesKHR(
2370*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2371*b7893ccfSSadaf Ebrahimi     VkDisplayKHR                                display,
2372*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pPropertyCount,
2373*b7893ccfSSadaf Ebrahimi     VkDisplayModePropertiesKHR*                 pProperties);
2374*b7893ccfSSadaf Ebrahimi 
2375*b7893ccfSSadaf Ebrahimi void PostCallRecordGetDisplayModePropertiesKHR(
2376*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2377*b7893ccfSSadaf Ebrahimi     VkDisplayKHR                                display,
2378*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pPropertyCount,
2379*b7893ccfSSadaf Ebrahimi     VkDisplayModePropertiesKHR*                 pProperties,
2380*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2381*b7893ccfSSadaf Ebrahimi 
2382*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateDisplayModeKHR(
2383*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2384*b7893ccfSSadaf Ebrahimi     VkDisplayKHR                                display,
2385*b7893ccfSSadaf Ebrahimi     const VkDisplayModeCreateInfoKHR*           pCreateInfo,
2386*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2387*b7893ccfSSadaf Ebrahimi     VkDisplayModeKHR*                           pMode);
2388*b7893ccfSSadaf Ebrahimi 
2389*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateDisplayModeKHR(
2390*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2391*b7893ccfSSadaf Ebrahimi     VkDisplayKHR                                display,
2392*b7893ccfSSadaf Ebrahimi     const VkDisplayModeCreateInfoKHR*           pCreateInfo,
2393*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2394*b7893ccfSSadaf Ebrahimi     VkDisplayModeKHR*                           pMode,
2395*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2396*b7893ccfSSadaf Ebrahimi 
2397*b7893ccfSSadaf Ebrahimi void PreCallRecordGetDisplayPlaneCapabilitiesKHR(
2398*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2399*b7893ccfSSadaf Ebrahimi     VkDisplayModeKHR                            mode,
2400*b7893ccfSSadaf Ebrahimi     uint32_t                                    planeIndex,
2401*b7893ccfSSadaf Ebrahimi     VkDisplayPlaneCapabilitiesKHR*              pCapabilities);
2402*b7893ccfSSadaf Ebrahimi 
2403*b7893ccfSSadaf Ebrahimi void PostCallRecordGetDisplayPlaneCapabilitiesKHR(
2404*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2405*b7893ccfSSadaf Ebrahimi     VkDisplayModeKHR                            mode,
2406*b7893ccfSSadaf Ebrahimi     uint32_t                                    planeIndex,
2407*b7893ccfSSadaf Ebrahimi     VkDisplayPlaneCapabilitiesKHR*              pCapabilities,
2408*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2409*b7893ccfSSadaf Ebrahimi 
2410*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateDisplayPlaneSurfaceKHR(
2411*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2412*b7893ccfSSadaf Ebrahimi     const VkDisplaySurfaceCreateInfoKHR*        pCreateInfo,
2413*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2414*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface);
2415*b7893ccfSSadaf Ebrahimi 
2416*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateDisplayPlaneSurfaceKHR(
2417*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2418*b7893ccfSSadaf Ebrahimi     const VkDisplaySurfaceCreateInfoKHR*        pCreateInfo,
2419*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2420*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface,
2421*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2422*b7893ccfSSadaf Ebrahimi 
2423*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateSharedSwapchainsKHR(
2424*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2425*b7893ccfSSadaf Ebrahimi     uint32_t                                    swapchainCount,
2426*b7893ccfSSadaf Ebrahimi     const VkSwapchainCreateInfoKHR*             pCreateInfos,
2427*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2428*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR*                             pSwapchains);
2429*b7893ccfSSadaf Ebrahimi 
2430*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateSharedSwapchainsKHR(
2431*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2432*b7893ccfSSadaf Ebrahimi     uint32_t                                    swapchainCount,
2433*b7893ccfSSadaf Ebrahimi     const VkSwapchainCreateInfoKHR*             pCreateInfos,
2434*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2435*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR*                             pSwapchains,
2436*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2437*b7893ccfSSadaf Ebrahimi 
2438*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XLIB_KHR
2439*b7893ccfSSadaf Ebrahimi 
2440*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateXlibSurfaceKHR(
2441*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2442*b7893ccfSSadaf Ebrahimi     const VkXlibSurfaceCreateInfoKHR*           pCreateInfo,
2443*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2444*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface);
2445*b7893ccfSSadaf Ebrahimi 
2446*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateXlibSurfaceKHR(
2447*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2448*b7893ccfSSadaf Ebrahimi     const VkXlibSurfaceCreateInfoKHR*           pCreateInfo,
2449*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2450*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface,
2451*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2452*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_XLIB_KHR
2453*b7893ccfSSadaf Ebrahimi 
2454*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XCB_KHR
2455*b7893ccfSSadaf Ebrahimi 
2456*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateXcbSurfaceKHR(
2457*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2458*b7893ccfSSadaf Ebrahimi     const VkXcbSurfaceCreateInfoKHR*            pCreateInfo,
2459*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2460*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface);
2461*b7893ccfSSadaf Ebrahimi 
2462*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateXcbSurfaceKHR(
2463*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2464*b7893ccfSSadaf Ebrahimi     const VkXcbSurfaceCreateInfoKHR*            pCreateInfo,
2465*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2466*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface,
2467*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2468*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_XCB_KHR
2469*b7893ccfSSadaf Ebrahimi 
2470*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WAYLAND_KHR
2471*b7893ccfSSadaf Ebrahimi 
2472*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateWaylandSurfaceKHR(
2473*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2474*b7893ccfSSadaf Ebrahimi     const VkWaylandSurfaceCreateInfoKHR*        pCreateInfo,
2475*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2476*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface);
2477*b7893ccfSSadaf Ebrahimi 
2478*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateWaylandSurfaceKHR(
2479*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2480*b7893ccfSSadaf Ebrahimi     const VkWaylandSurfaceCreateInfoKHR*        pCreateInfo,
2481*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2482*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface,
2483*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2484*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WAYLAND_KHR
2485*b7893ccfSSadaf Ebrahimi 
2486*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_ANDROID_KHR
2487*b7893ccfSSadaf Ebrahimi 
2488*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateAndroidSurfaceKHR(
2489*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2490*b7893ccfSSadaf Ebrahimi     const VkAndroidSurfaceCreateInfoKHR*        pCreateInfo,
2491*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2492*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface);
2493*b7893ccfSSadaf Ebrahimi 
2494*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateAndroidSurfaceKHR(
2495*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2496*b7893ccfSSadaf Ebrahimi     const VkAndroidSurfaceCreateInfoKHR*        pCreateInfo,
2497*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2498*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface,
2499*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2500*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_ANDROID_KHR
2501*b7893ccfSSadaf Ebrahimi 
2502*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
2503*b7893ccfSSadaf Ebrahimi 
2504*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateWin32SurfaceKHR(
2505*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2506*b7893ccfSSadaf Ebrahimi     const VkWin32SurfaceCreateInfoKHR*          pCreateInfo,
2507*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2508*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface);
2509*b7893ccfSSadaf Ebrahimi 
2510*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateWin32SurfaceKHR(
2511*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2512*b7893ccfSSadaf Ebrahimi     const VkWin32SurfaceCreateInfoKHR*          pCreateInfo,
2513*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2514*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface,
2515*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2516*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
2517*b7893ccfSSadaf Ebrahimi 
2518*b7893ccfSSadaf Ebrahimi void PreCallRecordGetDeviceGroupPeerMemoryFeaturesKHR(
2519*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2520*b7893ccfSSadaf Ebrahimi     uint32_t                                    heapIndex,
2521*b7893ccfSSadaf Ebrahimi     uint32_t                                    localDeviceIndex,
2522*b7893ccfSSadaf Ebrahimi     uint32_t                                    remoteDeviceIndex,
2523*b7893ccfSSadaf Ebrahimi     VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures);
2524*b7893ccfSSadaf Ebrahimi 
2525*b7893ccfSSadaf Ebrahimi void PostCallRecordGetDeviceGroupPeerMemoryFeaturesKHR(
2526*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2527*b7893ccfSSadaf Ebrahimi     uint32_t                                    heapIndex,
2528*b7893ccfSSadaf Ebrahimi     uint32_t                                    localDeviceIndex,
2529*b7893ccfSSadaf Ebrahimi     uint32_t                                    remoteDeviceIndex,
2530*b7893ccfSSadaf Ebrahimi     VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures);
2531*b7893ccfSSadaf Ebrahimi 
2532*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetDeviceMaskKHR(
2533*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2534*b7893ccfSSadaf Ebrahimi     uint32_t                                    deviceMask);
2535*b7893ccfSSadaf Ebrahimi 
2536*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetDeviceMaskKHR(
2537*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2538*b7893ccfSSadaf Ebrahimi     uint32_t                                    deviceMask);
2539*b7893ccfSSadaf Ebrahimi 
2540*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdDispatchBaseKHR(
2541*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2542*b7893ccfSSadaf Ebrahimi     uint32_t                                    baseGroupX,
2543*b7893ccfSSadaf Ebrahimi     uint32_t                                    baseGroupY,
2544*b7893ccfSSadaf Ebrahimi     uint32_t                                    baseGroupZ,
2545*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountX,
2546*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountY,
2547*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountZ);
2548*b7893ccfSSadaf Ebrahimi 
2549*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdDispatchBaseKHR(
2550*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2551*b7893ccfSSadaf Ebrahimi     uint32_t                                    baseGroupX,
2552*b7893ccfSSadaf Ebrahimi     uint32_t                                    baseGroupY,
2553*b7893ccfSSadaf Ebrahimi     uint32_t                                    baseGroupZ,
2554*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountX,
2555*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountY,
2556*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCountZ);
2557*b7893ccfSSadaf Ebrahimi 
2558*b7893ccfSSadaf Ebrahimi void PreCallRecordTrimCommandPoolKHR(
2559*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2560*b7893ccfSSadaf Ebrahimi     VkCommandPool                               commandPool,
2561*b7893ccfSSadaf Ebrahimi     VkCommandPoolTrimFlags                      flags);
2562*b7893ccfSSadaf Ebrahimi 
2563*b7893ccfSSadaf Ebrahimi void PostCallRecordTrimCommandPoolKHR(
2564*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2565*b7893ccfSSadaf Ebrahimi     VkCommandPool                               commandPool,
2566*b7893ccfSSadaf Ebrahimi     VkCommandPoolTrimFlags                      flags);
2567*b7893ccfSSadaf Ebrahimi 
2568*b7893ccfSSadaf Ebrahimi void PreCallRecordEnumeratePhysicalDeviceGroupsKHR(
2569*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2570*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pPhysicalDeviceGroupCount,
2571*b7893ccfSSadaf Ebrahimi     VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties);
2572*b7893ccfSSadaf Ebrahimi 
2573*b7893ccfSSadaf Ebrahimi void PostCallRecordEnumeratePhysicalDeviceGroupsKHR(
2574*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
2575*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pPhysicalDeviceGroupCount,
2576*b7893ccfSSadaf Ebrahimi     VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties,
2577*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2578*b7893ccfSSadaf Ebrahimi 
2579*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
2580*b7893ccfSSadaf Ebrahimi 
2581*b7893ccfSSadaf Ebrahimi void PreCallRecordGetMemoryWin32HandleKHR(
2582*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2583*b7893ccfSSadaf Ebrahimi     const VkMemoryGetWin32HandleInfoKHR*        pGetWin32HandleInfo,
2584*b7893ccfSSadaf Ebrahimi     HANDLE*                                     pHandle);
2585*b7893ccfSSadaf Ebrahimi 
2586*b7893ccfSSadaf Ebrahimi void PostCallRecordGetMemoryWin32HandleKHR(
2587*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2588*b7893ccfSSadaf Ebrahimi     const VkMemoryGetWin32HandleInfoKHR*        pGetWin32HandleInfo,
2589*b7893ccfSSadaf Ebrahimi     HANDLE*                                     pHandle,
2590*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2591*b7893ccfSSadaf Ebrahimi 
2592*b7893ccfSSadaf Ebrahimi void PreCallRecordGetMemoryWin32HandlePropertiesKHR(
2593*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2594*b7893ccfSSadaf Ebrahimi     VkExternalMemoryHandleTypeFlagBits          handleType,
2595*b7893ccfSSadaf Ebrahimi     HANDLE                                      handle,
2596*b7893ccfSSadaf Ebrahimi     VkMemoryWin32HandlePropertiesKHR*           pMemoryWin32HandleProperties);
2597*b7893ccfSSadaf Ebrahimi 
2598*b7893ccfSSadaf Ebrahimi void PostCallRecordGetMemoryWin32HandlePropertiesKHR(
2599*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2600*b7893ccfSSadaf Ebrahimi     VkExternalMemoryHandleTypeFlagBits          handleType,
2601*b7893ccfSSadaf Ebrahimi     HANDLE                                      handle,
2602*b7893ccfSSadaf Ebrahimi     VkMemoryWin32HandlePropertiesKHR*           pMemoryWin32HandleProperties,
2603*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2604*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
2605*b7893ccfSSadaf Ebrahimi 
2606*b7893ccfSSadaf Ebrahimi void PreCallRecordGetMemoryFdKHR(
2607*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2608*b7893ccfSSadaf Ebrahimi     const VkMemoryGetFdInfoKHR*                 pGetFdInfo,
2609*b7893ccfSSadaf Ebrahimi     int*                                        pFd);
2610*b7893ccfSSadaf Ebrahimi 
2611*b7893ccfSSadaf Ebrahimi void PostCallRecordGetMemoryFdKHR(
2612*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2613*b7893ccfSSadaf Ebrahimi     const VkMemoryGetFdInfoKHR*                 pGetFdInfo,
2614*b7893ccfSSadaf Ebrahimi     int*                                        pFd,
2615*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2616*b7893ccfSSadaf Ebrahimi 
2617*b7893ccfSSadaf Ebrahimi void PreCallRecordGetMemoryFdPropertiesKHR(
2618*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2619*b7893ccfSSadaf Ebrahimi     VkExternalMemoryHandleTypeFlagBits          handleType,
2620*b7893ccfSSadaf Ebrahimi     int                                         fd,
2621*b7893ccfSSadaf Ebrahimi     VkMemoryFdPropertiesKHR*                    pMemoryFdProperties);
2622*b7893ccfSSadaf Ebrahimi 
2623*b7893ccfSSadaf Ebrahimi void PostCallRecordGetMemoryFdPropertiesKHR(
2624*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2625*b7893ccfSSadaf Ebrahimi     VkExternalMemoryHandleTypeFlagBits          handleType,
2626*b7893ccfSSadaf Ebrahimi     int                                         fd,
2627*b7893ccfSSadaf Ebrahimi     VkMemoryFdPropertiesKHR*                    pMemoryFdProperties,
2628*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2629*b7893ccfSSadaf Ebrahimi 
2630*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
2631*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
2632*b7893ccfSSadaf Ebrahimi 
2633*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
2634*b7893ccfSSadaf Ebrahimi 
2635*b7893ccfSSadaf Ebrahimi void PreCallRecordImportSemaphoreWin32HandleKHR(
2636*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2637*b7893ccfSSadaf Ebrahimi     const VkImportSemaphoreWin32HandleInfoKHR*  pImportSemaphoreWin32HandleInfo);
2638*b7893ccfSSadaf Ebrahimi 
2639*b7893ccfSSadaf Ebrahimi void PostCallRecordImportSemaphoreWin32HandleKHR(
2640*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2641*b7893ccfSSadaf Ebrahimi     const VkImportSemaphoreWin32HandleInfoKHR*  pImportSemaphoreWin32HandleInfo,
2642*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2643*b7893ccfSSadaf Ebrahimi 
2644*b7893ccfSSadaf Ebrahimi void PreCallRecordGetSemaphoreWin32HandleKHR(
2645*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2646*b7893ccfSSadaf Ebrahimi     const VkSemaphoreGetWin32HandleInfoKHR*     pGetWin32HandleInfo,
2647*b7893ccfSSadaf Ebrahimi     HANDLE*                                     pHandle);
2648*b7893ccfSSadaf Ebrahimi 
2649*b7893ccfSSadaf Ebrahimi void PostCallRecordGetSemaphoreWin32HandleKHR(
2650*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2651*b7893ccfSSadaf Ebrahimi     const VkSemaphoreGetWin32HandleInfoKHR*     pGetWin32HandleInfo,
2652*b7893ccfSSadaf Ebrahimi     HANDLE*                                     pHandle,
2653*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2654*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
2655*b7893ccfSSadaf Ebrahimi 
2656*b7893ccfSSadaf Ebrahimi void PreCallRecordImportSemaphoreFdKHR(
2657*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2658*b7893ccfSSadaf Ebrahimi     const VkImportSemaphoreFdInfoKHR*           pImportSemaphoreFdInfo);
2659*b7893ccfSSadaf Ebrahimi 
2660*b7893ccfSSadaf Ebrahimi void PostCallRecordImportSemaphoreFdKHR(
2661*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2662*b7893ccfSSadaf Ebrahimi     const VkImportSemaphoreFdInfoKHR*           pImportSemaphoreFdInfo,
2663*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2664*b7893ccfSSadaf Ebrahimi 
2665*b7893ccfSSadaf Ebrahimi void PreCallRecordGetSemaphoreFdKHR(
2666*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2667*b7893ccfSSadaf Ebrahimi     const VkSemaphoreGetFdInfoKHR*              pGetFdInfo,
2668*b7893ccfSSadaf Ebrahimi     int*                                        pFd);
2669*b7893ccfSSadaf Ebrahimi 
2670*b7893ccfSSadaf Ebrahimi void PostCallRecordGetSemaphoreFdKHR(
2671*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2672*b7893ccfSSadaf Ebrahimi     const VkSemaphoreGetFdInfoKHR*              pGetFdInfo,
2673*b7893ccfSSadaf Ebrahimi     int*                                        pFd,
2674*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2675*b7893ccfSSadaf Ebrahimi 
2676*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdPushDescriptorSetKHR(
2677*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2678*b7893ccfSSadaf Ebrahimi     VkPipelineBindPoint                         pipelineBindPoint,
2679*b7893ccfSSadaf Ebrahimi     VkPipelineLayout                            layout,
2680*b7893ccfSSadaf Ebrahimi     uint32_t                                    set,
2681*b7893ccfSSadaf Ebrahimi     uint32_t                                    descriptorWriteCount,
2682*b7893ccfSSadaf Ebrahimi     const VkWriteDescriptorSet*                 pDescriptorWrites);
2683*b7893ccfSSadaf Ebrahimi 
2684*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdPushDescriptorSetKHR(
2685*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2686*b7893ccfSSadaf Ebrahimi     VkPipelineBindPoint                         pipelineBindPoint,
2687*b7893ccfSSadaf Ebrahimi     VkPipelineLayout                            layout,
2688*b7893ccfSSadaf Ebrahimi     uint32_t                                    set,
2689*b7893ccfSSadaf Ebrahimi     uint32_t                                    descriptorWriteCount,
2690*b7893ccfSSadaf Ebrahimi     const VkWriteDescriptorSet*                 pDescriptorWrites);
2691*b7893ccfSSadaf Ebrahimi 
2692*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdPushDescriptorSetWithTemplateKHR(
2693*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2694*b7893ccfSSadaf Ebrahimi     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
2695*b7893ccfSSadaf Ebrahimi     VkPipelineLayout                            layout,
2696*b7893ccfSSadaf Ebrahimi     uint32_t                                    set,
2697*b7893ccfSSadaf Ebrahimi     const void*                                 pData);
2698*b7893ccfSSadaf Ebrahimi 
2699*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdPushDescriptorSetWithTemplateKHR(
2700*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2701*b7893ccfSSadaf Ebrahimi     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
2702*b7893ccfSSadaf Ebrahimi     VkPipelineLayout                            layout,
2703*b7893ccfSSadaf Ebrahimi     uint32_t                                    set,
2704*b7893ccfSSadaf Ebrahimi     const void*                                 pData);
2705*b7893ccfSSadaf Ebrahimi 
2706*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateDescriptorUpdateTemplateKHR(
2707*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2708*b7893ccfSSadaf Ebrahimi     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
2709*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2710*b7893ccfSSadaf Ebrahimi     VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate);
2711*b7893ccfSSadaf Ebrahimi 
2712*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateDescriptorUpdateTemplateKHR(
2713*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2714*b7893ccfSSadaf Ebrahimi     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
2715*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2716*b7893ccfSSadaf Ebrahimi     VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate,
2717*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2718*b7893ccfSSadaf Ebrahimi 
2719*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyDescriptorUpdateTemplateKHR(
2720*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2721*b7893ccfSSadaf Ebrahimi     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
2722*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
2723*b7893ccfSSadaf Ebrahimi 
2724*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyDescriptorUpdateTemplateKHR(
2725*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2726*b7893ccfSSadaf Ebrahimi     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
2727*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
2728*b7893ccfSSadaf Ebrahimi 
2729*b7893ccfSSadaf Ebrahimi void PreCallRecordUpdateDescriptorSetWithTemplateKHR(
2730*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2731*b7893ccfSSadaf Ebrahimi     VkDescriptorSet                             descriptorSet,
2732*b7893ccfSSadaf Ebrahimi     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
2733*b7893ccfSSadaf Ebrahimi     const void*                                 pData);
2734*b7893ccfSSadaf Ebrahimi 
2735*b7893ccfSSadaf Ebrahimi void PostCallRecordUpdateDescriptorSetWithTemplateKHR(
2736*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2737*b7893ccfSSadaf Ebrahimi     VkDescriptorSet                             descriptorSet,
2738*b7893ccfSSadaf Ebrahimi     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
2739*b7893ccfSSadaf Ebrahimi     const void*                                 pData);
2740*b7893ccfSSadaf Ebrahimi 
2741*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateRenderPass2KHR(
2742*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2743*b7893ccfSSadaf Ebrahimi     const VkRenderPassCreateInfo2KHR*           pCreateInfo,
2744*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2745*b7893ccfSSadaf Ebrahimi     VkRenderPass*                               pRenderPass);
2746*b7893ccfSSadaf Ebrahimi 
2747*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateRenderPass2KHR(
2748*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2749*b7893ccfSSadaf Ebrahimi     const VkRenderPassCreateInfo2KHR*           pCreateInfo,
2750*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2751*b7893ccfSSadaf Ebrahimi     VkRenderPass*                               pRenderPass,
2752*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2753*b7893ccfSSadaf Ebrahimi 
2754*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdBeginRenderPass2KHR(
2755*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2756*b7893ccfSSadaf Ebrahimi     const VkRenderPassBeginInfo*                pRenderPassBegin,
2757*b7893ccfSSadaf Ebrahimi     const VkSubpassBeginInfoKHR*                pSubpassBeginInfo);
2758*b7893ccfSSadaf Ebrahimi 
2759*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdBeginRenderPass2KHR(
2760*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2761*b7893ccfSSadaf Ebrahimi     const VkRenderPassBeginInfo*                pRenderPassBegin,
2762*b7893ccfSSadaf Ebrahimi     const VkSubpassBeginInfoKHR*                pSubpassBeginInfo);
2763*b7893ccfSSadaf Ebrahimi 
2764*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdNextSubpass2KHR(
2765*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2766*b7893ccfSSadaf Ebrahimi     const VkSubpassBeginInfoKHR*                pSubpassBeginInfo,
2767*b7893ccfSSadaf Ebrahimi     const VkSubpassEndInfoKHR*                  pSubpassEndInfo);
2768*b7893ccfSSadaf Ebrahimi 
2769*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdNextSubpass2KHR(
2770*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2771*b7893ccfSSadaf Ebrahimi     const VkSubpassBeginInfoKHR*                pSubpassBeginInfo,
2772*b7893ccfSSadaf Ebrahimi     const VkSubpassEndInfoKHR*                  pSubpassEndInfo);
2773*b7893ccfSSadaf Ebrahimi 
2774*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdEndRenderPass2KHR(
2775*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2776*b7893ccfSSadaf Ebrahimi     const VkSubpassEndInfoKHR*                  pSubpassEndInfo);
2777*b7893ccfSSadaf Ebrahimi 
2778*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdEndRenderPass2KHR(
2779*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2780*b7893ccfSSadaf Ebrahimi     const VkSubpassEndInfoKHR*                  pSubpassEndInfo);
2781*b7893ccfSSadaf Ebrahimi 
2782*b7893ccfSSadaf Ebrahimi void PreCallRecordGetSwapchainStatusKHR(
2783*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2784*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain);
2785*b7893ccfSSadaf Ebrahimi 
2786*b7893ccfSSadaf Ebrahimi void PostCallRecordGetSwapchainStatusKHR(
2787*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2788*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain,
2789*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2790*b7893ccfSSadaf Ebrahimi 
2791*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
2792*b7893ccfSSadaf Ebrahimi 
2793*b7893ccfSSadaf Ebrahimi void PreCallRecordImportFenceWin32HandleKHR(
2794*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2795*b7893ccfSSadaf Ebrahimi     const VkImportFenceWin32HandleInfoKHR*      pImportFenceWin32HandleInfo);
2796*b7893ccfSSadaf Ebrahimi 
2797*b7893ccfSSadaf Ebrahimi void PostCallRecordImportFenceWin32HandleKHR(
2798*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2799*b7893ccfSSadaf Ebrahimi     const VkImportFenceWin32HandleInfoKHR*      pImportFenceWin32HandleInfo,
2800*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2801*b7893ccfSSadaf Ebrahimi 
2802*b7893ccfSSadaf Ebrahimi void PreCallRecordGetFenceWin32HandleKHR(
2803*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2804*b7893ccfSSadaf Ebrahimi     const VkFenceGetWin32HandleInfoKHR*         pGetWin32HandleInfo,
2805*b7893ccfSSadaf Ebrahimi     HANDLE*                                     pHandle);
2806*b7893ccfSSadaf Ebrahimi 
2807*b7893ccfSSadaf Ebrahimi void PostCallRecordGetFenceWin32HandleKHR(
2808*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2809*b7893ccfSSadaf Ebrahimi     const VkFenceGetWin32HandleInfoKHR*         pGetWin32HandleInfo,
2810*b7893ccfSSadaf Ebrahimi     HANDLE*                                     pHandle,
2811*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2812*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
2813*b7893ccfSSadaf Ebrahimi 
2814*b7893ccfSSadaf Ebrahimi void PreCallRecordImportFenceFdKHR(
2815*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2816*b7893ccfSSadaf Ebrahimi     const VkImportFenceFdInfoKHR*               pImportFenceFdInfo);
2817*b7893ccfSSadaf Ebrahimi 
2818*b7893ccfSSadaf Ebrahimi void PostCallRecordImportFenceFdKHR(
2819*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2820*b7893ccfSSadaf Ebrahimi     const VkImportFenceFdInfoKHR*               pImportFenceFdInfo,
2821*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2822*b7893ccfSSadaf Ebrahimi 
2823*b7893ccfSSadaf Ebrahimi void PreCallRecordGetFenceFdKHR(
2824*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2825*b7893ccfSSadaf Ebrahimi     const VkFenceGetFdInfoKHR*                  pGetFdInfo,
2826*b7893ccfSSadaf Ebrahimi     int*                                        pFd);
2827*b7893ccfSSadaf Ebrahimi 
2828*b7893ccfSSadaf Ebrahimi void PostCallRecordGetFenceFdKHR(
2829*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2830*b7893ccfSSadaf Ebrahimi     const VkFenceGetFdInfoKHR*                  pGetFdInfo,
2831*b7893ccfSSadaf Ebrahimi     int*                                        pFd,
2832*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2833*b7893ccfSSadaf Ebrahimi 
2834*b7893ccfSSadaf Ebrahimi void PreCallRecordGetDisplayModeProperties2KHR(
2835*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2836*b7893ccfSSadaf Ebrahimi     VkDisplayKHR                                display,
2837*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pPropertyCount,
2838*b7893ccfSSadaf Ebrahimi     VkDisplayModeProperties2KHR*                pProperties);
2839*b7893ccfSSadaf Ebrahimi 
2840*b7893ccfSSadaf Ebrahimi void PostCallRecordGetDisplayModeProperties2KHR(
2841*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
2842*b7893ccfSSadaf Ebrahimi     VkDisplayKHR                                display,
2843*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pPropertyCount,
2844*b7893ccfSSadaf Ebrahimi     VkDisplayModeProperties2KHR*                pProperties,
2845*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2846*b7893ccfSSadaf Ebrahimi 
2847*b7893ccfSSadaf Ebrahimi void PreCallRecordGetImageMemoryRequirements2KHR(
2848*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2849*b7893ccfSSadaf Ebrahimi     const VkImageMemoryRequirementsInfo2*       pInfo,
2850*b7893ccfSSadaf Ebrahimi     VkMemoryRequirements2*                      pMemoryRequirements);
2851*b7893ccfSSadaf Ebrahimi 
2852*b7893ccfSSadaf Ebrahimi void PostCallRecordGetImageMemoryRequirements2KHR(
2853*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2854*b7893ccfSSadaf Ebrahimi     const VkImageMemoryRequirementsInfo2*       pInfo,
2855*b7893ccfSSadaf Ebrahimi     VkMemoryRequirements2*                      pMemoryRequirements);
2856*b7893ccfSSadaf Ebrahimi 
2857*b7893ccfSSadaf Ebrahimi void PreCallRecordGetBufferMemoryRequirements2KHR(
2858*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2859*b7893ccfSSadaf Ebrahimi     const VkBufferMemoryRequirementsInfo2*      pInfo,
2860*b7893ccfSSadaf Ebrahimi     VkMemoryRequirements2*                      pMemoryRequirements);
2861*b7893ccfSSadaf Ebrahimi 
2862*b7893ccfSSadaf Ebrahimi void PostCallRecordGetBufferMemoryRequirements2KHR(
2863*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2864*b7893ccfSSadaf Ebrahimi     const VkBufferMemoryRequirementsInfo2*      pInfo,
2865*b7893ccfSSadaf Ebrahimi     VkMemoryRequirements2*                      pMemoryRequirements);
2866*b7893ccfSSadaf Ebrahimi 
2867*b7893ccfSSadaf Ebrahimi void PreCallRecordGetImageSparseMemoryRequirements2KHR(
2868*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2869*b7893ccfSSadaf Ebrahimi     const VkImageSparseMemoryRequirementsInfo2* pInfo,
2870*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pSparseMemoryRequirementCount,
2871*b7893ccfSSadaf Ebrahimi     VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
2872*b7893ccfSSadaf Ebrahimi 
2873*b7893ccfSSadaf Ebrahimi void PostCallRecordGetImageSparseMemoryRequirements2KHR(
2874*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2875*b7893ccfSSadaf Ebrahimi     const VkImageSparseMemoryRequirementsInfo2* pInfo,
2876*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pSparseMemoryRequirementCount,
2877*b7893ccfSSadaf Ebrahimi     VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
2878*b7893ccfSSadaf Ebrahimi 
2879*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateSamplerYcbcrConversionKHR(
2880*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2881*b7893ccfSSadaf Ebrahimi     const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
2882*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2883*b7893ccfSSadaf Ebrahimi     VkSamplerYcbcrConversion*                   pYcbcrConversion);
2884*b7893ccfSSadaf Ebrahimi 
2885*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateSamplerYcbcrConversionKHR(
2886*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2887*b7893ccfSSadaf Ebrahimi     const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
2888*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
2889*b7893ccfSSadaf Ebrahimi     VkSamplerYcbcrConversion*                   pYcbcrConversion,
2890*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2891*b7893ccfSSadaf Ebrahimi 
2892*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroySamplerYcbcrConversionKHR(
2893*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2894*b7893ccfSSadaf Ebrahimi     VkSamplerYcbcrConversion                    ycbcrConversion,
2895*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
2896*b7893ccfSSadaf Ebrahimi 
2897*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroySamplerYcbcrConversionKHR(
2898*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2899*b7893ccfSSadaf Ebrahimi     VkSamplerYcbcrConversion                    ycbcrConversion,
2900*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
2901*b7893ccfSSadaf Ebrahimi 
2902*b7893ccfSSadaf Ebrahimi void PreCallRecordBindBufferMemory2KHR(
2903*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2904*b7893ccfSSadaf Ebrahimi     uint32_t                                    bindInfoCount,
2905*b7893ccfSSadaf Ebrahimi     const VkBindBufferMemoryInfo*               pBindInfos);
2906*b7893ccfSSadaf Ebrahimi 
2907*b7893ccfSSadaf Ebrahimi void PostCallRecordBindBufferMemory2KHR(
2908*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2909*b7893ccfSSadaf Ebrahimi     uint32_t                                    bindInfoCount,
2910*b7893ccfSSadaf Ebrahimi     const VkBindBufferMemoryInfo*               pBindInfos,
2911*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2912*b7893ccfSSadaf Ebrahimi 
2913*b7893ccfSSadaf Ebrahimi void PreCallRecordBindImageMemory2KHR(
2914*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2915*b7893ccfSSadaf Ebrahimi     uint32_t                                    bindInfoCount,
2916*b7893ccfSSadaf Ebrahimi     const VkBindImageMemoryInfo*                pBindInfos);
2917*b7893ccfSSadaf Ebrahimi 
2918*b7893ccfSSadaf Ebrahimi void PostCallRecordBindImageMemory2KHR(
2919*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2920*b7893ccfSSadaf Ebrahimi     uint32_t                                    bindInfoCount,
2921*b7893ccfSSadaf Ebrahimi     const VkBindImageMemoryInfo*                pBindInfos,
2922*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2923*b7893ccfSSadaf Ebrahimi 
2924*b7893ccfSSadaf Ebrahimi void PreCallRecordGetDescriptorSetLayoutSupportKHR(
2925*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2926*b7893ccfSSadaf Ebrahimi     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
2927*b7893ccfSSadaf Ebrahimi     VkDescriptorSetLayoutSupport*               pSupport);
2928*b7893ccfSSadaf Ebrahimi 
2929*b7893ccfSSadaf Ebrahimi void PostCallRecordGetDescriptorSetLayoutSupportKHR(
2930*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2931*b7893ccfSSadaf Ebrahimi     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
2932*b7893ccfSSadaf Ebrahimi     VkDescriptorSetLayoutSupport*               pSupport);
2933*b7893ccfSSadaf Ebrahimi 
2934*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdDrawIndirectCountKHR(
2935*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2936*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
2937*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
2938*b7893ccfSSadaf Ebrahimi     VkBuffer                                    countBuffer,
2939*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                countBufferOffset,
2940*b7893ccfSSadaf Ebrahimi     uint32_t                                    maxDrawCount,
2941*b7893ccfSSadaf Ebrahimi     uint32_t                                    stride);
2942*b7893ccfSSadaf Ebrahimi 
2943*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdDrawIndirectCountKHR(
2944*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2945*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
2946*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
2947*b7893ccfSSadaf Ebrahimi     VkBuffer                                    countBuffer,
2948*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                countBufferOffset,
2949*b7893ccfSSadaf Ebrahimi     uint32_t                                    maxDrawCount,
2950*b7893ccfSSadaf Ebrahimi     uint32_t                                    stride);
2951*b7893ccfSSadaf Ebrahimi 
2952*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdDrawIndexedIndirectCountKHR(
2953*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2954*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
2955*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
2956*b7893ccfSSadaf Ebrahimi     VkBuffer                                    countBuffer,
2957*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                countBufferOffset,
2958*b7893ccfSSadaf Ebrahimi     uint32_t                                    maxDrawCount,
2959*b7893ccfSSadaf Ebrahimi     uint32_t                                    stride);
2960*b7893ccfSSadaf Ebrahimi 
2961*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdDrawIndexedIndirectCountKHR(
2962*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
2963*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
2964*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
2965*b7893ccfSSadaf Ebrahimi     VkBuffer                                    countBuffer,
2966*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                countBufferOffset,
2967*b7893ccfSSadaf Ebrahimi     uint32_t                                    maxDrawCount,
2968*b7893ccfSSadaf Ebrahimi     uint32_t                                    stride);
2969*b7893ccfSSadaf Ebrahimi 
2970*b7893ccfSSadaf Ebrahimi void PreCallRecordGetPipelineExecutablePropertiesKHR(
2971*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2972*b7893ccfSSadaf Ebrahimi     const VkPipelineInfoKHR*                    pPipelineInfo,
2973*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pExecutableCount,
2974*b7893ccfSSadaf Ebrahimi     VkPipelineExecutablePropertiesKHR*          pProperties);
2975*b7893ccfSSadaf Ebrahimi 
2976*b7893ccfSSadaf Ebrahimi void PostCallRecordGetPipelineExecutablePropertiesKHR(
2977*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2978*b7893ccfSSadaf Ebrahimi     const VkPipelineInfoKHR*                    pPipelineInfo,
2979*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pExecutableCount,
2980*b7893ccfSSadaf Ebrahimi     VkPipelineExecutablePropertiesKHR*          pProperties,
2981*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2982*b7893ccfSSadaf Ebrahimi 
2983*b7893ccfSSadaf Ebrahimi void PreCallRecordGetPipelineExecutableStatisticsKHR(
2984*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2985*b7893ccfSSadaf Ebrahimi     const VkPipelineExecutableInfoKHR*          pExecutableInfo,
2986*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pStatisticCount,
2987*b7893ccfSSadaf Ebrahimi     VkPipelineExecutableStatisticKHR*           pStatistics);
2988*b7893ccfSSadaf Ebrahimi 
2989*b7893ccfSSadaf Ebrahimi void PostCallRecordGetPipelineExecutableStatisticsKHR(
2990*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2991*b7893ccfSSadaf Ebrahimi     const VkPipelineExecutableInfoKHR*          pExecutableInfo,
2992*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pStatisticCount,
2993*b7893ccfSSadaf Ebrahimi     VkPipelineExecutableStatisticKHR*           pStatistics,
2994*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
2995*b7893ccfSSadaf Ebrahimi 
2996*b7893ccfSSadaf Ebrahimi void PreCallRecordGetPipelineExecutableInternalRepresentationsKHR(
2997*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
2998*b7893ccfSSadaf Ebrahimi     const VkPipelineExecutableInfoKHR*          pExecutableInfo,
2999*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pInternalRepresentationCount,
3000*b7893ccfSSadaf Ebrahimi     VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);
3001*b7893ccfSSadaf Ebrahimi 
3002*b7893ccfSSadaf Ebrahimi void PostCallRecordGetPipelineExecutableInternalRepresentationsKHR(
3003*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3004*b7893ccfSSadaf Ebrahimi     const VkPipelineExecutableInfoKHR*          pExecutableInfo,
3005*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pInternalRepresentationCount,
3006*b7893ccfSSadaf Ebrahimi     VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations,
3007*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3008*b7893ccfSSadaf Ebrahimi 
3009*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateDebugReportCallbackEXT(
3010*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3011*b7893ccfSSadaf Ebrahimi     const VkDebugReportCallbackCreateInfoEXT*   pCreateInfo,
3012*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3013*b7893ccfSSadaf Ebrahimi     VkDebugReportCallbackEXT*                   pCallback);
3014*b7893ccfSSadaf Ebrahimi 
3015*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateDebugReportCallbackEXT(
3016*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3017*b7893ccfSSadaf Ebrahimi     const VkDebugReportCallbackCreateInfoEXT*   pCreateInfo,
3018*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3019*b7893ccfSSadaf Ebrahimi     VkDebugReportCallbackEXT*                   pCallback,
3020*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3021*b7893ccfSSadaf Ebrahimi 
3022*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyDebugReportCallbackEXT(
3023*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3024*b7893ccfSSadaf Ebrahimi     VkDebugReportCallbackEXT                    callback,
3025*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
3026*b7893ccfSSadaf Ebrahimi 
3027*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyDebugReportCallbackEXT(
3028*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3029*b7893ccfSSadaf Ebrahimi     VkDebugReportCallbackEXT                    callback,
3030*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
3031*b7893ccfSSadaf Ebrahimi 
3032*b7893ccfSSadaf Ebrahimi void PreCallRecordDebugReportMessageEXT(
3033*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3034*b7893ccfSSadaf Ebrahimi     VkDebugReportFlagsEXT                       flags,
3035*b7893ccfSSadaf Ebrahimi     VkDebugReportObjectTypeEXT                  objectType,
3036*b7893ccfSSadaf Ebrahimi     uint64_t                                    object,
3037*b7893ccfSSadaf Ebrahimi     size_t                                      location,
3038*b7893ccfSSadaf Ebrahimi     int32_t                                     messageCode,
3039*b7893ccfSSadaf Ebrahimi     const char*                                 pLayerPrefix,
3040*b7893ccfSSadaf Ebrahimi     const char*                                 pMessage);
3041*b7893ccfSSadaf Ebrahimi 
3042*b7893ccfSSadaf Ebrahimi void PostCallRecordDebugReportMessageEXT(
3043*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3044*b7893ccfSSadaf Ebrahimi     VkDebugReportFlagsEXT                       flags,
3045*b7893ccfSSadaf Ebrahimi     VkDebugReportObjectTypeEXT                  objectType,
3046*b7893ccfSSadaf Ebrahimi     uint64_t                                    object,
3047*b7893ccfSSadaf Ebrahimi     size_t                                      location,
3048*b7893ccfSSadaf Ebrahimi     int32_t                                     messageCode,
3049*b7893ccfSSadaf Ebrahimi     const char*                                 pLayerPrefix,
3050*b7893ccfSSadaf Ebrahimi     const char*                                 pMessage);
3051*b7893ccfSSadaf Ebrahimi // TODO - not wrapping EXT function vkDebugMarkerSetObjectTagEXT
3052*b7893ccfSSadaf Ebrahimi // TODO - not wrapping EXT function vkDebugMarkerSetObjectNameEXT
3053*b7893ccfSSadaf Ebrahimi // TODO - not wrapping EXT function vkCmdDebugMarkerBeginEXT
3054*b7893ccfSSadaf Ebrahimi // TODO - not wrapping EXT function vkCmdDebugMarkerEndEXT
3055*b7893ccfSSadaf Ebrahimi // TODO - not wrapping EXT function vkCmdDebugMarkerInsertEXT
3056*b7893ccfSSadaf Ebrahimi 
3057*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdBindTransformFeedbackBuffersEXT(
3058*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3059*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstBinding,
3060*b7893ccfSSadaf Ebrahimi     uint32_t                                    bindingCount,
3061*b7893ccfSSadaf Ebrahimi     const VkBuffer*                             pBuffers,
3062*b7893ccfSSadaf Ebrahimi     const VkDeviceSize*                         pOffsets,
3063*b7893ccfSSadaf Ebrahimi     const VkDeviceSize*                         pSizes);
3064*b7893ccfSSadaf Ebrahimi 
3065*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdBindTransformFeedbackBuffersEXT(
3066*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3067*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstBinding,
3068*b7893ccfSSadaf Ebrahimi     uint32_t                                    bindingCount,
3069*b7893ccfSSadaf Ebrahimi     const VkBuffer*                             pBuffers,
3070*b7893ccfSSadaf Ebrahimi     const VkDeviceSize*                         pOffsets,
3071*b7893ccfSSadaf Ebrahimi     const VkDeviceSize*                         pSizes);
3072*b7893ccfSSadaf Ebrahimi 
3073*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdBeginTransformFeedbackEXT(
3074*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3075*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstCounterBuffer,
3076*b7893ccfSSadaf Ebrahimi     uint32_t                                    counterBufferCount,
3077*b7893ccfSSadaf Ebrahimi     const VkBuffer*                             pCounterBuffers,
3078*b7893ccfSSadaf Ebrahimi     const VkDeviceSize*                         pCounterBufferOffsets);
3079*b7893ccfSSadaf Ebrahimi 
3080*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdBeginTransformFeedbackEXT(
3081*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3082*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstCounterBuffer,
3083*b7893ccfSSadaf Ebrahimi     uint32_t                                    counterBufferCount,
3084*b7893ccfSSadaf Ebrahimi     const VkBuffer*                             pCounterBuffers,
3085*b7893ccfSSadaf Ebrahimi     const VkDeviceSize*                         pCounterBufferOffsets);
3086*b7893ccfSSadaf Ebrahimi 
3087*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdEndTransformFeedbackEXT(
3088*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3089*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstCounterBuffer,
3090*b7893ccfSSadaf Ebrahimi     uint32_t                                    counterBufferCount,
3091*b7893ccfSSadaf Ebrahimi     const VkBuffer*                             pCounterBuffers,
3092*b7893ccfSSadaf Ebrahimi     const VkDeviceSize*                         pCounterBufferOffsets);
3093*b7893ccfSSadaf Ebrahimi 
3094*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdEndTransformFeedbackEXT(
3095*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3096*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstCounterBuffer,
3097*b7893ccfSSadaf Ebrahimi     uint32_t                                    counterBufferCount,
3098*b7893ccfSSadaf Ebrahimi     const VkBuffer*                             pCounterBuffers,
3099*b7893ccfSSadaf Ebrahimi     const VkDeviceSize*                         pCounterBufferOffsets);
3100*b7893ccfSSadaf Ebrahimi 
3101*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdBeginQueryIndexedEXT(
3102*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3103*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
3104*b7893ccfSSadaf Ebrahimi     uint32_t                                    query,
3105*b7893ccfSSadaf Ebrahimi     VkQueryControlFlags                         flags,
3106*b7893ccfSSadaf Ebrahimi     uint32_t                                    index);
3107*b7893ccfSSadaf Ebrahimi 
3108*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdBeginQueryIndexedEXT(
3109*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3110*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
3111*b7893ccfSSadaf Ebrahimi     uint32_t                                    query,
3112*b7893ccfSSadaf Ebrahimi     VkQueryControlFlags                         flags,
3113*b7893ccfSSadaf Ebrahimi     uint32_t                                    index);
3114*b7893ccfSSadaf Ebrahimi 
3115*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdEndQueryIndexedEXT(
3116*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3117*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
3118*b7893ccfSSadaf Ebrahimi     uint32_t                                    query,
3119*b7893ccfSSadaf Ebrahimi     uint32_t                                    index);
3120*b7893ccfSSadaf Ebrahimi 
3121*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdEndQueryIndexedEXT(
3122*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3123*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
3124*b7893ccfSSadaf Ebrahimi     uint32_t                                    query,
3125*b7893ccfSSadaf Ebrahimi     uint32_t                                    index);
3126*b7893ccfSSadaf Ebrahimi 
3127*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdDrawIndirectByteCountEXT(
3128*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3129*b7893ccfSSadaf Ebrahimi     uint32_t                                    instanceCount,
3130*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstInstance,
3131*b7893ccfSSadaf Ebrahimi     VkBuffer                                    counterBuffer,
3132*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                counterBufferOffset,
3133*b7893ccfSSadaf Ebrahimi     uint32_t                                    counterOffset,
3134*b7893ccfSSadaf Ebrahimi     uint32_t                                    vertexStride);
3135*b7893ccfSSadaf Ebrahimi 
3136*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdDrawIndirectByteCountEXT(
3137*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3138*b7893ccfSSadaf Ebrahimi     uint32_t                                    instanceCount,
3139*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstInstance,
3140*b7893ccfSSadaf Ebrahimi     VkBuffer                                    counterBuffer,
3141*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                counterBufferOffset,
3142*b7893ccfSSadaf Ebrahimi     uint32_t                                    counterOffset,
3143*b7893ccfSSadaf Ebrahimi     uint32_t                                    vertexStride);
3144*b7893ccfSSadaf Ebrahimi 
3145*b7893ccfSSadaf Ebrahimi void PreCallRecordGetImageViewHandleNVX(
3146*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3147*b7893ccfSSadaf Ebrahimi     const VkImageViewHandleInfoNVX*             pInfo);
3148*b7893ccfSSadaf Ebrahimi 
3149*b7893ccfSSadaf Ebrahimi void PostCallRecordGetImageViewHandleNVX(
3150*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3151*b7893ccfSSadaf Ebrahimi     const VkImageViewHandleInfoNVX*             pInfo);
3152*b7893ccfSSadaf Ebrahimi 
3153*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdDrawIndirectCountAMD(
3154*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3155*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
3156*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
3157*b7893ccfSSadaf Ebrahimi     VkBuffer                                    countBuffer,
3158*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                countBufferOffset,
3159*b7893ccfSSadaf Ebrahimi     uint32_t                                    maxDrawCount,
3160*b7893ccfSSadaf Ebrahimi     uint32_t                                    stride);
3161*b7893ccfSSadaf Ebrahimi 
3162*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdDrawIndirectCountAMD(
3163*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3164*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
3165*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
3166*b7893ccfSSadaf Ebrahimi     VkBuffer                                    countBuffer,
3167*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                countBufferOffset,
3168*b7893ccfSSadaf Ebrahimi     uint32_t                                    maxDrawCount,
3169*b7893ccfSSadaf Ebrahimi     uint32_t                                    stride);
3170*b7893ccfSSadaf Ebrahimi 
3171*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdDrawIndexedIndirectCountAMD(
3172*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3173*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
3174*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
3175*b7893ccfSSadaf Ebrahimi     VkBuffer                                    countBuffer,
3176*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                countBufferOffset,
3177*b7893ccfSSadaf Ebrahimi     uint32_t                                    maxDrawCount,
3178*b7893ccfSSadaf Ebrahimi     uint32_t                                    stride);
3179*b7893ccfSSadaf Ebrahimi 
3180*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdDrawIndexedIndirectCountAMD(
3181*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3182*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
3183*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
3184*b7893ccfSSadaf Ebrahimi     VkBuffer                                    countBuffer,
3185*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                countBufferOffset,
3186*b7893ccfSSadaf Ebrahimi     uint32_t                                    maxDrawCount,
3187*b7893ccfSSadaf Ebrahimi     uint32_t                                    stride);
3188*b7893ccfSSadaf Ebrahimi 
3189*b7893ccfSSadaf Ebrahimi void PreCallRecordGetShaderInfoAMD(
3190*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3191*b7893ccfSSadaf Ebrahimi     VkPipeline                                  pipeline,
3192*b7893ccfSSadaf Ebrahimi     VkShaderStageFlagBits                       shaderStage,
3193*b7893ccfSSadaf Ebrahimi     VkShaderInfoTypeAMD                         infoType,
3194*b7893ccfSSadaf Ebrahimi     size_t*                                     pInfoSize,
3195*b7893ccfSSadaf Ebrahimi     void*                                       pInfo);
3196*b7893ccfSSadaf Ebrahimi 
3197*b7893ccfSSadaf Ebrahimi void PostCallRecordGetShaderInfoAMD(
3198*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3199*b7893ccfSSadaf Ebrahimi     VkPipeline                                  pipeline,
3200*b7893ccfSSadaf Ebrahimi     VkShaderStageFlagBits                       shaderStage,
3201*b7893ccfSSadaf Ebrahimi     VkShaderInfoTypeAMD                         infoType,
3202*b7893ccfSSadaf Ebrahimi     size_t*                                     pInfoSize,
3203*b7893ccfSSadaf Ebrahimi     void*                                       pInfo,
3204*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3205*b7893ccfSSadaf Ebrahimi 
3206*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_GGP
3207*b7893ccfSSadaf Ebrahimi 
3208*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateStreamDescriptorSurfaceGGP(
3209*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3210*b7893ccfSSadaf Ebrahimi     const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
3211*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3212*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface);
3213*b7893ccfSSadaf Ebrahimi 
3214*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateStreamDescriptorSurfaceGGP(
3215*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3216*b7893ccfSSadaf Ebrahimi     const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
3217*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3218*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface,
3219*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3220*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_GGP
3221*b7893ccfSSadaf Ebrahimi 
3222*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
3223*b7893ccfSSadaf Ebrahimi 
3224*b7893ccfSSadaf Ebrahimi void PreCallRecordGetMemoryWin32HandleNV(
3225*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3226*b7893ccfSSadaf Ebrahimi     VkDeviceMemory                              memory,
3227*b7893ccfSSadaf Ebrahimi     VkExternalMemoryHandleTypeFlagsNV           handleType,
3228*b7893ccfSSadaf Ebrahimi     HANDLE*                                     pHandle);
3229*b7893ccfSSadaf Ebrahimi 
3230*b7893ccfSSadaf Ebrahimi void PostCallRecordGetMemoryWin32HandleNV(
3231*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3232*b7893ccfSSadaf Ebrahimi     VkDeviceMemory                              memory,
3233*b7893ccfSSadaf Ebrahimi     VkExternalMemoryHandleTypeFlagsNV           handleType,
3234*b7893ccfSSadaf Ebrahimi     HANDLE*                                     pHandle,
3235*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3236*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
3237*b7893ccfSSadaf Ebrahimi 
3238*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
3239*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
3240*b7893ccfSSadaf Ebrahimi 
3241*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_VI_NN
3242*b7893ccfSSadaf Ebrahimi 
3243*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateViSurfaceNN(
3244*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3245*b7893ccfSSadaf Ebrahimi     const VkViSurfaceCreateInfoNN*              pCreateInfo,
3246*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3247*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface);
3248*b7893ccfSSadaf Ebrahimi 
3249*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateViSurfaceNN(
3250*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3251*b7893ccfSSadaf Ebrahimi     const VkViSurfaceCreateInfoNN*              pCreateInfo,
3252*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3253*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface,
3254*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3255*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_VI_NN
3256*b7893ccfSSadaf Ebrahimi 
3257*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdBeginConditionalRenderingEXT(
3258*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3259*b7893ccfSSadaf Ebrahimi     const VkConditionalRenderingBeginInfoEXT*   pConditionalRenderingBegin);
3260*b7893ccfSSadaf Ebrahimi 
3261*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdBeginConditionalRenderingEXT(
3262*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3263*b7893ccfSSadaf Ebrahimi     const VkConditionalRenderingBeginInfoEXT*   pConditionalRenderingBegin);
3264*b7893ccfSSadaf Ebrahimi 
3265*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdEndConditionalRenderingEXT(
3266*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer);
3267*b7893ccfSSadaf Ebrahimi 
3268*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdEndConditionalRenderingEXT(
3269*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer);
3270*b7893ccfSSadaf Ebrahimi 
3271*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdProcessCommandsNVX(
3272*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3273*b7893ccfSSadaf Ebrahimi     const VkCmdProcessCommandsInfoNVX*          pProcessCommandsInfo);
3274*b7893ccfSSadaf Ebrahimi 
3275*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdProcessCommandsNVX(
3276*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3277*b7893ccfSSadaf Ebrahimi     const VkCmdProcessCommandsInfoNVX*          pProcessCommandsInfo);
3278*b7893ccfSSadaf Ebrahimi 
3279*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdReserveSpaceForCommandsNVX(
3280*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3281*b7893ccfSSadaf Ebrahimi     const VkCmdReserveSpaceForCommandsInfoNVX*  pReserveSpaceInfo);
3282*b7893ccfSSadaf Ebrahimi 
3283*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdReserveSpaceForCommandsNVX(
3284*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3285*b7893ccfSSadaf Ebrahimi     const VkCmdReserveSpaceForCommandsInfoNVX*  pReserveSpaceInfo);
3286*b7893ccfSSadaf Ebrahimi 
3287*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateIndirectCommandsLayoutNVX(
3288*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3289*b7893ccfSSadaf Ebrahimi     const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
3290*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3291*b7893ccfSSadaf Ebrahimi     VkIndirectCommandsLayoutNVX*                pIndirectCommandsLayout);
3292*b7893ccfSSadaf Ebrahimi 
3293*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateIndirectCommandsLayoutNVX(
3294*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3295*b7893ccfSSadaf Ebrahimi     const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
3296*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3297*b7893ccfSSadaf Ebrahimi     VkIndirectCommandsLayoutNVX*                pIndirectCommandsLayout,
3298*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3299*b7893ccfSSadaf Ebrahimi 
3300*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyIndirectCommandsLayoutNVX(
3301*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3302*b7893ccfSSadaf Ebrahimi     VkIndirectCommandsLayoutNVX                 indirectCommandsLayout,
3303*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
3304*b7893ccfSSadaf Ebrahimi 
3305*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyIndirectCommandsLayoutNVX(
3306*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3307*b7893ccfSSadaf Ebrahimi     VkIndirectCommandsLayoutNVX                 indirectCommandsLayout,
3308*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
3309*b7893ccfSSadaf Ebrahimi 
3310*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateObjectTableNVX(
3311*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3312*b7893ccfSSadaf Ebrahimi     const VkObjectTableCreateInfoNVX*           pCreateInfo,
3313*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3314*b7893ccfSSadaf Ebrahimi     VkObjectTableNVX*                           pObjectTable);
3315*b7893ccfSSadaf Ebrahimi 
3316*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateObjectTableNVX(
3317*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3318*b7893ccfSSadaf Ebrahimi     const VkObjectTableCreateInfoNVX*           pCreateInfo,
3319*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3320*b7893ccfSSadaf Ebrahimi     VkObjectTableNVX*                           pObjectTable,
3321*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3322*b7893ccfSSadaf Ebrahimi 
3323*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyObjectTableNVX(
3324*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3325*b7893ccfSSadaf Ebrahimi     VkObjectTableNVX                            objectTable,
3326*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
3327*b7893ccfSSadaf Ebrahimi 
3328*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyObjectTableNVX(
3329*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3330*b7893ccfSSadaf Ebrahimi     VkObjectTableNVX                            objectTable,
3331*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
3332*b7893ccfSSadaf Ebrahimi 
3333*b7893ccfSSadaf Ebrahimi void PreCallRecordRegisterObjectsNVX(
3334*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3335*b7893ccfSSadaf Ebrahimi     VkObjectTableNVX                            objectTable,
3336*b7893ccfSSadaf Ebrahimi     uint32_t                                    objectCount,
3337*b7893ccfSSadaf Ebrahimi     const VkObjectTableEntryNVX* const*         ppObjectTableEntries,
3338*b7893ccfSSadaf Ebrahimi     const uint32_t*                             pObjectIndices);
3339*b7893ccfSSadaf Ebrahimi 
3340*b7893ccfSSadaf Ebrahimi void PostCallRecordRegisterObjectsNVX(
3341*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3342*b7893ccfSSadaf Ebrahimi     VkObjectTableNVX                            objectTable,
3343*b7893ccfSSadaf Ebrahimi     uint32_t                                    objectCount,
3344*b7893ccfSSadaf Ebrahimi     const VkObjectTableEntryNVX* const*         ppObjectTableEntries,
3345*b7893ccfSSadaf Ebrahimi     const uint32_t*                             pObjectIndices,
3346*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3347*b7893ccfSSadaf Ebrahimi 
3348*b7893ccfSSadaf Ebrahimi void PreCallRecordUnregisterObjectsNVX(
3349*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3350*b7893ccfSSadaf Ebrahimi     VkObjectTableNVX                            objectTable,
3351*b7893ccfSSadaf Ebrahimi     uint32_t                                    objectCount,
3352*b7893ccfSSadaf Ebrahimi     const VkObjectEntryTypeNVX*                 pObjectEntryTypes,
3353*b7893ccfSSadaf Ebrahimi     const uint32_t*                             pObjectIndices);
3354*b7893ccfSSadaf Ebrahimi 
3355*b7893ccfSSadaf Ebrahimi void PostCallRecordUnregisterObjectsNVX(
3356*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3357*b7893ccfSSadaf Ebrahimi     VkObjectTableNVX                            objectTable,
3358*b7893ccfSSadaf Ebrahimi     uint32_t                                    objectCount,
3359*b7893ccfSSadaf Ebrahimi     const VkObjectEntryTypeNVX*                 pObjectEntryTypes,
3360*b7893ccfSSadaf Ebrahimi     const uint32_t*                             pObjectIndices,
3361*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3362*b7893ccfSSadaf Ebrahimi 
3363*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetViewportWScalingNV(
3364*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3365*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstViewport,
3366*b7893ccfSSadaf Ebrahimi     uint32_t                                    viewportCount,
3367*b7893ccfSSadaf Ebrahimi     const VkViewportWScalingNV*                 pViewportWScalings);
3368*b7893ccfSSadaf Ebrahimi 
3369*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetViewportWScalingNV(
3370*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3371*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstViewport,
3372*b7893ccfSSadaf Ebrahimi     uint32_t                                    viewportCount,
3373*b7893ccfSSadaf Ebrahimi     const VkViewportWScalingNV*                 pViewportWScalings);
3374*b7893ccfSSadaf Ebrahimi 
3375*b7893ccfSSadaf Ebrahimi void PreCallRecordReleaseDisplayEXT(
3376*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
3377*b7893ccfSSadaf Ebrahimi     VkDisplayKHR                                display);
3378*b7893ccfSSadaf Ebrahimi 
3379*b7893ccfSSadaf Ebrahimi void PostCallRecordReleaseDisplayEXT(
3380*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
3381*b7893ccfSSadaf Ebrahimi     VkDisplayKHR                                display,
3382*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3383*b7893ccfSSadaf Ebrahimi 
3384*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
3385*b7893ccfSSadaf Ebrahimi 
3386*b7893ccfSSadaf Ebrahimi void PreCallRecordAcquireXlibDisplayEXT(
3387*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
3388*b7893ccfSSadaf Ebrahimi     Display*                                    dpy,
3389*b7893ccfSSadaf Ebrahimi     VkDisplayKHR                                display);
3390*b7893ccfSSadaf Ebrahimi 
3391*b7893ccfSSadaf Ebrahimi void PostCallRecordAcquireXlibDisplayEXT(
3392*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
3393*b7893ccfSSadaf Ebrahimi     Display*                                    dpy,
3394*b7893ccfSSadaf Ebrahimi     VkDisplayKHR                                display,
3395*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3396*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
3397*b7893ccfSSadaf Ebrahimi 
3398*b7893ccfSSadaf Ebrahimi void PreCallRecordGetPhysicalDeviceSurfaceCapabilities2EXT(
3399*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
3400*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR                                surface,
3401*b7893ccfSSadaf Ebrahimi     VkSurfaceCapabilities2EXT*                  pSurfaceCapabilities);
3402*b7893ccfSSadaf Ebrahimi 
3403*b7893ccfSSadaf Ebrahimi void PostCallRecordGetPhysicalDeviceSurfaceCapabilities2EXT(
3404*b7893ccfSSadaf Ebrahimi     VkPhysicalDevice                            physicalDevice,
3405*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR                                surface,
3406*b7893ccfSSadaf Ebrahimi     VkSurfaceCapabilities2EXT*                  pSurfaceCapabilities,
3407*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3408*b7893ccfSSadaf Ebrahimi 
3409*b7893ccfSSadaf Ebrahimi void PreCallRecordDisplayPowerControlEXT(
3410*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3411*b7893ccfSSadaf Ebrahimi     VkDisplayKHR                                display,
3412*b7893ccfSSadaf Ebrahimi     const VkDisplayPowerInfoEXT*                pDisplayPowerInfo);
3413*b7893ccfSSadaf Ebrahimi 
3414*b7893ccfSSadaf Ebrahimi void PostCallRecordDisplayPowerControlEXT(
3415*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3416*b7893ccfSSadaf Ebrahimi     VkDisplayKHR                                display,
3417*b7893ccfSSadaf Ebrahimi     const VkDisplayPowerInfoEXT*                pDisplayPowerInfo,
3418*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3419*b7893ccfSSadaf Ebrahimi 
3420*b7893ccfSSadaf Ebrahimi void PreCallRecordRegisterDeviceEventEXT(
3421*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3422*b7893ccfSSadaf Ebrahimi     const VkDeviceEventInfoEXT*                 pDeviceEventInfo,
3423*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3424*b7893ccfSSadaf Ebrahimi     VkFence*                                    pFence);
3425*b7893ccfSSadaf Ebrahimi 
3426*b7893ccfSSadaf Ebrahimi void PostCallRecordRegisterDeviceEventEXT(
3427*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3428*b7893ccfSSadaf Ebrahimi     const VkDeviceEventInfoEXT*                 pDeviceEventInfo,
3429*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3430*b7893ccfSSadaf Ebrahimi     VkFence*                                    pFence,
3431*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3432*b7893ccfSSadaf Ebrahimi 
3433*b7893ccfSSadaf Ebrahimi void PreCallRecordRegisterDisplayEventEXT(
3434*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3435*b7893ccfSSadaf Ebrahimi     VkDisplayKHR                                display,
3436*b7893ccfSSadaf Ebrahimi     const VkDisplayEventInfoEXT*                pDisplayEventInfo,
3437*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3438*b7893ccfSSadaf Ebrahimi     VkFence*                                    pFence);
3439*b7893ccfSSadaf Ebrahimi 
3440*b7893ccfSSadaf Ebrahimi void PostCallRecordRegisterDisplayEventEXT(
3441*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3442*b7893ccfSSadaf Ebrahimi     VkDisplayKHR                                display,
3443*b7893ccfSSadaf Ebrahimi     const VkDisplayEventInfoEXT*                pDisplayEventInfo,
3444*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3445*b7893ccfSSadaf Ebrahimi     VkFence*                                    pFence,
3446*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3447*b7893ccfSSadaf Ebrahimi 
3448*b7893ccfSSadaf Ebrahimi void PreCallRecordGetSwapchainCounterEXT(
3449*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3450*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain,
3451*b7893ccfSSadaf Ebrahimi     VkSurfaceCounterFlagBitsEXT                 counter,
3452*b7893ccfSSadaf Ebrahimi     uint64_t*                                   pCounterValue);
3453*b7893ccfSSadaf Ebrahimi 
3454*b7893ccfSSadaf Ebrahimi void PostCallRecordGetSwapchainCounterEXT(
3455*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3456*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain,
3457*b7893ccfSSadaf Ebrahimi     VkSurfaceCounterFlagBitsEXT                 counter,
3458*b7893ccfSSadaf Ebrahimi     uint64_t*                                   pCounterValue,
3459*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3460*b7893ccfSSadaf Ebrahimi 
3461*b7893ccfSSadaf Ebrahimi void PreCallRecordGetRefreshCycleDurationGOOGLE(
3462*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3463*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain,
3464*b7893ccfSSadaf Ebrahimi     VkRefreshCycleDurationGOOGLE*               pDisplayTimingProperties);
3465*b7893ccfSSadaf Ebrahimi 
3466*b7893ccfSSadaf Ebrahimi void PostCallRecordGetRefreshCycleDurationGOOGLE(
3467*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3468*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain,
3469*b7893ccfSSadaf Ebrahimi     VkRefreshCycleDurationGOOGLE*               pDisplayTimingProperties,
3470*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3471*b7893ccfSSadaf Ebrahimi 
3472*b7893ccfSSadaf Ebrahimi void PreCallRecordGetPastPresentationTimingGOOGLE(
3473*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3474*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain,
3475*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pPresentationTimingCount,
3476*b7893ccfSSadaf Ebrahimi     VkPastPresentationTimingGOOGLE*             pPresentationTimings);
3477*b7893ccfSSadaf Ebrahimi 
3478*b7893ccfSSadaf Ebrahimi void PostCallRecordGetPastPresentationTimingGOOGLE(
3479*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3480*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain,
3481*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pPresentationTimingCount,
3482*b7893ccfSSadaf Ebrahimi     VkPastPresentationTimingGOOGLE*             pPresentationTimings,
3483*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3484*b7893ccfSSadaf Ebrahimi 
3485*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetDiscardRectangleEXT(
3486*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3487*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstDiscardRectangle,
3488*b7893ccfSSadaf Ebrahimi     uint32_t                                    discardRectangleCount,
3489*b7893ccfSSadaf Ebrahimi     const VkRect2D*                             pDiscardRectangles);
3490*b7893ccfSSadaf Ebrahimi 
3491*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetDiscardRectangleEXT(
3492*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3493*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstDiscardRectangle,
3494*b7893ccfSSadaf Ebrahimi     uint32_t                                    discardRectangleCount,
3495*b7893ccfSSadaf Ebrahimi     const VkRect2D*                             pDiscardRectangles);
3496*b7893ccfSSadaf Ebrahimi 
3497*b7893ccfSSadaf Ebrahimi void PreCallRecordSetHdrMetadataEXT(
3498*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3499*b7893ccfSSadaf Ebrahimi     uint32_t                                    swapchainCount,
3500*b7893ccfSSadaf Ebrahimi     const VkSwapchainKHR*                       pSwapchains,
3501*b7893ccfSSadaf Ebrahimi     const VkHdrMetadataEXT*                     pMetadata);
3502*b7893ccfSSadaf Ebrahimi 
3503*b7893ccfSSadaf Ebrahimi void PostCallRecordSetHdrMetadataEXT(
3504*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3505*b7893ccfSSadaf Ebrahimi     uint32_t                                    swapchainCount,
3506*b7893ccfSSadaf Ebrahimi     const VkSwapchainKHR*                       pSwapchains,
3507*b7893ccfSSadaf Ebrahimi     const VkHdrMetadataEXT*                     pMetadata);
3508*b7893ccfSSadaf Ebrahimi 
3509*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_IOS_MVK
3510*b7893ccfSSadaf Ebrahimi 
3511*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateIOSSurfaceMVK(
3512*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3513*b7893ccfSSadaf Ebrahimi     const VkIOSSurfaceCreateInfoMVK*            pCreateInfo,
3514*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3515*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface);
3516*b7893ccfSSadaf Ebrahimi 
3517*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateIOSSurfaceMVK(
3518*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3519*b7893ccfSSadaf Ebrahimi     const VkIOSSurfaceCreateInfoMVK*            pCreateInfo,
3520*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3521*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface,
3522*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3523*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_IOS_MVK
3524*b7893ccfSSadaf Ebrahimi 
3525*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_MACOS_MVK
3526*b7893ccfSSadaf Ebrahimi 
3527*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateMacOSSurfaceMVK(
3528*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3529*b7893ccfSSadaf Ebrahimi     const VkMacOSSurfaceCreateInfoMVK*          pCreateInfo,
3530*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3531*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface);
3532*b7893ccfSSadaf Ebrahimi 
3533*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateMacOSSurfaceMVK(
3534*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3535*b7893ccfSSadaf Ebrahimi     const VkMacOSSurfaceCreateInfoMVK*          pCreateInfo,
3536*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3537*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface,
3538*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3539*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_MACOS_MVK
3540*b7893ccfSSadaf Ebrahimi // TODO - not wrapping EXT function vkSetDebugUtilsObjectNameEXT
3541*b7893ccfSSadaf Ebrahimi // TODO - not wrapping EXT function vkSetDebugUtilsObjectTagEXT
3542*b7893ccfSSadaf Ebrahimi 
3543*b7893ccfSSadaf Ebrahimi void PreCallRecordQueueBeginDebugUtilsLabelEXT(
3544*b7893ccfSSadaf Ebrahimi     VkQueue                                     queue,
3545*b7893ccfSSadaf Ebrahimi     const VkDebugUtilsLabelEXT*                 pLabelInfo);
3546*b7893ccfSSadaf Ebrahimi 
3547*b7893ccfSSadaf Ebrahimi void PostCallRecordQueueBeginDebugUtilsLabelEXT(
3548*b7893ccfSSadaf Ebrahimi     VkQueue                                     queue,
3549*b7893ccfSSadaf Ebrahimi     const VkDebugUtilsLabelEXT*                 pLabelInfo);
3550*b7893ccfSSadaf Ebrahimi 
3551*b7893ccfSSadaf Ebrahimi void PreCallRecordQueueEndDebugUtilsLabelEXT(
3552*b7893ccfSSadaf Ebrahimi     VkQueue                                     queue);
3553*b7893ccfSSadaf Ebrahimi 
3554*b7893ccfSSadaf Ebrahimi void PostCallRecordQueueEndDebugUtilsLabelEXT(
3555*b7893ccfSSadaf Ebrahimi     VkQueue                                     queue);
3556*b7893ccfSSadaf Ebrahimi 
3557*b7893ccfSSadaf Ebrahimi void PreCallRecordQueueInsertDebugUtilsLabelEXT(
3558*b7893ccfSSadaf Ebrahimi     VkQueue                                     queue,
3559*b7893ccfSSadaf Ebrahimi     const VkDebugUtilsLabelEXT*                 pLabelInfo);
3560*b7893ccfSSadaf Ebrahimi 
3561*b7893ccfSSadaf Ebrahimi void PostCallRecordQueueInsertDebugUtilsLabelEXT(
3562*b7893ccfSSadaf Ebrahimi     VkQueue                                     queue,
3563*b7893ccfSSadaf Ebrahimi     const VkDebugUtilsLabelEXT*                 pLabelInfo);
3564*b7893ccfSSadaf Ebrahimi 
3565*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdBeginDebugUtilsLabelEXT(
3566*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3567*b7893ccfSSadaf Ebrahimi     const VkDebugUtilsLabelEXT*                 pLabelInfo);
3568*b7893ccfSSadaf Ebrahimi 
3569*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdBeginDebugUtilsLabelEXT(
3570*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3571*b7893ccfSSadaf Ebrahimi     const VkDebugUtilsLabelEXT*                 pLabelInfo);
3572*b7893ccfSSadaf Ebrahimi 
3573*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdEndDebugUtilsLabelEXT(
3574*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer);
3575*b7893ccfSSadaf Ebrahimi 
3576*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdEndDebugUtilsLabelEXT(
3577*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer);
3578*b7893ccfSSadaf Ebrahimi 
3579*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdInsertDebugUtilsLabelEXT(
3580*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3581*b7893ccfSSadaf Ebrahimi     const VkDebugUtilsLabelEXT*                 pLabelInfo);
3582*b7893ccfSSadaf Ebrahimi 
3583*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdInsertDebugUtilsLabelEXT(
3584*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3585*b7893ccfSSadaf Ebrahimi     const VkDebugUtilsLabelEXT*                 pLabelInfo);
3586*b7893ccfSSadaf Ebrahimi 
3587*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateDebugUtilsMessengerEXT(
3588*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3589*b7893ccfSSadaf Ebrahimi     const VkDebugUtilsMessengerCreateInfoEXT*   pCreateInfo,
3590*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3591*b7893ccfSSadaf Ebrahimi     VkDebugUtilsMessengerEXT*                   pMessenger);
3592*b7893ccfSSadaf Ebrahimi 
3593*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateDebugUtilsMessengerEXT(
3594*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3595*b7893ccfSSadaf Ebrahimi     const VkDebugUtilsMessengerCreateInfoEXT*   pCreateInfo,
3596*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3597*b7893ccfSSadaf Ebrahimi     VkDebugUtilsMessengerEXT*                   pMessenger,
3598*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3599*b7893ccfSSadaf Ebrahimi 
3600*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyDebugUtilsMessengerEXT(
3601*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3602*b7893ccfSSadaf Ebrahimi     VkDebugUtilsMessengerEXT                    messenger,
3603*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
3604*b7893ccfSSadaf Ebrahimi 
3605*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyDebugUtilsMessengerEXT(
3606*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3607*b7893ccfSSadaf Ebrahimi     VkDebugUtilsMessengerEXT                    messenger,
3608*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
3609*b7893ccfSSadaf Ebrahimi 
3610*b7893ccfSSadaf Ebrahimi void PreCallRecordSubmitDebugUtilsMessageEXT(
3611*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3612*b7893ccfSSadaf Ebrahimi     VkDebugUtilsMessageSeverityFlagBitsEXT      messageSeverity,
3613*b7893ccfSSadaf Ebrahimi     VkDebugUtilsMessageTypeFlagsEXT             messageTypes,
3614*b7893ccfSSadaf Ebrahimi     const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
3615*b7893ccfSSadaf Ebrahimi 
3616*b7893ccfSSadaf Ebrahimi void PostCallRecordSubmitDebugUtilsMessageEXT(
3617*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
3618*b7893ccfSSadaf Ebrahimi     VkDebugUtilsMessageSeverityFlagBitsEXT      messageSeverity,
3619*b7893ccfSSadaf Ebrahimi     VkDebugUtilsMessageTypeFlagsEXT             messageTypes,
3620*b7893ccfSSadaf Ebrahimi     const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
3621*b7893ccfSSadaf Ebrahimi 
3622*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_ANDROID_KHR
3623*b7893ccfSSadaf Ebrahimi 
3624*b7893ccfSSadaf Ebrahimi void PreCallRecordGetAndroidHardwareBufferPropertiesANDROID(
3625*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3626*b7893ccfSSadaf Ebrahimi     const struct AHardwareBuffer*               buffer,
3627*b7893ccfSSadaf Ebrahimi     VkAndroidHardwareBufferPropertiesANDROID*   pProperties);
3628*b7893ccfSSadaf Ebrahimi 
3629*b7893ccfSSadaf Ebrahimi void PostCallRecordGetAndroidHardwareBufferPropertiesANDROID(
3630*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3631*b7893ccfSSadaf Ebrahimi     const struct AHardwareBuffer*               buffer,
3632*b7893ccfSSadaf Ebrahimi     VkAndroidHardwareBufferPropertiesANDROID*   pProperties,
3633*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3634*b7893ccfSSadaf Ebrahimi 
3635*b7893ccfSSadaf Ebrahimi void PreCallRecordGetMemoryAndroidHardwareBufferANDROID(
3636*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3637*b7893ccfSSadaf Ebrahimi     const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
3638*b7893ccfSSadaf Ebrahimi     struct AHardwareBuffer**                    pBuffer);
3639*b7893ccfSSadaf Ebrahimi 
3640*b7893ccfSSadaf Ebrahimi void PostCallRecordGetMemoryAndroidHardwareBufferANDROID(
3641*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3642*b7893ccfSSadaf Ebrahimi     const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
3643*b7893ccfSSadaf Ebrahimi     struct AHardwareBuffer**                    pBuffer,
3644*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3645*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_ANDROID_KHR
3646*b7893ccfSSadaf Ebrahimi 
3647*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetSampleLocationsEXT(
3648*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3649*b7893ccfSSadaf Ebrahimi     const VkSampleLocationsInfoEXT*             pSampleLocationsInfo);
3650*b7893ccfSSadaf Ebrahimi 
3651*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetSampleLocationsEXT(
3652*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3653*b7893ccfSSadaf Ebrahimi     const VkSampleLocationsInfoEXT*             pSampleLocationsInfo);
3654*b7893ccfSSadaf Ebrahimi 
3655*b7893ccfSSadaf Ebrahimi void PreCallRecordGetImageDrmFormatModifierPropertiesEXT(
3656*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3657*b7893ccfSSadaf Ebrahimi     VkImage                                     image,
3658*b7893ccfSSadaf Ebrahimi     VkImageDrmFormatModifierPropertiesEXT*      pProperties);
3659*b7893ccfSSadaf Ebrahimi 
3660*b7893ccfSSadaf Ebrahimi void PostCallRecordGetImageDrmFormatModifierPropertiesEXT(
3661*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3662*b7893ccfSSadaf Ebrahimi     VkImage                                     image,
3663*b7893ccfSSadaf Ebrahimi     VkImageDrmFormatModifierPropertiesEXT*      pProperties,
3664*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3665*b7893ccfSSadaf Ebrahimi 
3666*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateValidationCacheEXT(
3667*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3668*b7893ccfSSadaf Ebrahimi     const VkValidationCacheCreateInfoEXT*       pCreateInfo,
3669*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3670*b7893ccfSSadaf Ebrahimi     VkValidationCacheEXT*                       pValidationCache);
3671*b7893ccfSSadaf Ebrahimi 
3672*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateValidationCacheEXT(
3673*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3674*b7893ccfSSadaf Ebrahimi     const VkValidationCacheCreateInfoEXT*       pCreateInfo,
3675*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3676*b7893ccfSSadaf Ebrahimi     VkValidationCacheEXT*                       pValidationCache,
3677*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3678*b7893ccfSSadaf Ebrahimi 
3679*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyValidationCacheEXT(
3680*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3681*b7893ccfSSadaf Ebrahimi     VkValidationCacheEXT                        validationCache,
3682*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
3683*b7893ccfSSadaf Ebrahimi 
3684*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyValidationCacheEXT(
3685*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3686*b7893ccfSSadaf Ebrahimi     VkValidationCacheEXT                        validationCache,
3687*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
3688*b7893ccfSSadaf Ebrahimi 
3689*b7893ccfSSadaf Ebrahimi void PreCallRecordMergeValidationCachesEXT(
3690*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3691*b7893ccfSSadaf Ebrahimi     VkValidationCacheEXT                        dstCache,
3692*b7893ccfSSadaf Ebrahimi     uint32_t                                    srcCacheCount,
3693*b7893ccfSSadaf Ebrahimi     const VkValidationCacheEXT*                 pSrcCaches);
3694*b7893ccfSSadaf Ebrahimi 
3695*b7893ccfSSadaf Ebrahimi void PostCallRecordMergeValidationCachesEXT(
3696*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3697*b7893ccfSSadaf Ebrahimi     VkValidationCacheEXT                        dstCache,
3698*b7893ccfSSadaf Ebrahimi     uint32_t                                    srcCacheCount,
3699*b7893ccfSSadaf Ebrahimi     const VkValidationCacheEXT*                 pSrcCaches,
3700*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3701*b7893ccfSSadaf Ebrahimi 
3702*b7893ccfSSadaf Ebrahimi void PreCallRecordGetValidationCacheDataEXT(
3703*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3704*b7893ccfSSadaf Ebrahimi     VkValidationCacheEXT                        validationCache,
3705*b7893ccfSSadaf Ebrahimi     size_t*                                     pDataSize,
3706*b7893ccfSSadaf Ebrahimi     void*                                       pData);
3707*b7893ccfSSadaf Ebrahimi 
3708*b7893ccfSSadaf Ebrahimi void PostCallRecordGetValidationCacheDataEXT(
3709*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3710*b7893ccfSSadaf Ebrahimi     VkValidationCacheEXT                        validationCache,
3711*b7893ccfSSadaf Ebrahimi     size_t*                                     pDataSize,
3712*b7893ccfSSadaf Ebrahimi     void*                                       pData,
3713*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3714*b7893ccfSSadaf Ebrahimi 
3715*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdBindShadingRateImageNV(
3716*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3717*b7893ccfSSadaf Ebrahimi     VkImageView                                 imageView,
3718*b7893ccfSSadaf Ebrahimi     VkImageLayout                               imageLayout);
3719*b7893ccfSSadaf Ebrahimi 
3720*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdBindShadingRateImageNV(
3721*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3722*b7893ccfSSadaf Ebrahimi     VkImageView                                 imageView,
3723*b7893ccfSSadaf Ebrahimi     VkImageLayout                               imageLayout);
3724*b7893ccfSSadaf Ebrahimi 
3725*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetViewportShadingRatePaletteNV(
3726*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3727*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstViewport,
3728*b7893ccfSSadaf Ebrahimi     uint32_t                                    viewportCount,
3729*b7893ccfSSadaf Ebrahimi     const VkShadingRatePaletteNV*               pShadingRatePalettes);
3730*b7893ccfSSadaf Ebrahimi 
3731*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetViewportShadingRatePaletteNV(
3732*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3733*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstViewport,
3734*b7893ccfSSadaf Ebrahimi     uint32_t                                    viewportCount,
3735*b7893ccfSSadaf Ebrahimi     const VkShadingRatePaletteNV*               pShadingRatePalettes);
3736*b7893ccfSSadaf Ebrahimi 
3737*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetCoarseSampleOrderNV(
3738*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3739*b7893ccfSSadaf Ebrahimi     VkCoarseSampleOrderTypeNV                   sampleOrderType,
3740*b7893ccfSSadaf Ebrahimi     uint32_t                                    customSampleOrderCount,
3741*b7893ccfSSadaf Ebrahimi     const VkCoarseSampleOrderCustomNV*          pCustomSampleOrders);
3742*b7893ccfSSadaf Ebrahimi 
3743*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetCoarseSampleOrderNV(
3744*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3745*b7893ccfSSadaf Ebrahimi     VkCoarseSampleOrderTypeNV                   sampleOrderType,
3746*b7893ccfSSadaf Ebrahimi     uint32_t                                    customSampleOrderCount,
3747*b7893ccfSSadaf Ebrahimi     const VkCoarseSampleOrderCustomNV*          pCustomSampleOrders);
3748*b7893ccfSSadaf Ebrahimi 
3749*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateAccelerationStructureNV(
3750*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3751*b7893ccfSSadaf Ebrahimi     const VkAccelerationStructureCreateInfoNV*  pCreateInfo,
3752*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3753*b7893ccfSSadaf Ebrahimi     VkAccelerationStructureNV*                  pAccelerationStructure);
3754*b7893ccfSSadaf Ebrahimi 
3755*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateAccelerationStructureNV(
3756*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3757*b7893ccfSSadaf Ebrahimi     const VkAccelerationStructureCreateInfoNV*  pCreateInfo,
3758*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3759*b7893ccfSSadaf Ebrahimi     VkAccelerationStructureNV*                  pAccelerationStructure,
3760*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3761*b7893ccfSSadaf Ebrahimi 
3762*b7893ccfSSadaf Ebrahimi void PreCallRecordDestroyAccelerationStructureNV(
3763*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3764*b7893ccfSSadaf Ebrahimi     VkAccelerationStructureNV                   accelerationStructure,
3765*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
3766*b7893ccfSSadaf Ebrahimi 
3767*b7893ccfSSadaf Ebrahimi void PostCallRecordDestroyAccelerationStructureNV(
3768*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3769*b7893ccfSSadaf Ebrahimi     VkAccelerationStructureNV                   accelerationStructure,
3770*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator);
3771*b7893ccfSSadaf Ebrahimi 
3772*b7893ccfSSadaf Ebrahimi void PreCallRecordGetAccelerationStructureMemoryRequirementsNV(
3773*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3774*b7893ccfSSadaf Ebrahimi     const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
3775*b7893ccfSSadaf Ebrahimi     VkMemoryRequirements2KHR*                   pMemoryRequirements);
3776*b7893ccfSSadaf Ebrahimi 
3777*b7893ccfSSadaf Ebrahimi void PostCallRecordGetAccelerationStructureMemoryRequirementsNV(
3778*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3779*b7893ccfSSadaf Ebrahimi     const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
3780*b7893ccfSSadaf Ebrahimi     VkMemoryRequirements2KHR*                   pMemoryRequirements);
3781*b7893ccfSSadaf Ebrahimi 
3782*b7893ccfSSadaf Ebrahimi void PreCallRecordBindAccelerationStructureMemoryNV(
3783*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3784*b7893ccfSSadaf Ebrahimi     uint32_t                                    bindInfoCount,
3785*b7893ccfSSadaf Ebrahimi     const VkBindAccelerationStructureMemoryInfoNV* pBindInfos);
3786*b7893ccfSSadaf Ebrahimi 
3787*b7893ccfSSadaf Ebrahimi void PostCallRecordBindAccelerationStructureMemoryNV(
3788*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3789*b7893ccfSSadaf Ebrahimi     uint32_t                                    bindInfoCount,
3790*b7893ccfSSadaf Ebrahimi     const VkBindAccelerationStructureMemoryInfoNV* pBindInfos,
3791*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3792*b7893ccfSSadaf Ebrahimi 
3793*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdBuildAccelerationStructureNV(
3794*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3795*b7893ccfSSadaf Ebrahimi     const VkAccelerationStructureInfoNV*        pInfo,
3796*b7893ccfSSadaf Ebrahimi     VkBuffer                                    instanceData,
3797*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                instanceOffset,
3798*b7893ccfSSadaf Ebrahimi     VkBool32                                    update,
3799*b7893ccfSSadaf Ebrahimi     VkAccelerationStructureNV                   dst,
3800*b7893ccfSSadaf Ebrahimi     VkAccelerationStructureNV                   src,
3801*b7893ccfSSadaf Ebrahimi     VkBuffer                                    scratch,
3802*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                scratchOffset);
3803*b7893ccfSSadaf Ebrahimi 
3804*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdBuildAccelerationStructureNV(
3805*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3806*b7893ccfSSadaf Ebrahimi     const VkAccelerationStructureInfoNV*        pInfo,
3807*b7893ccfSSadaf Ebrahimi     VkBuffer                                    instanceData,
3808*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                instanceOffset,
3809*b7893ccfSSadaf Ebrahimi     VkBool32                                    update,
3810*b7893ccfSSadaf Ebrahimi     VkAccelerationStructureNV                   dst,
3811*b7893ccfSSadaf Ebrahimi     VkAccelerationStructureNV                   src,
3812*b7893ccfSSadaf Ebrahimi     VkBuffer                                    scratch,
3813*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                scratchOffset);
3814*b7893ccfSSadaf Ebrahimi 
3815*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdCopyAccelerationStructureNV(
3816*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3817*b7893ccfSSadaf Ebrahimi     VkAccelerationStructureNV                   dst,
3818*b7893ccfSSadaf Ebrahimi     VkAccelerationStructureNV                   src,
3819*b7893ccfSSadaf Ebrahimi     VkCopyAccelerationStructureModeNV           mode);
3820*b7893ccfSSadaf Ebrahimi 
3821*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdCopyAccelerationStructureNV(
3822*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3823*b7893ccfSSadaf Ebrahimi     VkAccelerationStructureNV                   dst,
3824*b7893ccfSSadaf Ebrahimi     VkAccelerationStructureNV                   src,
3825*b7893ccfSSadaf Ebrahimi     VkCopyAccelerationStructureModeNV           mode);
3826*b7893ccfSSadaf Ebrahimi 
3827*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdTraceRaysNV(
3828*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3829*b7893ccfSSadaf Ebrahimi     VkBuffer                                    raygenShaderBindingTableBuffer,
3830*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                raygenShaderBindingOffset,
3831*b7893ccfSSadaf Ebrahimi     VkBuffer                                    missShaderBindingTableBuffer,
3832*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                missShaderBindingOffset,
3833*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                missShaderBindingStride,
3834*b7893ccfSSadaf Ebrahimi     VkBuffer                                    hitShaderBindingTableBuffer,
3835*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                hitShaderBindingOffset,
3836*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                hitShaderBindingStride,
3837*b7893ccfSSadaf Ebrahimi     VkBuffer                                    callableShaderBindingTableBuffer,
3838*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                callableShaderBindingOffset,
3839*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                callableShaderBindingStride,
3840*b7893ccfSSadaf Ebrahimi     uint32_t                                    width,
3841*b7893ccfSSadaf Ebrahimi     uint32_t                                    height,
3842*b7893ccfSSadaf Ebrahimi     uint32_t                                    depth);
3843*b7893ccfSSadaf Ebrahimi 
3844*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdTraceRaysNV(
3845*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3846*b7893ccfSSadaf Ebrahimi     VkBuffer                                    raygenShaderBindingTableBuffer,
3847*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                raygenShaderBindingOffset,
3848*b7893ccfSSadaf Ebrahimi     VkBuffer                                    missShaderBindingTableBuffer,
3849*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                missShaderBindingOffset,
3850*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                missShaderBindingStride,
3851*b7893ccfSSadaf Ebrahimi     VkBuffer                                    hitShaderBindingTableBuffer,
3852*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                hitShaderBindingOffset,
3853*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                hitShaderBindingStride,
3854*b7893ccfSSadaf Ebrahimi     VkBuffer                                    callableShaderBindingTableBuffer,
3855*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                callableShaderBindingOffset,
3856*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                callableShaderBindingStride,
3857*b7893ccfSSadaf Ebrahimi     uint32_t                                    width,
3858*b7893ccfSSadaf Ebrahimi     uint32_t                                    height,
3859*b7893ccfSSadaf Ebrahimi     uint32_t                                    depth);
3860*b7893ccfSSadaf Ebrahimi 
3861*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateRayTracingPipelinesNV(
3862*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3863*b7893ccfSSadaf Ebrahimi     VkPipelineCache                             pipelineCache,
3864*b7893ccfSSadaf Ebrahimi     uint32_t                                    createInfoCount,
3865*b7893ccfSSadaf Ebrahimi     const VkRayTracingPipelineCreateInfoNV*     pCreateInfos,
3866*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3867*b7893ccfSSadaf Ebrahimi     VkPipeline*                                 pPipelines);
3868*b7893ccfSSadaf Ebrahimi 
3869*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateRayTracingPipelinesNV(
3870*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3871*b7893ccfSSadaf Ebrahimi     VkPipelineCache                             pipelineCache,
3872*b7893ccfSSadaf Ebrahimi     uint32_t                                    createInfoCount,
3873*b7893ccfSSadaf Ebrahimi     const VkRayTracingPipelineCreateInfoNV*     pCreateInfos,
3874*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
3875*b7893ccfSSadaf Ebrahimi     VkPipeline*                                 pPipelines,
3876*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3877*b7893ccfSSadaf Ebrahimi 
3878*b7893ccfSSadaf Ebrahimi void PreCallRecordGetRayTracingShaderGroupHandlesNV(
3879*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3880*b7893ccfSSadaf Ebrahimi     VkPipeline                                  pipeline,
3881*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstGroup,
3882*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCount,
3883*b7893ccfSSadaf Ebrahimi     size_t                                      dataSize,
3884*b7893ccfSSadaf Ebrahimi     void*                                       pData);
3885*b7893ccfSSadaf Ebrahimi 
3886*b7893ccfSSadaf Ebrahimi void PostCallRecordGetRayTracingShaderGroupHandlesNV(
3887*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3888*b7893ccfSSadaf Ebrahimi     VkPipeline                                  pipeline,
3889*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstGroup,
3890*b7893ccfSSadaf Ebrahimi     uint32_t                                    groupCount,
3891*b7893ccfSSadaf Ebrahimi     size_t                                      dataSize,
3892*b7893ccfSSadaf Ebrahimi     void*                                       pData,
3893*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3894*b7893ccfSSadaf Ebrahimi 
3895*b7893ccfSSadaf Ebrahimi void PreCallRecordGetAccelerationStructureHandleNV(
3896*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3897*b7893ccfSSadaf Ebrahimi     VkAccelerationStructureNV                   accelerationStructure,
3898*b7893ccfSSadaf Ebrahimi     size_t                                      dataSize,
3899*b7893ccfSSadaf Ebrahimi     void*                                       pData);
3900*b7893ccfSSadaf Ebrahimi 
3901*b7893ccfSSadaf Ebrahimi void PostCallRecordGetAccelerationStructureHandleNV(
3902*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3903*b7893ccfSSadaf Ebrahimi     VkAccelerationStructureNV                   accelerationStructure,
3904*b7893ccfSSadaf Ebrahimi     size_t                                      dataSize,
3905*b7893ccfSSadaf Ebrahimi     void*                                       pData,
3906*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3907*b7893ccfSSadaf Ebrahimi 
3908*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdWriteAccelerationStructuresPropertiesNV(
3909*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3910*b7893ccfSSadaf Ebrahimi     uint32_t                                    accelerationStructureCount,
3911*b7893ccfSSadaf Ebrahimi     const VkAccelerationStructureNV*            pAccelerationStructures,
3912*b7893ccfSSadaf Ebrahimi     VkQueryType                                 queryType,
3913*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
3914*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstQuery);
3915*b7893ccfSSadaf Ebrahimi 
3916*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdWriteAccelerationStructuresPropertiesNV(
3917*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3918*b7893ccfSSadaf Ebrahimi     uint32_t                                    accelerationStructureCount,
3919*b7893ccfSSadaf Ebrahimi     const VkAccelerationStructureNV*            pAccelerationStructures,
3920*b7893ccfSSadaf Ebrahimi     VkQueryType                                 queryType,
3921*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
3922*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstQuery);
3923*b7893ccfSSadaf Ebrahimi 
3924*b7893ccfSSadaf Ebrahimi void PreCallRecordCompileDeferredNV(
3925*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3926*b7893ccfSSadaf Ebrahimi     VkPipeline                                  pipeline,
3927*b7893ccfSSadaf Ebrahimi     uint32_t                                    shader);
3928*b7893ccfSSadaf Ebrahimi 
3929*b7893ccfSSadaf Ebrahimi void PostCallRecordCompileDeferredNV(
3930*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3931*b7893ccfSSadaf Ebrahimi     VkPipeline                                  pipeline,
3932*b7893ccfSSadaf Ebrahimi     uint32_t                                    shader,
3933*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3934*b7893ccfSSadaf Ebrahimi 
3935*b7893ccfSSadaf Ebrahimi void PreCallRecordGetMemoryHostPointerPropertiesEXT(
3936*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3937*b7893ccfSSadaf Ebrahimi     VkExternalMemoryHandleTypeFlagBits          handleType,
3938*b7893ccfSSadaf Ebrahimi     const void*                                 pHostPointer,
3939*b7893ccfSSadaf Ebrahimi     VkMemoryHostPointerPropertiesEXT*           pMemoryHostPointerProperties);
3940*b7893ccfSSadaf Ebrahimi 
3941*b7893ccfSSadaf Ebrahimi void PostCallRecordGetMemoryHostPointerPropertiesEXT(
3942*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3943*b7893ccfSSadaf Ebrahimi     VkExternalMemoryHandleTypeFlagBits          handleType,
3944*b7893ccfSSadaf Ebrahimi     const void*                                 pHostPointer,
3945*b7893ccfSSadaf Ebrahimi     VkMemoryHostPointerPropertiesEXT*           pMemoryHostPointerProperties,
3946*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3947*b7893ccfSSadaf Ebrahimi 
3948*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdWriteBufferMarkerAMD(
3949*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3950*b7893ccfSSadaf Ebrahimi     VkPipelineStageFlagBits                     pipelineStage,
3951*b7893ccfSSadaf Ebrahimi     VkBuffer                                    dstBuffer,
3952*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                dstOffset,
3953*b7893ccfSSadaf Ebrahimi     uint32_t                                    marker);
3954*b7893ccfSSadaf Ebrahimi 
3955*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdWriteBufferMarkerAMD(
3956*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3957*b7893ccfSSadaf Ebrahimi     VkPipelineStageFlagBits                     pipelineStage,
3958*b7893ccfSSadaf Ebrahimi     VkBuffer                                    dstBuffer,
3959*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                dstOffset,
3960*b7893ccfSSadaf Ebrahimi     uint32_t                                    marker);
3961*b7893ccfSSadaf Ebrahimi 
3962*b7893ccfSSadaf Ebrahimi void PreCallRecordGetCalibratedTimestampsEXT(
3963*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3964*b7893ccfSSadaf Ebrahimi     uint32_t                                    timestampCount,
3965*b7893ccfSSadaf Ebrahimi     const VkCalibratedTimestampInfoEXT*         pTimestampInfos,
3966*b7893ccfSSadaf Ebrahimi     uint64_t*                                   pTimestamps,
3967*b7893ccfSSadaf Ebrahimi     uint64_t*                                   pMaxDeviation);
3968*b7893ccfSSadaf Ebrahimi 
3969*b7893ccfSSadaf Ebrahimi void PostCallRecordGetCalibratedTimestampsEXT(
3970*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
3971*b7893ccfSSadaf Ebrahimi     uint32_t                                    timestampCount,
3972*b7893ccfSSadaf Ebrahimi     const VkCalibratedTimestampInfoEXT*         pTimestampInfos,
3973*b7893ccfSSadaf Ebrahimi     uint64_t*                                   pTimestamps,
3974*b7893ccfSSadaf Ebrahimi     uint64_t*                                   pMaxDeviation,
3975*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
3976*b7893ccfSSadaf Ebrahimi 
3977*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_GGP
3978*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_GGP
3979*b7893ccfSSadaf Ebrahimi 
3980*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdDrawMeshTasksNV(
3981*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3982*b7893ccfSSadaf Ebrahimi     uint32_t                                    taskCount,
3983*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstTask);
3984*b7893ccfSSadaf Ebrahimi 
3985*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdDrawMeshTasksNV(
3986*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3987*b7893ccfSSadaf Ebrahimi     uint32_t                                    taskCount,
3988*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstTask);
3989*b7893ccfSSadaf Ebrahimi 
3990*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdDrawMeshTasksIndirectNV(
3991*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3992*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
3993*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
3994*b7893ccfSSadaf Ebrahimi     uint32_t                                    drawCount,
3995*b7893ccfSSadaf Ebrahimi     uint32_t                                    stride);
3996*b7893ccfSSadaf Ebrahimi 
3997*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdDrawMeshTasksIndirectNV(
3998*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
3999*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
4000*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
4001*b7893ccfSSadaf Ebrahimi     uint32_t                                    drawCount,
4002*b7893ccfSSadaf Ebrahimi     uint32_t                                    stride);
4003*b7893ccfSSadaf Ebrahimi 
4004*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdDrawMeshTasksIndirectCountNV(
4005*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
4006*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
4007*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
4008*b7893ccfSSadaf Ebrahimi     VkBuffer                                    countBuffer,
4009*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                countBufferOffset,
4010*b7893ccfSSadaf Ebrahimi     uint32_t                                    maxDrawCount,
4011*b7893ccfSSadaf Ebrahimi     uint32_t                                    stride);
4012*b7893ccfSSadaf Ebrahimi 
4013*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdDrawMeshTasksIndirectCountNV(
4014*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
4015*b7893ccfSSadaf Ebrahimi     VkBuffer                                    buffer,
4016*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                offset,
4017*b7893ccfSSadaf Ebrahimi     VkBuffer                                    countBuffer,
4018*b7893ccfSSadaf Ebrahimi     VkDeviceSize                                countBufferOffset,
4019*b7893ccfSSadaf Ebrahimi     uint32_t                                    maxDrawCount,
4020*b7893ccfSSadaf Ebrahimi     uint32_t                                    stride);
4021*b7893ccfSSadaf Ebrahimi 
4022*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetExclusiveScissorNV(
4023*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
4024*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstExclusiveScissor,
4025*b7893ccfSSadaf Ebrahimi     uint32_t                                    exclusiveScissorCount,
4026*b7893ccfSSadaf Ebrahimi     const VkRect2D*                             pExclusiveScissors);
4027*b7893ccfSSadaf Ebrahimi 
4028*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetExclusiveScissorNV(
4029*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
4030*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstExclusiveScissor,
4031*b7893ccfSSadaf Ebrahimi     uint32_t                                    exclusiveScissorCount,
4032*b7893ccfSSadaf Ebrahimi     const VkRect2D*                             pExclusiveScissors);
4033*b7893ccfSSadaf Ebrahimi 
4034*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetCheckpointNV(
4035*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
4036*b7893ccfSSadaf Ebrahimi     const void*                                 pCheckpointMarker);
4037*b7893ccfSSadaf Ebrahimi 
4038*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetCheckpointNV(
4039*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
4040*b7893ccfSSadaf Ebrahimi     const void*                                 pCheckpointMarker);
4041*b7893ccfSSadaf Ebrahimi 
4042*b7893ccfSSadaf Ebrahimi void PreCallRecordGetQueueCheckpointDataNV(
4043*b7893ccfSSadaf Ebrahimi     VkQueue                                     queue,
4044*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pCheckpointDataCount,
4045*b7893ccfSSadaf Ebrahimi     VkCheckpointDataNV*                         pCheckpointData);
4046*b7893ccfSSadaf Ebrahimi 
4047*b7893ccfSSadaf Ebrahimi void PostCallRecordGetQueueCheckpointDataNV(
4048*b7893ccfSSadaf Ebrahimi     VkQueue                                     queue,
4049*b7893ccfSSadaf Ebrahimi     uint32_t*                                   pCheckpointDataCount,
4050*b7893ccfSSadaf Ebrahimi     VkCheckpointDataNV*                         pCheckpointData);
4051*b7893ccfSSadaf Ebrahimi 
4052*b7893ccfSSadaf Ebrahimi void PreCallRecordInitializePerformanceApiINTEL(
4053*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4054*b7893ccfSSadaf Ebrahimi     const VkInitializePerformanceApiInfoINTEL*  pInitializeInfo);
4055*b7893ccfSSadaf Ebrahimi 
4056*b7893ccfSSadaf Ebrahimi void PostCallRecordInitializePerformanceApiINTEL(
4057*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4058*b7893ccfSSadaf Ebrahimi     const VkInitializePerformanceApiInfoINTEL*  pInitializeInfo,
4059*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
4060*b7893ccfSSadaf Ebrahimi 
4061*b7893ccfSSadaf Ebrahimi void PreCallRecordUninitializePerformanceApiINTEL(
4062*b7893ccfSSadaf Ebrahimi     VkDevice                                    device);
4063*b7893ccfSSadaf Ebrahimi 
4064*b7893ccfSSadaf Ebrahimi void PostCallRecordUninitializePerformanceApiINTEL(
4065*b7893ccfSSadaf Ebrahimi     VkDevice                                    device);
4066*b7893ccfSSadaf Ebrahimi 
4067*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetPerformanceMarkerINTEL(
4068*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
4069*b7893ccfSSadaf Ebrahimi     const VkPerformanceMarkerInfoINTEL*         pMarkerInfo);
4070*b7893ccfSSadaf Ebrahimi 
4071*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetPerformanceMarkerINTEL(
4072*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
4073*b7893ccfSSadaf Ebrahimi     const VkPerformanceMarkerInfoINTEL*         pMarkerInfo,
4074*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
4075*b7893ccfSSadaf Ebrahimi 
4076*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetPerformanceStreamMarkerINTEL(
4077*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
4078*b7893ccfSSadaf Ebrahimi     const VkPerformanceStreamMarkerInfoINTEL*   pMarkerInfo);
4079*b7893ccfSSadaf Ebrahimi 
4080*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetPerformanceStreamMarkerINTEL(
4081*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
4082*b7893ccfSSadaf Ebrahimi     const VkPerformanceStreamMarkerInfoINTEL*   pMarkerInfo,
4083*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
4084*b7893ccfSSadaf Ebrahimi 
4085*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetPerformanceOverrideINTEL(
4086*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
4087*b7893ccfSSadaf Ebrahimi     const VkPerformanceOverrideInfoINTEL*       pOverrideInfo);
4088*b7893ccfSSadaf Ebrahimi 
4089*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetPerformanceOverrideINTEL(
4090*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
4091*b7893ccfSSadaf Ebrahimi     const VkPerformanceOverrideInfoINTEL*       pOverrideInfo,
4092*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
4093*b7893ccfSSadaf Ebrahimi 
4094*b7893ccfSSadaf Ebrahimi void PreCallRecordAcquirePerformanceConfigurationINTEL(
4095*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4096*b7893ccfSSadaf Ebrahimi     const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
4097*b7893ccfSSadaf Ebrahimi     VkPerformanceConfigurationINTEL*            pConfiguration);
4098*b7893ccfSSadaf Ebrahimi 
4099*b7893ccfSSadaf Ebrahimi void PostCallRecordAcquirePerformanceConfigurationINTEL(
4100*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4101*b7893ccfSSadaf Ebrahimi     const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
4102*b7893ccfSSadaf Ebrahimi     VkPerformanceConfigurationINTEL*            pConfiguration,
4103*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
4104*b7893ccfSSadaf Ebrahimi 
4105*b7893ccfSSadaf Ebrahimi void PreCallRecordReleasePerformanceConfigurationINTEL(
4106*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4107*b7893ccfSSadaf Ebrahimi     VkPerformanceConfigurationINTEL             configuration);
4108*b7893ccfSSadaf Ebrahimi 
4109*b7893ccfSSadaf Ebrahimi void PostCallRecordReleasePerformanceConfigurationINTEL(
4110*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4111*b7893ccfSSadaf Ebrahimi     VkPerformanceConfigurationINTEL             configuration,
4112*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
4113*b7893ccfSSadaf Ebrahimi 
4114*b7893ccfSSadaf Ebrahimi void PreCallRecordQueueSetPerformanceConfigurationINTEL(
4115*b7893ccfSSadaf Ebrahimi     VkQueue                                     queue,
4116*b7893ccfSSadaf Ebrahimi     VkPerformanceConfigurationINTEL             configuration);
4117*b7893ccfSSadaf Ebrahimi 
4118*b7893ccfSSadaf Ebrahimi void PostCallRecordQueueSetPerformanceConfigurationINTEL(
4119*b7893ccfSSadaf Ebrahimi     VkQueue                                     queue,
4120*b7893ccfSSadaf Ebrahimi     VkPerformanceConfigurationINTEL             configuration,
4121*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
4122*b7893ccfSSadaf Ebrahimi 
4123*b7893ccfSSadaf Ebrahimi void PreCallRecordGetPerformanceParameterINTEL(
4124*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4125*b7893ccfSSadaf Ebrahimi     VkPerformanceParameterTypeINTEL             parameter,
4126*b7893ccfSSadaf Ebrahimi     VkPerformanceValueINTEL*                    pValue);
4127*b7893ccfSSadaf Ebrahimi 
4128*b7893ccfSSadaf Ebrahimi void PostCallRecordGetPerformanceParameterINTEL(
4129*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4130*b7893ccfSSadaf Ebrahimi     VkPerformanceParameterTypeINTEL             parameter,
4131*b7893ccfSSadaf Ebrahimi     VkPerformanceValueINTEL*                    pValue,
4132*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
4133*b7893ccfSSadaf Ebrahimi 
4134*b7893ccfSSadaf Ebrahimi void PreCallRecordSetLocalDimmingAMD(
4135*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4136*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapChain,
4137*b7893ccfSSadaf Ebrahimi     VkBool32                                    localDimmingEnable);
4138*b7893ccfSSadaf Ebrahimi 
4139*b7893ccfSSadaf Ebrahimi void PostCallRecordSetLocalDimmingAMD(
4140*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4141*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapChain,
4142*b7893ccfSSadaf Ebrahimi     VkBool32                                    localDimmingEnable);
4143*b7893ccfSSadaf Ebrahimi 
4144*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_FUCHSIA
4145*b7893ccfSSadaf Ebrahimi 
4146*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateImagePipeSurfaceFUCHSIA(
4147*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
4148*b7893ccfSSadaf Ebrahimi     const VkImagePipeSurfaceCreateInfoFUCHSIA*  pCreateInfo,
4149*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
4150*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface);
4151*b7893ccfSSadaf Ebrahimi 
4152*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateImagePipeSurfaceFUCHSIA(
4153*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
4154*b7893ccfSSadaf Ebrahimi     const VkImagePipeSurfaceCreateInfoFUCHSIA*  pCreateInfo,
4155*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
4156*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface,
4157*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
4158*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_FUCHSIA
4159*b7893ccfSSadaf Ebrahimi 
4160*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_METAL_EXT
4161*b7893ccfSSadaf Ebrahimi 
4162*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateMetalSurfaceEXT(
4163*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
4164*b7893ccfSSadaf Ebrahimi     const VkMetalSurfaceCreateInfoEXT*          pCreateInfo,
4165*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
4166*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface);
4167*b7893ccfSSadaf Ebrahimi 
4168*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateMetalSurfaceEXT(
4169*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
4170*b7893ccfSSadaf Ebrahimi     const VkMetalSurfaceCreateInfoEXT*          pCreateInfo,
4171*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
4172*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface,
4173*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
4174*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_METAL_EXT
4175*b7893ccfSSadaf Ebrahimi 
4176*b7893ccfSSadaf Ebrahimi void PreCallRecordGetBufferDeviceAddressEXT(
4177*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4178*b7893ccfSSadaf Ebrahimi     const VkBufferDeviceAddressInfoEXT*         pInfo);
4179*b7893ccfSSadaf Ebrahimi 
4180*b7893ccfSSadaf Ebrahimi void PostCallRecordGetBufferDeviceAddressEXT(
4181*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4182*b7893ccfSSadaf Ebrahimi     const VkBufferDeviceAddressInfoEXT*         pInfo);
4183*b7893ccfSSadaf Ebrahimi 
4184*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
4185*b7893ccfSSadaf Ebrahimi 
4186*b7893ccfSSadaf Ebrahimi void PreCallRecordAcquireFullScreenExclusiveModeEXT(
4187*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4188*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain);
4189*b7893ccfSSadaf Ebrahimi 
4190*b7893ccfSSadaf Ebrahimi void PostCallRecordAcquireFullScreenExclusiveModeEXT(
4191*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4192*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain,
4193*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
4194*b7893ccfSSadaf Ebrahimi 
4195*b7893ccfSSadaf Ebrahimi void PreCallRecordReleaseFullScreenExclusiveModeEXT(
4196*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4197*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain);
4198*b7893ccfSSadaf Ebrahimi 
4199*b7893ccfSSadaf Ebrahimi void PostCallRecordReleaseFullScreenExclusiveModeEXT(
4200*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4201*b7893ccfSSadaf Ebrahimi     VkSwapchainKHR                              swapchain,
4202*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
4203*b7893ccfSSadaf Ebrahimi 
4204*b7893ccfSSadaf Ebrahimi void PreCallRecordGetDeviceGroupSurfacePresentModes2EXT(
4205*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4206*b7893ccfSSadaf Ebrahimi     const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
4207*b7893ccfSSadaf Ebrahimi     VkDeviceGroupPresentModeFlagsKHR*           pModes);
4208*b7893ccfSSadaf Ebrahimi 
4209*b7893ccfSSadaf Ebrahimi void PostCallRecordGetDeviceGroupSurfacePresentModes2EXT(
4210*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4211*b7893ccfSSadaf Ebrahimi     const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
4212*b7893ccfSSadaf Ebrahimi     VkDeviceGroupPresentModeFlagsKHR*           pModes,
4213*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
4214*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
4215*b7893ccfSSadaf Ebrahimi 
4216*b7893ccfSSadaf Ebrahimi void PreCallRecordCreateHeadlessSurfaceEXT(
4217*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
4218*b7893ccfSSadaf Ebrahimi     const VkHeadlessSurfaceCreateInfoEXT*       pCreateInfo,
4219*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
4220*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface);
4221*b7893ccfSSadaf Ebrahimi 
4222*b7893ccfSSadaf Ebrahimi void PostCallRecordCreateHeadlessSurfaceEXT(
4223*b7893ccfSSadaf Ebrahimi     VkInstance                                  instance,
4224*b7893ccfSSadaf Ebrahimi     const VkHeadlessSurfaceCreateInfoEXT*       pCreateInfo,
4225*b7893ccfSSadaf Ebrahimi     const VkAllocationCallbacks*                pAllocator,
4226*b7893ccfSSadaf Ebrahimi     VkSurfaceKHR*                               pSurface,
4227*b7893ccfSSadaf Ebrahimi     VkResult                                    result);
4228*b7893ccfSSadaf Ebrahimi 
4229*b7893ccfSSadaf Ebrahimi void PreCallRecordCmdSetLineStippleEXT(
4230*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
4231*b7893ccfSSadaf Ebrahimi     uint32_t                                    lineStippleFactor,
4232*b7893ccfSSadaf Ebrahimi     uint16_t                                    lineStipplePattern);
4233*b7893ccfSSadaf Ebrahimi 
4234*b7893ccfSSadaf Ebrahimi void PostCallRecordCmdSetLineStippleEXT(
4235*b7893ccfSSadaf Ebrahimi     VkCommandBuffer                             commandBuffer,
4236*b7893ccfSSadaf Ebrahimi     uint32_t                                    lineStippleFactor,
4237*b7893ccfSSadaf Ebrahimi     uint16_t                                    lineStipplePattern);
4238*b7893ccfSSadaf Ebrahimi 
4239*b7893ccfSSadaf Ebrahimi void PreCallRecordResetQueryPoolEXT(
4240*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4241*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
4242*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstQuery,
4243*b7893ccfSSadaf Ebrahimi     uint32_t                                    queryCount);
4244*b7893ccfSSadaf Ebrahimi 
4245*b7893ccfSSadaf Ebrahimi void PostCallRecordResetQueryPoolEXT(
4246*b7893ccfSSadaf Ebrahimi     VkDevice                                    device,
4247*b7893ccfSSadaf Ebrahimi     VkQueryPool                                 queryPool,
4248*b7893ccfSSadaf Ebrahimi     uint32_t                                    firstQuery,
4249*b7893ccfSSadaf Ebrahimi     uint32_t                                    queryCount);
4250*b7893ccfSSadaf Ebrahimi };
4251