blob: cb51ac9c69c26a63c935f819a1782e904e70d87d [file] [log] [blame]
Lingfeng Yang6a283672018-11-01 13:37:56 -07001// Copyright (C) 2018 The Android Open Source Project
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002// Copyright (C) 2018 Google Inc.
Lingfeng Yang6a283672018-11-01 13:37:56 -07003//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015
16// Autogenerated module VkEncoder
17// (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
18// Please do not modify directly;
19// re-run android/scripts/generate-vulkan-sources.sh,
20// or directly from Python by defining:
21// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
22// CEREAL_OUTPUT_DIR: Where to put the generated sources.
23// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
24
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070025#include "VkEncoder.h"
Lingfeng Yang6a283672018-11-01 13:37:56 -070026
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070027
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070028#include "IOStream.h"
Lingfeng Yange30d3382018-11-09 08:24:37 -080029#include "Resources.h"
Lingfeng Yang71b596b2018-11-07 18:03:25 -080030#include "ResourceTracker.h"
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070031#include "VulkanStream.h"
32
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080033#include "android/base/AlignedBuf.h"
Lingfeng Yang71b596b2018-11-07 18:03:25 -080034#include "android/base/Pool.h"
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080035
Lingfeng Yange71c6422018-11-01 19:29:49 -070036#include "goldfish_vk_marshaling_guest.h"
Lingfeng Yang71b596b2018-11-07 18:03:25 -080037#include "goldfish_vk_deepcopy_guest.h"
38#include "goldfish_vk_handlemap_guest.h"
Lingfeng Yange71c6422018-11-01 19:29:49 -070039
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070040
41
42
43
44
Lingfeng Yang71b596b2018-11-07 18:03:25 -080045using namespace goldfish_vk;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070046
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080047using android::aligned_buf_alloc;
48using android::aligned_buf_free;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080049using android::base::Pool;
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080050
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070051class VkEncoder::Impl {
52public:
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070053 Impl(IOStream* stream) : m_stream(stream) { }
54 VulkanCountingStream* countingStream() { return &m_countingStream; }
55 VulkanStream* stream() { return &m_stream; }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080056 Pool* pool() { return &m_pool; }
57 ResourceTracker* resources() { return ResourceTracker::get(); }
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070058private:
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070059 VulkanCountingStream m_countingStream;
60 VulkanStream m_stream;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080061 Pool m_pool { 8, 4096, 64 };
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070062};
63
64VkEncoder::VkEncoder(IOStream *stream) :
65 mImpl(new VkEncoder::Impl(stream)) { }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070066#ifdef VK_VERSION_1_0
67VkResult VkEncoder::vkCreateInstance(
68 const VkInstanceCreateInfo* pCreateInfo,
69 const VkAllocationCallbacks* pAllocator,
70 VkInstance* pInstance)
71{
72 auto stream = mImpl->stream();
73 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080074 auto resources = mImpl->resources();
75 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080076 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080077 VkInstanceCreateInfo* local_pCreateInfo;
78 local_pCreateInfo = nullptr;
79 if (pCreateInfo)
80 {
81 local_pCreateInfo = (VkInstanceCreateInfo*)pool->alloc(sizeof(const VkInstanceCreateInfo));
82 deepcopy_VkInstanceCreateInfo(pool, pCreateInfo, (VkInstanceCreateInfo*)(local_pCreateInfo));
83 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080084 VkAllocationCallbacks* local_pAllocator;
85 local_pAllocator = nullptr;
86 if (pAllocator)
87 {
88 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
89 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
90 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080091 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070092 countingStream->rewind();
93 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080094 marshal_VkInstanceCreateInfo(countingStream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080095 // WARNING PTR CHECK
96 uint64_t cgen_var_0 = (uint64_t)(uintptr_t)local_pAllocator;
97 countingStream->putBe64(cgen_var_0);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080098 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070099 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800100 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700101 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800102 uint64_t cgen_var_1;
103 countingStream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_1, 1);
104 countingStream->write((uint64_t*)&cgen_var_1, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700105 }
106 uint32_t packetSize_vkCreateInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
107 countingStream->rewind();
108 uint32_t opcode_vkCreateInstance = OP_vkCreateInstance;
109 stream->write(&opcode_vkCreateInstance, sizeof(uint32_t));
110 stream->write(&packetSize_vkCreateInstance, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800111 marshal_VkInstanceCreateInfo(stream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800112 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800113 uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator;
114 stream->putBe64(cgen_var_2);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800115 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700116 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800117 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700118 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800119 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800120 uint64_t cgen_var_3;
121 stream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_3, 1);
122 stream->write((uint64_t*)&cgen_var_3, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800123 stream->setHandleMapping(resources->unwrapMapping());
124 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800125 uint64_t cgen_var_4;
126 stream->read((uint64_t*)&cgen_var_4, 8);
127 stream->handleMapping()->mapHandles_u64_VkInstance(&cgen_var_4, (VkInstance*)pInstance, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800128 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700129 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
130 stream->read(&vkCreateInstance_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800131 countingStream->clearPool();
132 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800133 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700134 return vkCreateInstance_VkResult_return;
135}
136
137void VkEncoder::vkDestroyInstance(
138 VkInstance instance,
139 const VkAllocationCallbacks* pAllocator)
140{
141 auto stream = mImpl->stream();
142 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800143 auto resources = mImpl->resources();
144 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800145 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800146 VkInstance local_instance;
147 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800148 VkAllocationCallbacks* local_pAllocator;
149 local_pAllocator = nullptr;
150 if (pAllocator)
151 {
152 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
153 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
154 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800155 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700156 countingStream->rewind();
157 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800158 uint64_t cgen_var_5;
159 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_5, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800160 countingStream->write((uint64_t*)&cgen_var_5, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800161 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800162 uint64_t cgen_var_6 = (uint64_t)(uintptr_t)local_pAllocator;
163 countingStream->putBe64(cgen_var_6);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800164 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700165 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800166 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700167 }
168 }
169 uint32_t packetSize_vkDestroyInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
170 countingStream->rewind();
171 uint32_t opcode_vkDestroyInstance = OP_vkDestroyInstance;
172 stream->write(&opcode_vkDestroyInstance, sizeof(uint32_t));
173 stream->write(&packetSize_vkDestroyInstance, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800174 uint64_t cgen_var_7;
175 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_7, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800176 stream->write((uint64_t*)&cgen_var_7, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800177 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800178 uint64_t cgen_var_8 = (uint64_t)(uintptr_t)local_pAllocator;
179 stream->putBe64(cgen_var_8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800180 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700181 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800182 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700183 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800184 resources->destroyMapping()->mapHandles_VkInstance((VkInstance*)&instance);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700185}
186
187VkResult VkEncoder::vkEnumeratePhysicalDevices(
188 VkInstance instance,
189 uint32_t* pPhysicalDeviceCount,
190 VkPhysicalDevice* pPhysicalDevices)
191{
192 auto stream = mImpl->stream();
193 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800194 auto resources = mImpl->resources();
195 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800196 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800197 VkInstance local_instance;
198 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700199 countingStream->rewind();
200 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800201 uint64_t cgen_var_9;
202 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_9, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800203 countingStream->write((uint64_t*)&cgen_var_9, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800204 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800205 uint64_t cgen_var_10 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
206 countingStream->putBe64(cgen_var_10);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700207 if (pPhysicalDeviceCount)
208 {
209 countingStream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
210 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800211 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800212 uint64_t cgen_var_11 = (uint64_t)(uintptr_t)pPhysicalDevices;
213 countingStream->putBe64(cgen_var_11);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700214 if (pPhysicalDevices)
215 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800216 if ((*(pPhysicalDeviceCount)))
217 {
218 uint64_t* cgen_var_12;
219 countingStream->alloc((void**)&cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
220 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_12, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800221 countingStream->write((uint64_t*)cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800222 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700223 }
224 }
225 uint32_t packetSize_vkEnumeratePhysicalDevices = 4 + 4 + (uint32_t)countingStream->bytesWritten();
226 countingStream->rewind();
227 uint32_t opcode_vkEnumeratePhysicalDevices = OP_vkEnumeratePhysicalDevices;
228 stream->write(&opcode_vkEnumeratePhysicalDevices, sizeof(uint32_t));
229 stream->write(&packetSize_vkEnumeratePhysicalDevices, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800230 uint64_t cgen_var_13;
231 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_13, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800232 stream->write((uint64_t*)&cgen_var_13, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800233 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800234 uint64_t cgen_var_14 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
235 stream->putBe64(cgen_var_14);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700236 if (pPhysicalDeviceCount)
237 {
238 stream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
239 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800240 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800241 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800242 uint64_t cgen_var_15 = (uint64_t)(uintptr_t)pPhysicalDevices;
243 stream->putBe64(cgen_var_15);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700244 if (pPhysicalDevices)
245 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800246 if ((*(pPhysicalDeviceCount)))
247 {
248 uint64_t* cgen_var_16;
249 stream->alloc((void**)&cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
250 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_16, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800251 stream->write((uint64_t*)cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800252 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700253 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800254 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800255 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700256 uint32_t* check_pPhysicalDeviceCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800257 check_pPhysicalDeviceCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700258 if (pPhysicalDeviceCount)
259 {
260 if (!(check_pPhysicalDeviceCount))
261 {
262 fprintf(stderr, "fatal: pPhysicalDeviceCount inconsistent between guest and host\n");
263 }
264 stream->read((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
265 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800266 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800267 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700268 VkPhysicalDevice* check_pPhysicalDevices;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800269 check_pPhysicalDevices = (VkPhysicalDevice*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700270 if (pPhysicalDevices)
271 {
272 if (!(check_pPhysicalDevices))
273 {
274 fprintf(stderr, "fatal: pPhysicalDevices inconsistent between guest and host\n");
275 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800276 if ((*(pPhysicalDeviceCount)))
277 {
278 uint64_t* cgen_var_19;
279 stream->alloc((void**)&cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800280 stream->read((uint64_t*)cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800281 stream->handleMapping()->mapHandles_u64_VkPhysicalDevice(cgen_var_19, (VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)));
282 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700283 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800284 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700285 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
286 stream->read(&vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800287 countingStream->clearPool();
288 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800289 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700290 return vkEnumeratePhysicalDevices_VkResult_return;
291}
292
293void VkEncoder::vkGetPhysicalDeviceFeatures(
294 VkPhysicalDevice physicalDevice,
295 VkPhysicalDeviceFeatures* pFeatures)
296{
297 auto stream = mImpl->stream();
298 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800299 auto resources = mImpl->resources();
300 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800301 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800302 VkPhysicalDevice local_physicalDevice;
303 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700304 countingStream->rewind();
305 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800306 uint64_t cgen_var_20;
307 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_20, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800308 countingStream->write((uint64_t*)&cgen_var_20, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700309 marshal_VkPhysicalDeviceFeatures(countingStream, (VkPhysicalDeviceFeatures*)(pFeatures));
310 }
311 uint32_t packetSize_vkGetPhysicalDeviceFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
312 countingStream->rewind();
313 uint32_t opcode_vkGetPhysicalDeviceFeatures = OP_vkGetPhysicalDeviceFeatures;
314 stream->write(&opcode_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
315 stream->write(&packetSize_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800316 uint64_t cgen_var_21;
317 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_21, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800318 stream->write((uint64_t*)&cgen_var_21, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700319 marshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
320 unmarshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
321}
322
323void VkEncoder::vkGetPhysicalDeviceFormatProperties(
324 VkPhysicalDevice physicalDevice,
325 VkFormat format,
326 VkFormatProperties* pFormatProperties)
327{
328 auto stream = mImpl->stream();
329 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800330 auto resources = mImpl->resources();
331 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800332 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800333 VkPhysicalDevice local_physicalDevice;
334 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800335 VkFormat local_format;
336 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700337 countingStream->rewind();
338 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800339 uint64_t cgen_var_22;
340 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_22, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800341 countingStream->write((uint64_t*)&cgen_var_22, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800342 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700343 marshal_VkFormatProperties(countingStream, (VkFormatProperties*)(pFormatProperties));
344 }
345 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
346 countingStream->rewind();
347 uint32_t opcode_vkGetPhysicalDeviceFormatProperties = OP_vkGetPhysicalDeviceFormatProperties;
348 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
349 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800350 uint64_t cgen_var_23;
351 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_23, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800352 stream->write((uint64_t*)&cgen_var_23, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800353 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700354 marshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
355 unmarshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
356}
357
358VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties(
359 VkPhysicalDevice physicalDevice,
360 VkFormat format,
361 VkImageType type,
362 VkImageTiling tiling,
363 VkImageUsageFlags usage,
364 VkImageCreateFlags flags,
365 VkImageFormatProperties* pImageFormatProperties)
366{
367 auto stream = mImpl->stream();
368 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800369 auto resources = mImpl->resources();
370 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800371 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800372 VkPhysicalDevice local_physicalDevice;
373 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800374 VkFormat local_format;
375 local_format = format;
376 VkImageType local_type;
377 local_type = type;
378 VkImageTiling local_tiling;
379 local_tiling = tiling;
380 VkImageUsageFlags local_usage;
381 local_usage = usage;
382 VkImageCreateFlags local_flags;
383 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700384 countingStream->rewind();
385 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800386 uint64_t cgen_var_24;
387 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_24, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800388 countingStream->write((uint64_t*)&cgen_var_24, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800389 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
390 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
391 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
392 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
393 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700394 marshal_VkImageFormatProperties(countingStream, (VkImageFormatProperties*)(pImageFormatProperties));
395 }
396 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
397 countingStream->rewind();
398 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties = OP_vkGetPhysicalDeviceImageFormatProperties;
399 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
400 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800401 uint64_t cgen_var_25;
402 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_25, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800403 stream->write((uint64_t*)&cgen_var_25, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800404 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
405 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
406 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
407 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
408 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700409 marshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
410 unmarshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
411 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
412 stream->read(&vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800413 countingStream->clearPool();
414 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800415 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700416 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
417}
418
419void VkEncoder::vkGetPhysicalDeviceProperties(
420 VkPhysicalDevice physicalDevice,
421 VkPhysicalDeviceProperties* pProperties)
422{
423 auto stream = mImpl->stream();
424 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800425 auto resources = mImpl->resources();
426 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800427 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800428 VkPhysicalDevice local_physicalDevice;
429 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700430 countingStream->rewind();
431 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800432 uint64_t cgen_var_26;
433 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_26, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800434 countingStream->write((uint64_t*)&cgen_var_26, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700435 marshal_VkPhysicalDeviceProperties(countingStream, (VkPhysicalDeviceProperties*)(pProperties));
436 }
437 uint32_t packetSize_vkGetPhysicalDeviceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
438 countingStream->rewind();
439 uint32_t opcode_vkGetPhysicalDeviceProperties = OP_vkGetPhysicalDeviceProperties;
440 stream->write(&opcode_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
441 stream->write(&packetSize_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800442 uint64_t cgen_var_27;
443 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_27, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800444 stream->write((uint64_t*)&cgen_var_27, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700445 marshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
446 unmarshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
447}
448
449void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties(
450 VkPhysicalDevice physicalDevice,
451 uint32_t* pQueueFamilyPropertyCount,
452 VkQueueFamilyProperties* pQueueFamilyProperties)
453{
454 auto stream = mImpl->stream();
455 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800456 auto resources = mImpl->resources();
457 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800458 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800459 VkPhysicalDevice local_physicalDevice;
460 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700461 countingStream->rewind();
462 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800463 uint64_t cgen_var_28;
464 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_28, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800465 countingStream->write((uint64_t*)&cgen_var_28, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800466 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800467 uint64_t cgen_var_29 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
468 countingStream->putBe64(cgen_var_29);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700469 if (pQueueFamilyPropertyCount)
470 {
471 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
472 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800473 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800474 uint64_t cgen_var_30 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
475 countingStream->putBe64(cgen_var_30);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700476 if (pQueueFamilyProperties)
477 {
478 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
479 {
480 marshal_VkQueueFamilyProperties(countingStream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
481 }
482 }
483 }
484 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
485 countingStream->rewind();
486 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties = OP_vkGetPhysicalDeviceQueueFamilyProperties;
487 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
488 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800489 uint64_t cgen_var_31;
490 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_31, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800491 stream->write((uint64_t*)&cgen_var_31, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800492 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800493 uint64_t cgen_var_32 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
494 stream->putBe64(cgen_var_32);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700495 if (pQueueFamilyPropertyCount)
496 {
497 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
498 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800499 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800500 uint64_t cgen_var_33 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
501 stream->putBe64(cgen_var_33);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700502 if (pQueueFamilyProperties)
503 {
504 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
505 {
506 marshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
507 }
508 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800509 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700510 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800511 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700512 if (pQueueFamilyPropertyCount)
513 {
514 if (!(check_pQueueFamilyPropertyCount))
515 {
516 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
517 }
518 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
519 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800520 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700521 VkQueueFamilyProperties* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800522 check_pQueueFamilyProperties = (VkQueueFamilyProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700523 if (pQueueFamilyProperties)
524 {
525 if (!(check_pQueueFamilyProperties))
526 {
527 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
528 }
529 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
530 {
531 unmarshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
532 }
533 }
534}
535
536void VkEncoder::vkGetPhysicalDeviceMemoryProperties(
537 VkPhysicalDevice physicalDevice,
538 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
539{
540 auto stream = mImpl->stream();
541 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800542 auto resources = mImpl->resources();
543 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800544 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800545 VkPhysicalDevice local_physicalDevice;
546 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700547 countingStream->rewind();
548 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800549 uint64_t cgen_var_36;
550 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_36, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800551 countingStream->write((uint64_t*)&cgen_var_36, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700552 marshal_VkPhysicalDeviceMemoryProperties(countingStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
553 }
554 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
555 countingStream->rewind();
556 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties = OP_vkGetPhysicalDeviceMemoryProperties;
557 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
558 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800559 uint64_t cgen_var_37;
560 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_37, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800561 stream->write((uint64_t*)&cgen_var_37, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700562 marshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
563 unmarshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
564}
565
566PFN_vkVoidFunction VkEncoder::vkGetInstanceProcAddr(
567 VkInstance instance,
568 const char* pName)
569{
570 auto stream = mImpl->stream();
571 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800572 auto resources = mImpl->resources();
573 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800574 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800575 VkInstance local_instance;
576 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800577 char* local_pName;
578 local_pName = nullptr;
579 if (pName)
580 {
581 local_pName = pool->strDup(pName);
582 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700583 countingStream->rewind();
584 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800585 uint64_t cgen_var_38;
586 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_38, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800587 countingStream->write((uint64_t*)&cgen_var_38, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800588 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700589 }
590 uint32_t packetSize_vkGetInstanceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
591 countingStream->rewind();
592 uint32_t opcode_vkGetInstanceProcAddr = OP_vkGetInstanceProcAddr;
593 stream->write(&opcode_vkGetInstanceProcAddr, sizeof(uint32_t));
594 stream->write(&packetSize_vkGetInstanceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800595 uint64_t cgen_var_39;
596 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_39, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800597 stream->write((uint64_t*)&cgen_var_39, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800598 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700599 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
600 stream->read(&vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800601 countingStream->clearPool();
602 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800603 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700604 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
605}
606
607PFN_vkVoidFunction VkEncoder::vkGetDeviceProcAddr(
608 VkDevice device,
609 const char* pName)
610{
611 auto stream = mImpl->stream();
612 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800613 auto resources = mImpl->resources();
614 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800615 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800616 VkDevice local_device;
617 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800618 char* local_pName;
619 local_pName = nullptr;
620 if (pName)
621 {
622 local_pName = pool->strDup(pName);
623 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700624 countingStream->rewind();
625 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800626 uint64_t cgen_var_40;
627 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_40, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800628 countingStream->write((uint64_t*)&cgen_var_40, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800629 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700630 }
631 uint32_t packetSize_vkGetDeviceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
632 countingStream->rewind();
633 uint32_t opcode_vkGetDeviceProcAddr = OP_vkGetDeviceProcAddr;
634 stream->write(&opcode_vkGetDeviceProcAddr, sizeof(uint32_t));
635 stream->write(&packetSize_vkGetDeviceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800636 uint64_t cgen_var_41;
637 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_41, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800638 stream->write((uint64_t*)&cgen_var_41, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800639 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700640 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
641 stream->read(&vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800642 countingStream->clearPool();
643 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800644 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700645 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
646}
647
648VkResult VkEncoder::vkCreateDevice(
649 VkPhysicalDevice physicalDevice,
650 const VkDeviceCreateInfo* pCreateInfo,
651 const VkAllocationCallbacks* pAllocator,
652 VkDevice* pDevice)
653{
654 auto stream = mImpl->stream();
655 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800656 auto resources = mImpl->resources();
657 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800658 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800659 VkPhysicalDevice local_physicalDevice;
660 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800661 VkDeviceCreateInfo* local_pCreateInfo;
662 local_pCreateInfo = nullptr;
663 if (pCreateInfo)
664 {
665 local_pCreateInfo = (VkDeviceCreateInfo*)pool->alloc(sizeof(const VkDeviceCreateInfo));
666 deepcopy_VkDeviceCreateInfo(pool, pCreateInfo, (VkDeviceCreateInfo*)(local_pCreateInfo));
667 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800668 VkAllocationCallbacks* local_pAllocator;
669 local_pAllocator = nullptr;
670 if (pAllocator)
671 {
672 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
673 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
674 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800675 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700676 countingStream->rewind();
677 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800678 uint64_t cgen_var_42;
679 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_42, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800680 countingStream->write((uint64_t*)&cgen_var_42, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800681 marshal_VkDeviceCreateInfo(countingStream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800682 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800683 uint64_t cgen_var_43 = (uint64_t)(uintptr_t)local_pAllocator;
684 countingStream->putBe64(cgen_var_43);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800685 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700686 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800687 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700688 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800689 uint64_t cgen_var_44;
690 countingStream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_44, 1);
691 countingStream->write((uint64_t*)&cgen_var_44, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700692 }
693 uint32_t packetSize_vkCreateDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
694 countingStream->rewind();
695 uint32_t opcode_vkCreateDevice = OP_vkCreateDevice;
696 stream->write(&opcode_vkCreateDevice, sizeof(uint32_t));
697 stream->write(&packetSize_vkCreateDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800698 uint64_t cgen_var_45;
699 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_45, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800700 stream->write((uint64_t*)&cgen_var_45, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800701 marshal_VkDeviceCreateInfo(stream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800702 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800703 uint64_t cgen_var_46 = (uint64_t)(uintptr_t)local_pAllocator;
704 stream->putBe64(cgen_var_46);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800705 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700706 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800707 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700708 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800709 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800710 uint64_t cgen_var_47;
711 stream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_47, 1);
712 stream->write((uint64_t*)&cgen_var_47, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800713 stream->setHandleMapping(resources->unwrapMapping());
714 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800715 uint64_t cgen_var_48;
716 stream->read((uint64_t*)&cgen_var_48, 8);
717 stream->handleMapping()->mapHandles_u64_VkDevice(&cgen_var_48, (VkDevice*)pDevice, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800718 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700719 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
720 stream->read(&vkCreateDevice_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800721 countingStream->clearPool();
722 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800723 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700724 return vkCreateDevice_VkResult_return;
725}
726
727void VkEncoder::vkDestroyDevice(
728 VkDevice device,
729 const VkAllocationCallbacks* pAllocator)
730{
731 auto stream = mImpl->stream();
732 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800733 auto resources = mImpl->resources();
734 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800735 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800736 VkDevice local_device;
737 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800738 VkAllocationCallbacks* local_pAllocator;
739 local_pAllocator = nullptr;
740 if (pAllocator)
741 {
742 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
743 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
744 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800745 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700746 countingStream->rewind();
747 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800748 uint64_t cgen_var_49;
749 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_49, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800750 countingStream->write((uint64_t*)&cgen_var_49, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800751 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800752 uint64_t cgen_var_50 = (uint64_t)(uintptr_t)local_pAllocator;
753 countingStream->putBe64(cgen_var_50);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800754 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700755 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800756 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700757 }
758 }
759 uint32_t packetSize_vkDestroyDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
760 countingStream->rewind();
761 uint32_t opcode_vkDestroyDevice = OP_vkDestroyDevice;
762 stream->write(&opcode_vkDestroyDevice, sizeof(uint32_t));
763 stream->write(&packetSize_vkDestroyDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800764 uint64_t cgen_var_51;
765 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_51, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800766 stream->write((uint64_t*)&cgen_var_51, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800767 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800768 uint64_t cgen_var_52 = (uint64_t)(uintptr_t)local_pAllocator;
769 stream->putBe64(cgen_var_52);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800770 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700771 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800772 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700773 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800774 resources->destroyMapping()->mapHandles_VkDevice((VkDevice*)&device);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700775}
776
777VkResult VkEncoder::vkEnumerateInstanceExtensionProperties(
778 const char* pLayerName,
779 uint32_t* pPropertyCount,
780 VkExtensionProperties* pProperties)
781{
782 auto stream = mImpl->stream();
783 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800784 auto resources = mImpl->resources();
785 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800786 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800787 char* local_pLayerName;
788 local_pLayerName = nullptr;
789 if (pLayerName)
790 {
791 local_pLayerName = pool->strDup(pLayerName);
792 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700793 countingStream->rewind();
794 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800795 countingStream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800796 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800797 uint64_t cgen_var_53 = (uint64_t)(uintptr_t)pPropertyCount;
798 countingStream->putBe64(cgen_var_53);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700799 if (pPropertyCount)
800 {
801 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
802 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800803 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800804 uint64_t cgen_var_54 = (uint64_t)(uintptr_t)pProperties;
805 countingStream->putBe64(cgen_var_54);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700806 if (pProperties)
807 {
808 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
809 {
810 marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
811 }
812 }
813 }
814 uint32_t packetSize_vkEnumerateInstanceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
815 countingStream->rewind();
816 uint32_t opcode_vkEnumerateInstanceExtensionProperties = OP_vkEnumerateInstanceExtensionProperties;
817 stream->write(&opcode_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
818 stream->write(&packetSize_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800819 stream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800820 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800821 uint64_t cgen_var_55 = (uint64_t)(uintptr_t)pPropertyCount;
822 stream->putBe64(cgen_var_55);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700823 if (pPropertyCount)
824 {
825 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
826 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800827 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800828 uint64_t cgen_var_56 = (uint64_t)(uintptr_t)pProperties;
829 stream->putBe64(cgen_var_56);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700830 if (pProperties)
831 {
832 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
833 {
834 marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
835 }
836 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800837 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700838 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800839 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700840 if (pPropertyCount)
841 {
842 if (!(check_pPropertyCount))
843 {
844 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
845 }
846 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
847 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800848 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700849 VkExtensionProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800850 check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700851 if (pProperties)
852 {
853 if (!(check_pProperties))
854 {
855 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
856 }
857 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
858 {
859 unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
860 }
861 }
862 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
863 stream->read(&vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800864 countingStream->clearPool();
865 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800866 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700867 return vkEnumerateInstanceExtensionProperties_VkResult_return;
868}
869
870VkResult VkEncoder::vkEnumerateDeviceExtensionProperties(
871 VkPhysicalDevice physicalDevice,
872 const char* pLayerName,
873 uint32_t* pPropertyCount,
874 VkExtensionProperties* pProperties)
875{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700876 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800877 vkEnumerateDeviceExtensionProperties_VkResult_return = goldfish_vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700878 return vkEnumerateDeviceExtensionProperties_VkResult_return;
879}
880
881VkResult VkEncoder::vkEnumerateInstanceLayerProperties(
882 uint32_t* pPropertyCount,
883 VkLayerProperties* pProperties)
884{
885 auto stream = mImpl->stream();
886 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800887 auto resources = mImpl->resources();
888 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800889 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700890 countingStream->rewind();
891 {
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800892 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800893 uint64_t cgen_var_59 = (uint64_t)(uintptr_t)pPropertyCount;
894 countingStream->putBe64(cgen_var_59);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700895 if (pPropertyCount)
896 {
897 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
898 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800899 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800900 uint64_t cgen_var_60 = (uint64_t)(uintptr_t)pProperties;
901 countingStream->putBe64(cgen_var_60);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700902 if (pProperties)
903 {
904 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
905 {
906 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
907 }
908 }
909 }
910 uint32_t packetSize_vkEnumerateInstanceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
911 countingStream->rewind();
912 uint32_t opcode_vkEnumerateInstanceLayerProperties = OP_vkEnumerateInstanceLayerProperties;
913 stream->write(&opcode_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
914 stream->write(&packetSize_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800915 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800916 uint64_t cgen_var_61 = (uint64_t)(uintptr_t)pPropertyCount;
917 stream->putBe64(cgen_var_61);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700918 if (pPropertyCount)
919 {
920 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
921 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800922 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800923 uint64_t cgen_var_62 = (uint64_t)(uintptr_t)pProperties;
924 stream->putBe64(cgen_var_62);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700925 if (pProperties)
926 {
927 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
928 {
929 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
930 }
931 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800932 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700933 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800934 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700935 if (pPropertyCount)
936 {
937 if (!(check_pPropertyCount))
938 {
939 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
940 }
941 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
942 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800943 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700944 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800945 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700946 if (pProperties)
947 {
948 if (!(check_pProperties))
949 {
950 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
951 }
952 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
953 {
954 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
955 }
956 }
957 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
958 stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800959 countingStream->clearPool();
960 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800961 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700962 return vkEnumerateInstanceLayerProperties_VkResult_return;
963}
964
965VkResult VkEncoder::vkEnumerateDeviceLayerProperties(
966 VkPhysicalDevice physicalDevice,
967 uint32_t* pPropertyCount,
968 VkLayerProperties* pProperties)
969{
970 auto stream = mImpl->stream();
971 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800972 auto resources = mImpl->resources();
973 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800974 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800975 VkPhysicalDevice local_physicalDevice;
976 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700977 countingStream->rewind();
978 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800979 uint64_t cgen_var_65;
980 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_65, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800981 countingStream->write((uint64_t*)&cgen_var_65, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800982 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800983 uint64_t cgen_var_66 = (uint64_t)(uintptr_t)pPropertyCount;
984 countingStream->putBe64(cgen_var_66);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700985 if (pPropertyCount)
986 {
987 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
988 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800989 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800990 uint64_t cgen_var_67 = (uint64_t)(uintptr_t)pProperties;
991 countingStream->putBe64(cgen_var_67);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700992 if (pProperties)
993 {
994 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
995 {
996 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
997 }
998 }
999 }
1000 uint32_t packetSize_vkEnumerateDeviceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1001 countingStream->rewind();
1002 uint32_t opcode_vkEnumerateDeviceLayerProperties = OP_vkEnumerateDeviceLayerProperties;
1003 stream->write(&opcode_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
1004 stream->write(&packetSize_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001005 uint64_t cgen_var_68;
1006 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_68, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001007 stream->write((uint64_t*)&cgen_var_68, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001008 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001009 uint64_t cgen_var_69 = (uint64_t)(uintptr_t)pPropertyCount;
1010 stream->putBe64(cgen_var_69);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001011 if (pPropertyCount)
1012 {
1013 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1014 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001015 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001016 uint64_t cgen_var_70 = (uint64_t)(uintptr_t)pProperties;
1017 stream->putBe64(cgen_var_70);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001018 if (pProperties)
1019 {
1020 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1021 {
1022 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1023 }
1024 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001025 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001026 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001027 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001028 if (pPropertyCount)
1029 {
1030 if (!(check_pPropertyCount))
1031 {
1032 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1033 }
1034 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1035 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001036 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001037 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001038 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001039 if (pProperties)
1040 {
1041 if (!(check_pProperties))
1042 {
1043 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1044 }
1045 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1046 {
1047 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1048 }
1049 }
1050 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
1051 stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001052 countingStream->clearPool();
1053 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001054 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001055 return vkEnumerateDeviceLayerProperties_VkResult_return;
1056}
1057
1058void VkEncoder::vkGetDeviceQueue(
1059 VkDevice device,
1060 uint32_t queueFamilyIndex,
1061 uint32_t queueIndex,
1062 VkQueue* pQueue)
1063{
1064 auto stream = mImpl->stream();
1065 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001066 auto resources = mImpl->resources();
1067 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001068 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001069 VkDevice local_device;
1070 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001071 uint32_t local_queueFamilyIndex;
1072 local_queueFamilyIndex = queueFamilyIndex;
1073 uint32_t local_queueIndex;
1074 local_queueIndex = queueIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001075 countingStream->rewind();
1076 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001077 uint64_t cgen_var_73;
1078 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_73, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001079 countingStream->write((uint64_t*)&cgen_var_73, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001080 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1081 countingStream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001082 uint64_t cgen_var_74;
1083 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_74, 1);
1084 countingStream->write((uint64_t*)&cgen_var_74, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001085 }
1086 uint32_t packetSize_vkGetDeviceQueue = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1087 countingStream->rewind();
1088 uint32_t opcode_vkGetDeviceQueue = OP_vkGetDeviceQueue;
1089 stream->write(&opcode_vkGetDeviceQueue, sizeof(uint32_t));
1090 stream->write(&packetSize_vkGetDeviceQueue, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001091 uint64_t cgen_var_75;
1092 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_75, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001093 stream->write((uint64_t*)&cgen_var_75, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001094 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1095 stream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yange4008a02018-11-18 12:22:48 -08001096 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08001097 uint64_t cgen_var_76;
1098 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_76, 1);
1099 stream->write((uint64_t*)&cgen_var_76, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001100 stream->setHandleMapping(resources->unwrapMapping());
1101 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08001102 uint64_t cgen_var_77;
1103 stream->read((uint64_t*)&cgen_var_77, 8);
1104 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_77, (VkQueue*)pQueue, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001105 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001106}
1107
1108VkResult VkEncoder::vkQueueSubmit(
1109 VkQueue queue,
1110 uint32_t submitCount,
1111 const VkSubmitInfo* pSubmits,
1112 VkFence fence)
1113{
1114 auto stream = mImpl->stream();
1115 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001116 auto resources = mImpl->resources();
1117 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001118 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001119 VkQueue local_queue;
1120 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001121 uint32_t local_submitCount;
1122 local_submitCount = submitCount;
1123 VkSubmitInfo* local_pSubmits;
1124 local_pSubmits = nullptr;
1125 if (pSubmits)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001126 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001127 local_pSubmits = (VkSubmitInfo*)pool->alloc(((submitCount)) * sizeof(const VkSubmitInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001128 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1129 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001130 deepcopy_VkSubmitInfo(pool, pSubmits + i, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001131 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001132 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001133 VkFence local_fence;
1134 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001135 countingStream->rewind();
1136 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001137 uint64_t cgen_var_78;
1138 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_78, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001139 countingStream->write((uint64_t*)&cgen_var_78, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001140 countingStream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
1141 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1142 {
1143 marshal_VkSubmitInfo(countingStream, (VkSubmitInfo*)(local_pSubmits + i));
1144 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001145 uint64_t cgen_var_79;
1146 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_79, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001147 countingStream->write((uint64_t*)&cgen_var_79, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001148 }
1149 uint32_t packetSize_vkQueueSubmit = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1150 countingStream->rewind();
1151 uint32_t opcode_vkQueueSubmit = OP_vkQueueSubmit;
1152 stream->write(&opcode_vkQueueSubmit, sizeof(uint32_t));
1153 stream->write(&packetSize_vkQueueSubmit, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001154 uint64_t cgen_var_80;
1155 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_80, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001156 stream->write((uint64_t*)&cgen_var_80, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001157 stream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001158 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1159 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001160 marshal_VkSubmitInfo(stream, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001161 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001162 uint64_t cgen_var_81;
1163 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_81, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001164 stream->write((uint64_t*)&cgen_var_81, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001165 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
1166 stream->read(&vkQueueSubmit_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001167 countingStream->clearPool();
1168 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001169 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001170 return vkQueueSubmit_VkResult_return;
1171}
1172
1173VkResult VkEncoder::vkQueueWaitIdle(
1174 VkQueue queue)
1175{
1176 auto stream = mImpl->stream();
1177 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001178 auto resources = mImpl->resources();
1179 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001180 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001181 VkQueue local_queue;
1182 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001183 countingStream->rewind();
1184 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001185 uint64_t cgen_var_82;
1186 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_82, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001187 countingStream->write((uint64_t*)&cgen_var_82, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001188 }
1189 uint32_t packetSize_vkQueueWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1190 countingStream->rewind();
1191 uint32_t opcode_vkQueueWaitIdle = OP_vkQueueWaitIdle;
1192 stream->write(&opcode_vkQueueWaitIdle, sizeof(uint32_t));
1193 stream->write(&packetSize_vkQueueWaitIdle, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001194 uint64_t cgen_var_83;
1195 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_83, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001196 stream->write((uint64_t*)&cgen_var_83, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001197 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
1198 stream->read(&vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001199 countingStream->clearPool();
1200 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001201 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001202 return vkQueueWaitIdle_VkResult_return;
1203}
1204
1205VkResult VkEncoder::vkDeviceWaitIdle(
1206 VkDevice device)
1207{
1208 auto stream = mImpl->stream();
1209 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001210 auto resources = mImpl->resources();
1211 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001212 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001213 VkDevice local_device;
1214 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001215 countingStream->rewind();
1216 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001217 uint64_t cgen_var_84;
1218 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_84, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001219 countingStream->write((uint64_t*)&cgen_var_84, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001220 }
1221 uint32_t packetSize_vkDeviceWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1222 countingStream->rewind();
1223 uint32_t opcode_vkDeviceWaitIdle = OP_vkDeviceWaitIdle;
1224 stream->write(&opcode_vkDeviceWaitIdle, sizeof(uint32_t));
1225 stream->write(&packetSize_vkDeviceWaitIdle, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001226 uint64_t cgen_var_85;
1227 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_85, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001228 stream->write((uint64_t*)&cgen_var_85, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001229 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
1230 stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001231 countingStream->clearPool();
1232 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001233 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001234 return vkDeviceWaitIdle_VkResult_return;
1235}
1236
1237VkResult VkEncoder::vkAllocateMemory(
1238 VkDevice device,
1239 const VkMemoryAllocateInfo* pAllocateInfo,
1240 const VkAllocationCallbacks* pAllocator,
1241 VkDeviceMemory* pMemory)
1242{
1243 auto stream = mImpl->stream();
1244 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001245 auto resources = mImpl->resources();
1246 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001247 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001248 VkDevice local_device;
1249 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001250 VkMemoryAllocateInfo* local_pAllocateInfo;
1251 local_pAllocateInfo = nullptr;
1252 if (pAllocateInfo)
1253 {
1254 local_pAllocateInfo = (VkMemoryAllocateInfo*)pool->alloc(sizeof(const VkMemoryAllocateInfo));
1255 deepcopy_VkMemoryAllocateInfo(pool, pAllocateInfo, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
1256 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001257 VkAllocationCallbacks* local_pAllocator;
1258 local_pAllocator = nullptr;
1259 if (pAllocator)
1260 {
1261 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1262 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1263 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001264 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001265 countingStream->rewind();
1266 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001267 uint64_t cgen_var_86;
1268 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_86, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001269 countingStream->write((uint64_t*)&cgen_var_86, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001270 marshal_VkMemoryAllocateInfo(countingStream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001271 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001272 uint64_t cgen_var_87 = (uint64_t)(uintptr_t)local_pAllocator;
1273 countingStream->putBe64(cgen_var_87);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001274 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001275 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001276 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001277 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001278 uint64_t cgen_var_88;
1279 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_88, 1);
1280 countingStream->write((uint64_t*)&cgen_var_88, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001281 }
1282 uint32_t packetSize_vkAllocateMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1283 countingStream->rewind();
1284 uint32_t opcode_vkAllocateMemory = OP_vkAllocateMemory;
1285 stream->write(&opcode_vkAllocateMemory, sizeof(uint32_t));
1286 stream->write(&packetSize_vkAllocateMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001287 uint64_t cgen_var_89;
1288 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_89, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001289 stream->write((uint64_t*)&cgen_var_89, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001290 marshal_VkMemoryAllocateInfo(stream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001291 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001292 uint64_t cgen_var_90 = (uint64_t)(uintptr_t)local_pAllocator;
1293 stream->putBe64(cgen_var_90);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001294 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001295 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001296 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001297 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08001298 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08001299 uint64_t cgen_var_91;
1300 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_91, 1);
1301 stream->write((uint64_t*)&cgen_var_91, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001302 stream->setHandleMapping(resources->unwrapMapping());
1303 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08001304 uint64_t cgen_var_92;
1305 stream->read((uint64_t*)&cgen_var_92, 8);
1306 stream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_92, (VkDeviceMemory*)pMemory, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001307 stream->unsetHandleMapping();
Lingfeng Yange30d3382018-11-09 08:24:37 -08001308 goldfish_vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001309 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
1310 stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001311 countingStream->clearPool();
1312 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001313 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001314 return vkAllocateMemory_VkResult_return;
1315}
1316
1317void VkEncoder::vkFreeMemory(
1318 VkDevice device,
1319 VkDeviceMemory memory,
1320 const VkAllocationCallbacks* pAllocator)
1321{
1322 auto stream = mImpl->stream();
1323 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001324 auto resources = mImpl->resources();
1325 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001326 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001327 VkDevice local_device;
1328 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001329 VkDeviceMemory local_memory;
1330 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001331 VkAllocationCallbacks* local_pAllocator;
1332 local_pAllocator = nullptr;
1333 if (pAllocator)
1334 {
1335 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1336 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1337 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001338 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001339 countingStream->rewind();
1340 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001341 uint64_t cgen_var_93;
1342 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_93, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001343 countingStream->write((uint64_t*)&cgen_var_93, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001344 uint64_t cgen_var_94;
1345 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_94, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001346 countingStream->write((uint64_t*)&cgen_var_94, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001347 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001348 uint64_t cgen_var_95 = (uint64_t)(uintptr_t)local_pAllocator;
1349 countingStream->putBe64(cgen_var_95);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001350 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001351 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001352 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001353 }
1354 }
1355 uint32_t packetSize_vkFreeMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1356 countingStream->rewind();
1357 uint32_t opcode_vkFreeMemory = OP_vkFreeMemory;
1358 stream->write(&opcode_vkFreeMemory, sizeof(uint32_t));
1359 stream->write(&packetSize_vkFreeMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001360 uint64_t cgen_var_96;
1361 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_96, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001362 stream->write((uint64_t*)&cgen_var_96, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001363 uint64_t cgen_var_97;
1364 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_97, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001365 stream->write((uint64_t*)&cgen_var_97, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001366 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001367 uint64_t cgen_var_98 = (uint64_t)(uintptr_t)local_pAllocator;
1368 stream->putBe64(cgen_var_98);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001369 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001370 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001371 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001372 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001373 resources->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001374}
1375
1376VkResult VkEncoder::vkMapMemory(
1377 VkDevice device,
1378 VkDeviceMemory memory,
1379 VkDeviceSize offset,
1380 VkDeviceSize size,
1381 VkMemoryMapFlags flags,
1382 void** ppData)
1383{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001384 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yange30d3382018-11-09 08:24:37 -08001385 vkMapMemory_VkResult_return = goldfish_vkMapMemory(device, memory, offset, size, flags, ppData);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001386 return vkMapMemory_VkResult_return;
1387}
1388
1389void VkEncoder::vkUnmapMemory(
1390 VkDevice device,
1391 VkDeviceMemory memory)
1392{
Lingfeng Yange30d3382018-11-09 08:24:37 -08001393 goldfish_vkUnmapMemory(device, memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001394}
1395
1396VkResult VkEncoder::vkFlushMappedMemoryRanges(
1397 VkDevice device,
1398 uint32_t memoryRangeCount,
1399 const VkMappedMemoryRange* pMemoryRanges)
1400{
1401 auto stream = mImpl->stream();
1402 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001403 auto resources = mImpl->resources();
1404 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001405 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001406 VkDevice local_device;
1407 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001408 uint32_t local_memoryRangeCount;
1409 local_memoryRangeCount = memoryRangeCount;
1410 VkMappedMemoryRange* local_pMemoryRanges;
1411 local_pMemoryRanges = nullptr;
1412 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001413 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001414 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001415 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1416 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001417 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1418 }
1419 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001420 countingStream->rewind();
1421 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001422 uint64_t cgen_var_99;
1423 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_99, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001424 countingStream->write((uint64_t*)&cgen_var_99, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001425 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1426 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1427 {
1428 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001429 }
1430 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001431 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1432 {
1433 auto range = pMemoryRanges[i];
1434 auto memory = pMemoryRanges[i].memory;
1435 auto size = pMemoryRanges[i].size;
1436 auto offset = pMemoryRanges[i].offset;
1437 auto goldfishMem = as_goldfish_VkDeviceMemory(memory);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001438 uint64_t streamSize = 0;
1439 if (!goldfishMem) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yange30d3382018-11-09 08:24:37 -08001440 auto hostPtr = goldfishMem->ptr;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001441 auto actualSize = size == VK_WHOLE_SIZE ? goldfishMem->size : size;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001442 if (!hostPtr) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001443 streamSize = actualSize;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001444 countingStream->write(&streamSize, sizeof(uint64_t));
Lingfeng Yange30d3382018-11-09 08:24:37 -08001445 uint8_t* targetRange = hostPtr + offset;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001446 countingStream->write(targetRange, actualSize);
Lingfeng Yange30d3382018-11-09 08:24:37 -08001447 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001448 uint32_t packetSize_vkFlushMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1449 countingStream->rewind();
1450 uint32_t opcode_vkFlushMappedMemoryRanges = OP_vkFlushMappedMemoryRanges;
1451 stream->write(&opcode_vkFlushMappedMemoryRanges, sizeof(uint32_t));
1452 stream->write(&packetSize_vkFlushMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001453 uint64_t cgen_var_100;
1454 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_100, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001455 stream->write((uint64_t*)&cgen_var_100, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001456 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001457 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1458 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001459 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001460 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001461 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1462 {
1463 auto range = pMemoryRanges[i];
1464 auto memory = pMemoryRanges[i].memory;
1465 auto size = pMemoryRanges[i].size;
1466 auto offset = pMemoryRanges[i].offset;
1467 auto goldfishMem = as_goldfish_VkDeviceMemory(memory);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001468 uint64_t streamSize = 0;
1469 if (!goldfishMem) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yange30d3382018-11-09 08:24:37 -08001470 auto hostPtr = goldfishMem->ptr;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001471 auto actualSize = size == VK_WHOLE_SIZE ? goldfishMem->size : size;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001472 if (!hostPtr) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001473 streamSize = actualSize;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001474 stream->write(&streamSize, sizeof(uint64_t));
Lingfeng Yange30d3382018-11-09 08:24:37 -08001475 uint8_t* targetRange = hostPtr + offset;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001476 stream->write(targetRange, actualSize);
Lingfeng Yange30d3382018-11-09 08:24:37 -08001477 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001478 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
1479 stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001480 countingStream->clearPool();
1481 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001482 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001483 return vkFlushMappedMemoryRanges_VkResult_return;
1484}
1485
1486VkResult VkEncoder::vkInvalidateMappedMemoryRanges(
1487 VkDevice device,
1488 uint32_t memoryRangeCount,
1489 const VkMappedMemoryRange* pMemoryRanges)
1490{
1491 auto stream = mImpl->stream();
1492 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001493 auto resources = mImpl->resources();
1494 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001495 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001496 VkDevice local_device;
1497 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001498 uint32_t local_memoryRangeCount;
1499 local_memoryRangeCount = memoryRangeCount;
1500 VkMappedMemoryRange* local_pMemoryRanges;
1501 local_pMemoryRanges = nullptr;
1502 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001503 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001504 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001505 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1506 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001507 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1508 }
1509 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001510 countingStream->rewind();
1511 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001512 uint64_t cgen_var_101;
1513 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_101, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001514 countingStream->write((uint64_t*)&cgen_var_101, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001515 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1516 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1517 {
1518 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001519 }
1520 }
1521 uint32_t packetSize_vkInvalidateMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1522 countingStream->rewind();
1523 uint32_t opcode_vkInvalidateMappedMemoryRanges = OP_vkInvalidateMappedMemoryRanges;
1524 stream->write(&opcode_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
1525 stream->write(&packetSize_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001526 uint64_t cgen_var_102;
1527 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_102, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001528 stream->write((uint64_t*)&cgen_var_102, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001529 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001530 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1531 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001532 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001533 }
1534 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
1535 stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001536 countingStream->clearPool();
1537 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001538 pool->freeAll();
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001539 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1540 {
1541 auto range = pMemoryRanges[i];
1542 auto memory = pMemoryRanges[i].memory;
1543 auto size = pMemoryRanges[i].size;
1544 auto offset = pMemoryRanges[i].offset;
1545 auto goldfishMem = as_goldfish_VkDeviceMemory(memory);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001546 uint64_t streamSize = 0;
1547 if (!goldfishMem) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001548 auto hostPtr = goldfishMem->ptr;
1549 auto actualSize = size == VK_WHOLE_SIZE ? goldfishMem->size : size;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001550 if (!hostPtr) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001551 streamSize = actualSize;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001552 stream->read(&streamSize, sizeof(uint64_t));
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001553 uint8_t* targetRange = hostPtr + offset;
1554 stream->read(targetRange, actualSize);
1555 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001556 return vkInvalidateMappedMemoryRanges_VkResult_return;
1557}
1558
1559void VkEncoder::vkGetDeviceMemoryCommitment(
1560 VkDevice device,
1561 VkDeviceMemory memory,
1562 VkDeviceSize* pCommittedMemoryInBytes)
1563{
1564 auto stream = mImpl->stream();
1565 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001566 auto resources = mImpl->resources();
1567 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001568 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001569 VkDevice local_device;
1570 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001571 VkDeviceMemory local_memory;
1572 local_memory = memory;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001573 countingStream->rewind();
1574 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001575 uint64_t cgen_var_103;
1576 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_103, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001577 countingStream->write((uint64_t*)&cgen_var_103, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001578 uint64_t cgen_var_104;
1579 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_104, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001580 countingStream->write((uint64_t*)&cgen_var_104, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001581 countingStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1582 }
1583 uint32_t packetSize_vkGetDeviceMemoryCommitment = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1584 countingStream->rewind();
1585 uint32_t opcode_vkGetDeviceMemoryCommitment = OP_vkGetDeviceMemoryCommitment;
1586 stream->write(&opcode_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
1587 stream->write(&packetSize_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001588 uint64_t cgen_var_105;
1589 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_105, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001590 stream->write((uint64_t*)&cgen_var_105, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001591 uint64_t cgen_var_106;
1592 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_106, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001593 stream->write((uint64_t*)&cgen_var_106, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001594 stream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1595 stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1596}
1597
1598VkResult VkEncoder::vkBindBufferMemory(
1599 VkDevice device,
1600 VkBuffer buffer,
1601 VkDeviceMemory memory,
1602 VkDeviceSize memoryOffset)
1603{
1604 auto stream = mImpl->stream();
1605 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001606 auto resources = mImpl->resources();
1607 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001608 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001609 VkDevice local_device;
1610 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001611 VkBuffer local_buffer;
1612 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001613 VkDeviceMemory local_memory;
1614 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001615 VkDeviceSize local_memoryOffset;
1616 local_memoryOffset = memoryOffset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001617 countingStream->rewind();
1618 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001619 uint64_t cgen_var_107;
1620 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_107, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001621 countingStream->write((uint64_t*)&cgen_var_107, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001622 uint64_t cgen_var_108;
1623 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_108, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001624 countingStream->write((uint64_t*)&cgen_var_108, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001625 uint64_t cgen_var_109;
1626 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_109, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001627 countingStream->write((uint64_t*)&cgen_var_109, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001628 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001629 }
1630 uint32_t packetSize_vkBindBufferMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1631 countingStream->rewind();
1632 uint32_t opcode_vkBindBufferMemory = OP_vkBindBufferMemory;
1633 stream->write(&opcode_vkBindBufferMemory, sizeof(uint32_t));
1634 stream->write(&packetSize_vkBindBufferMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001635 uint64_t cgen_var_110;
1636 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_110, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001637 stream->write((uint64_t*)&cgen_var_110, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001638 uint64_t cgen_var_111;
1639 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_111, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001640 stream->write((uint64_t*)&cgen_var_111, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001641 uint64_t cgen_var_112;
1642 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_112, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001643 stream->write((uint64_t*)&cgen_var_112, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001644 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001645 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
1646 stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001647 countingStream->clearPool();
1648 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001649 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001650 return vkBindBufferMemory_VkResult_return;
1651}
1652
1653VkResult VkEncoder::vkBindImageMemory(
1654 VkDevice device,
1655 VkImage image,
1656 VkDeviceMemory memory,
1657 VkDeviceSize memoryOffset)
1658{
1659 auto stream = mImpl->stream();
1660 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001661 auto resources = mImpl->resources();
1662 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001663 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001664 VkDevice local_device;
1665 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001666 VkImage local_image;
1667 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001668 VkDeviceMemory local_memory;
1669 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001670 VkDeviceSize local_memoryOffset;
1671 local_memoryOffset = memoryOffset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001672 countingStream->rewind();
1673 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001674 uint64_t cgen_var_113;
1675 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_113, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001676 countingStream->write((uint64_t*)&cgen_var_113, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001677 uint64_t cgen_var_114;
1678 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_114, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001679 countingStream->write((uint64_t*)&cgen_var_114, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001680 uint64_t cgen_var_115;
1681 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_115, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001682 countingStream->write((uint64_t*)&cgen_var_115, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001683 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001684 }
1685 uint32_t packetSize_vkBindImageMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1686 countingStream->rewind();
1687 uint32_t opcode_vkBindImageMemory = OP_vkBindImageMemory;
1688 stream->write(&opcode_vkBindImageMemory, sizeof(uint32_t));
1689 stream->write(&packetSize_vkBindImageMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001690 uint64_t cgen_var_116;
1691 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_116, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001692 stream->write((uint64_t*)&cgen_var_116, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001693 uint64_t cgen_var_117;
1694 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_117, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001695 stream->write((uint64_t*)&cgen_var_117, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001696 uint64_t cgen_var_118;
1697 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_118, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001698 stream->write((uint64_t*)&cgen_var_118, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001699 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001700 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
1701 stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001702 countingStream->clearPool();
1703 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001704 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001705 return vkBindImageMemory_VkResult_return;
1706}
1707
1708void VkEncoder::vkGetBufferMemoryRequirements(
1709 VkDevice device,
1710 VkBuffer buffer,
1711 VkMemoryRequirements* pMemoryRequirements)
1712{
1713 auto stream = mImpl->stream();
1714 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001715 auto resources = mImpl->resources();
1716 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001717 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001718 VkDevice local_device;
1719 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001720 VkBuffer local_buffer;
1721 local_buffer = buffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001722 countingStream->rewind();
1723 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001724 uint64_t cgen_var_119;
1725 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_119, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001726 countingStream->write((uint64_t*)&cgen_var_119, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001727 uint64_t cgen_var_120;
1728 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_120, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001729 countingStream->write((uint64_t*)&cgen_var_120, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001730 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
1731 }
1732 uint32_t packetSize_vkGetBufferMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1733 countingStream->rewind();
1734 uint32_t opcode_vkGetBufferMemoryRequirements = OP_vkGetBufferMemoryRequirements;
1735 stream->write(&opcode_vkGetBufferMemoryRequirements, sizeof(uint32_t));
1736 stream->write(&packetSize_vkGetBufferMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001737 uint64_t cgen_var_121;
1738 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_121, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001739 stream->write((uint64_t*)&cgen_var_121, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001740 uint64_t cgen_var_122;
1741 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_122, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001742 stream->write((uint64_t*)&cgen_var_122, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001743 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1744 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1745}
1746
1747void VkEncoder::vkGetImageMemoryRequirements(
1748 VkDevice device,
1749 VkImage image,
1750 VkMemoryRequirements* pMemoryRequirements)
1751{
1752 auto stream = mImpl->stream();
1753 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001754 auto resources = mImpl->resources();
1755 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001756 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001757 VkDevice local_device;
1758 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001759 VkImage local_image;
1760 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001761 countingStream->rewind();
1762 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001763 uint64_t cgen_var_123;
1764 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_123, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001765 countingStream->write((uint64_t*)&cgen_var_123, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001766 uint64_t cgen_var_124;
1767 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_124, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001768 countingStream->write((uint64_t*)&cgen_var_124, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001769 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
1770 }
1771 uint32_t packetSize_vkGetImageMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1772 countingStream->rewind();
1773 uint32_t opcode_vkGetImageMemoryRequirements = OP_vkGetImageMemoryRequirements;
1774 stream->write(&opcode_vkGetImageMemoryRequirements, sizeof(uint32_t));
1775 stream->write(&packetSize_vkGetImageMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001776 uint64_t cgen_var_125;
1777 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_125, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001778 stream->write((uint64_t*)&cgen_var_125, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001779 uint64_t cgen_var_126;
1780 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_126, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001781 stream->write((uint64_t*)&cgen_var_126, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001782 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1783 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1784}
1785
1786void VkEncoder::vkGetImageSparseMemoryRequirements(
1787 VkDevice device,
1788 VkImage image,
1789 uint32_t* pSparseMemoryRequirementCount,
1790 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
1791{
1792 auto stream = mImpl->stream();
1793 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001794 auto resources = mImpl->resources();
1795 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001796 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001797 VkDevice local_device;
1798 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001799 VkImage local_image;
1800 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001801 countingStream->rewind();
1802 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001803 uint64_t cgen_var_127;
1804 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_127, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001805 countingStream->write((uint64_t*)&cgen_var_127, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001806 uint64_t cgen_var_128;
1807 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_128, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001808 countingStream->write((uint64_t*)&cgen_var_128, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001809 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001810 uint64_t cgen_var_129 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
1811 countingStream->putBe64(cgen_var_129);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001812 if (pSparseMemoryRequirementCount)
1813 {
1814 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1815 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001816 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001817 uint64_t cgen_var_130 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
1818 countingStream->putBe64(cgen_var_130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001819 if (pSparseMemoryRequirements)
1820 {
1821 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1822 {
1823 marshal_VkSparseImageMemoryRequirements(countingStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1824 }
1825 }
1826 }
1827 uint32_t packetSize_vkGetImageSparseMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1828 countingStream->rewind();
1829 uint32_t opcode_vkGetImageSparseMemoryRequirements = OP_vkGetImageSparseMemoryRequirements;
1830 stream->write(&opcode_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
1831 stream->write(&packetSize_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001832 uint64_t cgen_var_131;
1833 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_131, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001834 stream->write((uint64_t*)&cgen_var_131, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001835 uint64_t cgen_var_132;
1836 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_132, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001837 stream->write((uint64_t*)&cgen_var_132, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001838 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001839 uint64_t cgen_var_133 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
1840 stream->putBe64(cgen_var_133);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001841 if (pSparseMemoryRequirementCount)
1842 {
1843 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1844 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001845 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001846 uint64_t cgen_var_134 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
1847 stream->putBe64(cgen_var_134);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001848 if (pSparseMemoryRequirements)
1849 {
1850 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1851 {
1852 marshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1853 }
1854 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001855 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001856 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001857 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001858 if (pSparseMemoryRequirementCount)
1859 {
1860 if (!(check_pSparseMemoryRequirementCount))
1861 {
1862 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
1863 }
1864 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1865 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001866 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001867 VkSparseImageMemoryRequirements* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001868 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001869 if (pSparseMemoryRequirements)
1870 {
1871 if (!(check_pSparseMemoryRequirements))
1872 {
1873 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
1874 }
1875 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1876 {
1877 unmarshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1878 }
1879 }
1880}
1881
1882void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties(
1883 VkPhysicalDevice physicalDevice,
1884 VkFormat format,
1885 VkImageType type,
1886 VkSampleCountFlagBits samples,
1887 VkImageUsageFlags usage,
1888 VkImageTiling tiling,
1889 uint32_t* pPropertyCount,
1890 VkSparseImageFormatProperties* pProperties)
1891{
1892 auto stream = mImpl->stream();
1893 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001894 auto resources = mImpl->resources();
1895 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001896 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001897 VkPhysicalDevice local_physicalDevice;
1898 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001899 VkFormat local_format;
1900 local_format = format;
1901 VkImageType local_type;
1902 local_type = type;
1903 VkSampleCountFlagBits local_samples;
1904 local_samples = samples;
1905 VkImageUsageFlags local_usage;
1906 local_usage = usage;
1907 VkImageTiling local_tiling;
1908 local_tiling = tiling;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001909 countingStream->rewind();
1910 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001911 uint64_t cgen_var_137;
1912 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_137, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001913 countingStream->write((uint64_t*)&cgen_var_137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001914 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
1915 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
1916 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
1917 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
1918 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001919 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001920 uint64_t cgen_var_138 = (uint64_t)(uintptr_t)pPropertyCount;
1921 countingStream->putBe64(cgen_var_138);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001922 if (pPropertyCount)
1923 {
1924 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1925 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001926 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001927 uint64_t cgen_var_139 = (uint64_t)(uintptr_t)pProperties;
1928 countingStream->putBe64(cgen_var_139);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001929 if (pProperties)
1930 {
1931 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1932 {
1933 marshal_VkSparseImageFormatProperties(countingStream, (VkSparseImageFormatProperties*)(pProperties + i));
1934 }
1935 }
1936 }
1937 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1938 countingStream->rewind();
1939 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties = OP_vkGetPhysicalDeviceSparseImageFormatProperties;
1940 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
1941 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001942 uint64_t cgen_var_140;
1943 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_140, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001944 stream->write((uint64_t*)&cgen_var_140, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001945 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
1946 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
1947 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
1948 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
1949 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001950 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001951 uint64_t cgen_var_141 = (uint64_t)(uintptr_t)pPropertyCount;
1952 stream->putBe64(cgen_var_141);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001953 if (pPropertyCount)
1954 {
1955 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1956 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001957 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001958 uint64_t cgen_var_142 = (uint64_t)(uintptr_t)pProperties;
1959 stream->putBe64(cgen_var_142);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001960 if (pProperties)
1961 {
1962 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1963 {
1964 marshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
1965 }
1966 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001967 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001968 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001969 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001970 if (pPropertyCount)
1971 {
1972 if (!(check_pPropertyCount))
1973 {
1974 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1975 }
1976 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1977 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001978 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001979 VkSparseImageFormatProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001980 check_pProperties = (VkSparseImageFormatProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001981 if (pProperties)
1982 {
1983 if (!(check_pProperties))
1984 {
1985 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1986 }
1987 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1988 {
1989 unmarshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
1990 }
1991 }
1992}
1993
1994VkResult VkEncoder::vkQueueBindSparse(
1995 VkQueue queue,
1996 uint32_t bindInfoCount,
1997 const VkBindSparseInfo* pBindInfo,
1998 VkFence fence)
1999{
2000 auto stream = mImpl->stream();
2001 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002002 auto resources = mImpl->resources();
2003 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002004 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002005 VkQueue local_queue;
2006 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002007 uint32_t local_bindInfoCount;
2008 local_bindInfoCount = bindInfoCount;
2009 VkBindSparseInfo* local_pBindInfo;
2010 local_pBindInfo = nullptr;
2011 if (pBindInfo)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002012 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002013 local_pBindInfo = (VkBindSparseInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindSparseInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002014 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2015 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002016 deepcopy_VkBindSparseInfo(pool, pBindInfo + i, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002017 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002018 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002019 VkFence local_fence;
2020 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002021 countingStream->rewind();
2022 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002023 uint64_t cgen_var_145;
2024 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_145, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002025 countingStream->write((uint64_t*)&cgen_var_145, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002026 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
2027 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2028 {
2029 marshal_VkBindSparseInfo(countingStream, (VkBindSparseInfo*)(local_pBindInfo + i));
2030 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002031 uint64_t cgen_var_146;
2032 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_146, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002033 countingStream->write((uint64_t*)&cgen_var_146, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002034 }
2035 uint32_t packetSize_vkQueueBindSparse = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2036 countingStream->rewind();
2037 uint32_t opcode_vkQueueBindSparse = OP_vkQueueBindSparse;
2038 stream->write(&opcode_vkQueueBindSparse, sizeof(uint32_t));
2039 stream->write(&packetSize_vkQueueBindSparse, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002040 uint64_t cgen_var_147;
2041 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_147, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002042 stream->write((uint64_t*)&cgen_var_147, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002043 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002044 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2045 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002046 marshal_VkBindSparseInfo(stream, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002047 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002048 uint64_t cgen_var_148;
2049 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_148, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002050 stream->write((uint64_t*)&cgen_var_148, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002051 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
2052 stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002053 countingStream->clearPool();
2054 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002055 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002056 return vkQueueBindSparse_VkResult_return;
2057}
2058
2059VkResult VkEncoder::vkCreateFence(
2060 VkDevice device,
2061 const VkFenceCreateInfo* pCreateInfo,
2062 const VkAllocationCallbacks* pAllocator,
2063 VkFence* pFence)
2064{
2065 auto stream = mImpl->stream();
2066 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002067 auto resources = mImpl->resources();
2068 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002069 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002070 VkDevice local_device;
2071 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002072 VkFenceCreateInfo* local_pCreateInfo;
2073 local_pCreateInfo = nullptr;
2074 if (pCreateInfo)
2075 {
2076 local_pCreateInfo = (VkFenceCreateInfo*)pool->alloc(sizeof(const VkFenceCreateInfo));
2077 deepcopy_VkFenceCreateInfo(pool, pCreateInfo, (VkFenceCreateInfo*)(local_pCreateInfo));
2078 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002079 VkAllocationCallbacks* local_pAllocator;
2080 local_pAllocator = nullptr;
2081 if (pAllocator)
2082 {
2083 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2084 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2085 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002086 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002087 countingStream->rewind();
2088 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002089 uint64_t cgen_var_149;
2090 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_149, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002091 countingStream->write((uint64_t*)&cgen_var_149, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002092 marshal_VkFenceCreateInfo(countingStream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002093 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002094 uint64_t cgen_var_150 = (uint64_t)(uintptr_t)local_pAllocator;
2095 countingStream->putBe64(cgen_var_150);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002096 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002097 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002098 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002099 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002100 uint64_t cgen_var_151;
2101 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_151, 1);
2102 countingStream->write((uint64_t*)&cgen_var_151, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002103 }
2104 uint32_t packetSize_vkCreateFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2105 countingStream->rewind();
2106 uint32_t opcode_vkCreateFence = OP_vkCreateFence;
2107 stream->write(&opcode_vkCreateFence, sizeof(uint32_t));
2108 stream->write(&packetSize_vkCreateFence, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002109 uint64_t cgen_var_152;
2110 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_152, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002111 stream->write((uint64_t*)&cgen_var_152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002112 marshal_VkFenceCreateInfo(stream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002113 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002114 uint64_t cgen_var_153 = (uint64_t)(uintptr_t)local_pAllocator;
2115 stream->putBe64(cgen_var_153);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002116 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002117 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002118 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002119 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002120 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002121 uint64_t cgen_var_154;
2122 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_154, 1);
2123 stream->write((uint64_t*)&cgen_var_154, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002124 stream->setHandleMapping(resources->unwrapMapping());
2125 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002126 uint64_t cgen_var_155;
2127 stream->read((uint64_t*)&cgen_var_155, 8);
2128 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_155, (VkFence*)pFence, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002129 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002130 VkResult vkCreateFence_VkResult_return = (VkResult)0;
2131 stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002132 countingStream->clearPool();
2133 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002134 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002135 return vkCreateFence_VkResult_return;
2136}
2137
2138void VkEncoder::vkDestroyFence(
2139 VkDevice device,
2140 VkFence fence,
2141 const VkAllocationCallbacks* pAllocator)
2142{
2143 auto stream = mImpl->stream();
2144 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002145 auto resources = mImpl->resources();
2146 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002147 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002148 VkDevice local_device;
2149 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002150 VkFence local_fence;
2151 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002152 VkAllocationCallbacks* local_pAllocator;
2153 local_pAllocator = nullptr;
2154 if (pAllocator)
2155 {
2156 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2157 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2158 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002159 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002160 countingStream->rewind();
2161 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002162 uint64_t cgen_var_156;
2163 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_156, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002164 countingStream->write((uint64_t*)&cgen_var_156, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002165 uint64_t cgen_var_157;
2166 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_157, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002167 countingStream->write((uint64_t*)&cgen_var_157, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002168 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002169 uint64_t cgen_var_158 = (uint64_t)(uintptr_t)local_pAllocator;
2170 countingStream->putBe64(cgen_var_158);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002171 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002172 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002173 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002174 }
2175 }
2176 uint32_t packetSize_vkDestroyFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2177 countingStream->rewind();
2178 uint32_t opcode_vkDestroyFence = OP_vkDestroyFence;
2179 stream->write(&opcode_vkDestroyFence, sizeof(uint32_t));
2180 stream->write(&packetSize_vkDestroyFence, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002181 uint64_t cgen_var_159;
2182 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_159, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002183 stream->write((uint64_t*)&cgen_var_159, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002184 uint64_t cgen_var_160;
2185 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_160, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002186 stream->write((uint64_t*)&cgen_var_160, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002187 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002188 uint64_t cgen_var_161 = (uint64_t)(uintptr_t)local_pAllocator;
2189 stream->putBe64(cgen_var_161);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002190 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002191 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002192 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002193 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002194 resources->destroyMapping()->mapHandles_VkFence((VkFence*)&fence);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002195}
2196
2197VkResult VkEncoder::vkResetFences(
2198 VkDevice device,
2199 uint32_t fenceCount,
2200 const VkFence* pFences)
2201{
2202 auto stream = mImpl->stream();
2203 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002204 auto resources = mImpl->resources();
2205 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002206 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002207 VkDevice local_device;
2208 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002209 uint32_t local_fenceCount;
2210 local_fenceCount = fenceCount;
2211 VkFence* local_pFences;
2212 local_pFences = nullptr;
2213 if (pFences)
2214 {
2215 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2216 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002217 countingStream->rewind();
2218 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002219 uint64_t cgen_var_162;
2220 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_162, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002221 countingStream->write((uint64_t*)&cgen_var_162, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002222 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002223 if (((fenceCount)))
2224 {
2225 uint64_t* cgen_var_163;
2226 countingStream->alloc((void**)&cgen_var_163, ((fenceCount)) * 8);
2227 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_163, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002228 countingStream->write((uint64_t*)cgen_var_163, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002229 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002230 }
2231 uint32_t packetSize_vkResetFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2232 countingStream->rewind();
2233 uint32_t opcode_vkResetFences = OP_vkResetFences;
2234 stream->write(&opcode_vkResetFences, sizeof(uint32_t));
2235 stream->write(&packetSize_vkResetFences, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002236 uint64_t cgen_var_164;
2237 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_164, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002238 stream->write((uint64_t*)&cgen_var_164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002239 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002240 if (((fenceCount)))
2241 {
2242 uint64_t* cgen_var_165;
2243 stream->alloc((void**)&cgen_var_165, ((fenceCount)) * 8);
2244 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_165, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002245 stream->write((uint64_t*)cgen_var_165, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002246 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002247 VkResult vkResetFences_VkResult_return = (VkResult)0;
2248 stream->read(&vkResetFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002249 countingStream->clearPool();
2250 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002251 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002252 return vkResetFences_VkResult_return;
2253}
2254
2255VkResult VkEncoder::vkGetFenceStatus(
2256 VkDevice device,
2257 VkFence fence)
2258{
2259 auto stream = mImpl->stream();
2260 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002261 auto resources = mImpl->resources();
2262 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002263 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002264 VkDevice local_device;
2265 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002266 VkFence local_fence;
2267 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002268 countingStream->rewind();
2269 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002270 uint64_t cgen_var_166;
2271 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_166, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002272 countingStream->write((uint64_t*)&cgen_var_166, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002273 uint64_t cgen_var_167;
2274 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_167, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002275 countingStream->write((uint64_t*)&cgen_var_167, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002276 }
2277 uint32_t packetSize_vkGetFenceStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2278 countingStream->rewind();
2279 uint32_t opcode_vkGetFenceStatus = OP_vkGetFenceStatus;
2280 stream->write(&opcode_vkGetFenceStatus, sizeof(uint32_t));
2281 stream->write(&packetSize_vkGetFenceStatus, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002282 uint64_t cgen_var_168;
2283 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_168, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002284 stream->write((uint64_t*)&cgen_var_168, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002285 uint64_t cgen_var_169;
2286 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_169, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002287 stream->write((uint64_t*)&cgen_var_169, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002288 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
2289 stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002290 countingStream->clearPool();
2291 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002292 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002293 return vkGetFenceStatus_VkResult_return;
2294}
2295
2296VkResult VkEncoder::vkWaitForFences(
2297 VkDevice device,
2298 uint32_t fenceCount,
2299 const VkFence* pFences,
2300 VkBool32 waitAll,
2301 uint64_t timeout)
2302{
2303 auto stream = mImpl->stream();
2304 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002305 auto resources = mImpl->resources();
2306 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002307 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002308 VkDevice local_device;
2309 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002310 uint32_t local_fenceCount;
2311 local_fenceCount = fenceCount;
2312 VkFence* local_pFences;
2313 local_pFences = nullptr;
2314 if (pFences)
2315 {
2316 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2317 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002318 VkBool32 local_waitAll;
2319 local_waitAll = waitAll;
2320 uint64_t local_timeout;
2321 local_timeout = timeout;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002322 countingStream->rewind();
2323 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002324 uint64_t cgen_var_170;
2325 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_170, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002326 countingStream->write((uint64_t*)&cgen_var_170, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002327 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002328 if (((fenceCount)))
2329 {
2330 uint64_t* cgen_var_171;
2331 countingStream->alloc((void**)&cgen_var_171, ((fenceCount)) * 8);
2332 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_171, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002333 countingStream->write((uint64_t*)cgen_var_171, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002334 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002335 countingStream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2336 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002337 }
2338 uint32_t packetSize_vkWaitForFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2339 countingStream->rewind();
2340 uint32_t opcode_vkWaitForFences = OP_vkWaitForFences;
2341 stream->write(&opcode_vkWaitForFences, sizeof(uint32_t));
2342 stream->write(&packetSize_vkWaitForFences, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002343 uint64_t cgen_var_172;
2344 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_172, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002345 stream->write((uint64_t*)&cgen_var_172, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002346 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002347 if (((fenceCount)))
2348 {
2349 uint64_t* cgen_var_173;
2350 stream->alloc((void**)&cgen_var_173, ((fenceCount)) * 8);
2351 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_173, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002352 stream->write((uint64_t*)cgen_var_173, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002353 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002354 stream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2355 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002356 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
2357 stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002358 countingStream->clearPool();
2359 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002360 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002361 return vkWaitForFences_VkResult_return;
2362}
2363
2364VkResult VkEncoder::vkCreateSemaphore(
2365 VkDevice device,
2366 const VkSemaphoreCreateInfo* pCreateInfo,
2367 const VkAllocationCallbacks* pAllocator,
2368 VkSemaphore* pSemaphore)
2369{
2370 auto stream = mImpl->stream();
2371 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002372 auto resources = mImpl->resources();
2373 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002374 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002375 VkDevice local_device;
2376 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002377 VkSemaphoreCreateInfo* local_pCreateInfo;
2378 local_pCreateInfo = nullptr;
2379 if (pCreateInfo)
2380 {
2381 local_pCreateInfo = (VkSemaphoreCreateInfo*)pool->alloc(sizeof(const VkSemaphoreCreateInfo));
2382 deepcopy_VkSemaphoreCreateInfo(pool, pCreateInfo, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
2383 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002384 VkAllocationCallbacks* local_pAllocator;
2385 local_pAllocator = nullptr;
2386 if (pAllocator)
2387 {
2388 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2389 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2390 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002391 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002392 countingStream->rewind();
2393 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002394 uint64_t cgen_var_174;
2395 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_174, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002396 countingStream->write((uint64_t*)&cgen_var_174, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002397 marshal_VkSemaphoreCreateInfo(countingStream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002398 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002399 uint64_t cgen_var_175 = (uint64_t)(uintptr_t)local_pAllocator;
2400 countingStream->putBe64(cgen_var_175);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002401 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002402 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002403 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002404 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002405 uint64_t cgen_var_176;
2406 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_176, 1);
2407 countingStream->write((uint64_t*)&cgen_var_176, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002408 }
2409 uint32_t packetSize_vkCreateSemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2410 countingStream->rewind();
2411 uint32_t opcode_vkCreateSemaphore = OP_vkCreateSemaphore;
2412 stream->write(&opcode_vkCreateSemaphore, sizeof(uint32_t));
2413 stream->write(&packetSize_vkCreateSemaphore, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002414 uint64_t cgen_var_177;
2415 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_177, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002416 stream->write((uint64_t*)&cgen_var_177, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002417 marshal_VkSemaphoreCreateInfo(stream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002418 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002419 uint64_t cgen_var_178 = (uint64_t)(uintptr_t)local_pAllocator;
2420 stream->putBe64(cgen_var_178);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002421 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002422 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002423 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002424 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002425 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002426 uint64_t cgen_var_179;
2427 stream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_179, 1);
2428 stream->write((uint64_t*)&cgen_var_179, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002429 stream->setHandleMapping(resources->unwrapMapping());
2430 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002431 uint64_t cgen_var_180;
2432 stream->read((uint64_t*)&cgen_var_180, 8);
2433 stream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_180, (VkSemaphore*)pSemaphore, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002434 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002435 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
2436 stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002437 countingStream->clearPool();
2438 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002439 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002440 return vkCreateSemaphore_VkResult_return;
2441}
2442
2443void VkEncoder::vkDestroySemaphore(
2444 VkDevice device,
2445 VkSemaphore semaphore,
2446 const VkAllocationCallbacks* pAllocator)
2447{
2448 auto stream = mImpl->stream();
2449 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002450 auto resources = mImpl->resources();
2451 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002452 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002453 VkDevice local_device;
2454 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002455 VkSemaphore local_semaphore;
2456 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002457 VkAllocationCallbacks* local_pAllocator;
2458 local_pAllocator = nullptr;
2459 if (pAllocator)
2460 {
2461 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2462 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2463 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002464 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002465 countingStream->rewind();
2466 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002467 uint64_t cgen_var_181;
2468 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_181, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002469 countingStream->write((uint64_t*)&cgen_var_181, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002470 uint64_t cgen_var_182;
2471 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_182, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002472 countingStream->write((uint64_t*)&cgen_var_182, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002473 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002474 uint64_t cgen_var_183 = (uint64_t)(uintptr_t)local_pAllocator;
2475 countingStream->putBe64(cgen_var_183);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002476 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002477 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002478 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002479 }
2480 }
2481 uint32_t packetSize_vkDestroySemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2482 countingStream->rewind();
2483 uint32_t opcode_vkDestroySemaphore = OP_vkDestroySemaphore;
2484 stream->write(&opcode_vkDestroySemaphore, sizeof(uint32_t));
2485 stream->write(&packetSize_vkDestroySemaphore, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002486 uint64_t cgen_var_184;
2487 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_184, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002488 stream->write((uint64_t*)&cgen_var_184, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002489 uint64_t cgen_var_185;
2490 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_185, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002491 stream->write((uint64_t*)&cgen_var_185, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002492 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002493 uint64_t cgen_var_186 = (uint64_t)(uintptr_t)local_pAllocator;
2494 stream->putBe64(cgen_var_186);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002495 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002496 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002497 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002498 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002499 resources->destroyMapping()->mapHandles_VkSemaphore((VkSemaphore*)&semaphore);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002500}
2501
2502VkResult VkEncoder::vkCreateEvent(
2503 VkDevice device,
2504 const VkEventCreateInfo* pCreateInfo,
2505 const VkAllocationCallbacks* pAllocator,
2506 VkEvent* pEvent)
2507{
2508 auto stream = mImpl->stream();
2509 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002510 auto resources = mImpl->resources();
2511 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002512 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002513 VkDevice local_device;
2514 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002515 VkEventCreateInfo* local_pCreateInfo;
2516 local_pCreateInfo = nullptr;
2517 if (pCreateInfo)
2518 {
2519 local_pCreateInfo = (VkEventCreateInfo*)pool->alloc(sizeof(const VkEventCreateInfo));
2520 deepcopy_VkEventCreateInfo(pool, pCreateInfo, (VkEventCreateInfo*)(local_pCreateInfo));
2521 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002522 VkAllocationCallbacks* local_pAllocator;
2523 local_pAllocator = nullptr;
2524 if (pAllocator)
2525 {
2526 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2527 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2528 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002529 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002530 countingStream->rewind();
2531 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002532 uint64_t cgen_var_187;
2533 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_187, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002534 countingStream->write((uint64_t*)&cgen_var_187, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002535 marshal_VkEventCreateInfo(countingStream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002536 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002537 uint64_t cgen_var_188 = (uint64_t)(uintptr_t)local_pAllocator;
2538 countingStream->putBe64(cgen_var_188);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002539 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002540 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002541 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002542 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002543 uint64_t cgen_var_189;
2544 countingStream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_189, 1);
2545 countingStream->write((uint64_t*)&cgen_var_189, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002546 }
2547 uint32_t packetSize_vkCreateEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2548 countingStream->rewind();
2549 uint32_t opcode_vkCreateEvent = OP_vkCreateEvent;
2550 stream->write(&opcode_vkCreateEvent, sizeof(uint32_t));
2551 stream->write(&packetSize_vkCreateEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002552 uint64_t cgen_var_190;
2553 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_190, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002554 stream->write((uint64_t*)&cgen_var_190, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002555 marshal_VkEventCreateInfo(stream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002556 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002557 uint64_t cgen_var_191 = (uint64_t)(uintptr_t)local_pAllocator;
2558 stream->putBe64(cgen_var_191);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002559 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002560 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002561 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002562 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002563 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002564 uint64_t cgen_var_192;
2565 stream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_192, 1);
2566 stream->write((uint64_t*)&cgen_var_192, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002567 stream->setHandleMapping(resources->unwrapMapping());
2568 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002569 uint64_t cgen_var_193;
2570 stream->read((uint64_t*)&cgen_var_193, 8);
2571 stream->handleMapping()->mapHandles_u64_VkEvent(&cgen_var_193, (VkEvent*)pEvent, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002572 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002573 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
2574 stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002575 countingStream->clearPool();
2576 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002577 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002578 return vkCreateEvent_VkResult_return;
2579}
2580
2581void VkEncoder::vkDestroyEvent(
2582 VkDevice device,
2583 VkEvent event,
2584 const VkAllocationCallbacks* pAllocator)
2585{
2586 auto stream = mImpl->stream();
2587 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002588 auto resources = mImpl->resources();
2589 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002590 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002591 VkDevice local_device;
2592 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002593 VkEvent local_event;
2594 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002595 VkAllocationCallbacks* local_pAllocator;
2596 local_pAllocator = nullptr;
2597 if (pAllocator)
2598 {
2599 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2600 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2601 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002602 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002603 countingStream->rewind();
2604 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002605 uint64_t cgen_var_194;
2606 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_194, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002607 countingStream->write((uint64_t*)&cgen_var_194, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002608 uint64_t cgen_var_195;
2609 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_195, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002610 countingStream->write((uint64_t*)&cgen_var_195, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002611 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002612 uint64_t cgen_var_196 = (uint64_t)(uintptr_t)local_pAllocator;
2613 countingStream->putBe64(cgen_var_196);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002614 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002615 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002616 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002617 }
2618 }
2619 uint32_t packetSize_vkDestroyEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2620 countingStream->rewind();
2621 uint32_t opcode_vkDestroyEvent = OP_vkDestroyEvent;
2622 stream->write(&opcode_vkDestroyEvent, sizeof(uint32_t));
2623 stream->write(&packetSize_vkDestroyEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002624 uint64_t cgen_var_197;
2625 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_197, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002626 stream->write((uint64_t*)&cgen_var_197, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002627 uint64_t cgen_var_198;
2628 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_198, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002629 stream->write((uint64_t*)&cgen_var_198, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002630 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002631 uint64_t cgen_var_199 = (uint64_t)(uintptr_t)local_pAllocator;
2632 stream->putBe64(cgen_var_199);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002633 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002634 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002635 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002636 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002637 resources->destroyMapping()->mapHandles_VkEvent((VkEvent*)&event);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002638}
2639
2640VkResult VkEncoder::vkGetEventStatus(
2641 VkDevice device,
2642 VkEvent event)
2643{
2644 auto stream = mImpl->stream();
2645 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002646 auto resources = mImpl->resources();
2647 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002648 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002649 VkDevice local_device;
2650 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002651 VkEvent local_event;
2652 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002653 countingStream->rewind();
2654 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002655 uint64_t cgen_var_200;
2656 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_200, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002657 countingStream->write((uint64_t*)&cgen_var_200, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002658 uint64_t cgen_var_201;
2659 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_201, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002660 countingStream->write((uint64_t*)&cgen_var_201, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002661 }
2662 uint32_t packetSize_vkGetEventStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2663 countingStream->rewind();
2664 uint32_t opcode_vkGetEventStatus = OP_vkGetEventStatus;
2665 stream->write(&opcode_vkGetEventStatus, sizeof(uint32_t));
2666 stream->write(&packetSize_vkGetEventStatus, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002667 uint64_t cgen_var_202;
2668 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_202, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002669 stream->write((uint64_t*)&cgen_var_202, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002670 uint64_t cgen_var_203;
2671 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_203, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002672 stream->write((uint64_t*)&cgen_var_203, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002673 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
2674 stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002675 countingStream->clearPool();
2676 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002677 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002678 return vkGetEventStatus_VkResult_return;
2679}
2680
2681VkResult VkEncoder::vkSetEvent(
2682 VkDevice device,
2683 VkEvent event)
2684{
2685 auto stream = mImpl->stream();
2686 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002687 auto resources = mImpl->resources();
2688 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002689 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002690 VkDevice local_device;
2691 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002692 VkEvent local_event;
2693 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002694 countingStream->rewind();
2695 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002696 uint64_t cgen_var_204;
2697 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_204, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002698 countingStream->write((uint64_t*)&cgen_var_204, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002699 uint64_t cgen_var_205;
2700 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_205, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002701 countingStream->write((uint64_t*)&cgen_var_205, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002702 }
2703 uint32_t packetSize_vkSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2704 countingStream->rewind();
2705 uint32_t opcode_vkSetEvent = OP_vkSetEvent;
2706 stream->write(&opcode_vkSetEvent, sizeof(uint32_t));
2707 stream->write(&packetSize_vkSetEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002708 uint64_t cgen_var_206;
2709 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_206, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002710 stream->write((uint64_t*)&cgen_var_206, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002711 uint64_t cgen_var_207;
2712 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_207, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002713 stream->write((uint64_t*)&cgen_var_207, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002714 VkResult vkSetEvent_VkResult_return = (VkResult)0;
2715 stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002716 countingStream->clearPool();
2717 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002718 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002719 return vkSetEvent_VkResult_return;
2720}
2721
2722VkResult VkEncoder::vkResetEvent(
2723 VkDevice device,
2724 VkEvent event)
2725{
2726 auto stream = mImpl->stream();
2727 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002728 auto resources = mImpl->resources();
2729 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002730 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002731 VkDevice local_device;
2732 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002733 VkEvent local_event;
2734 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002735 countingStream->rewind();
2736 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002737 uint64_t cgen_var_208;
2738 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_208, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002739 countingStream->write((uint64_t*)&cgen_var_208, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002740 uint64_t cgen_var_209;
2741 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_209, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002742 countingStream->write((uint64_t*)&cgen_var_209, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002743 }
2744 uint32_t packetSize_vkResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2745 countingStream->rewind();
2746 uint32_t opcode_vkResetEvent = OP_vkResetEvent;
2747 stream->write(&opcode_vkResetEvent, sizeof(uint32_t));
2748 stream->write(&packetSize_vkResetEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002749 uint64_t cgen_var_210;
2750 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_210, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002751 stream->write((uint64_t*)&cgen_var_210, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002752 uint64_t cgen_var_211;
2753 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_211, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002754 stream->write((uint64_t*)&cgen_var_211, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002755 VkResult vkResetEvent_VkResult_return = (VkResult)0;
2756 stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002757 countingStream->clearPool();
2758 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002759 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002760 return vkResetEvent_VkResult_return;
2761}
2762
2763VkResult VkEncoder::vkCreateQueryPool(
2764 VkDevice device,
2765 const VkQueryPoolCreateInfo* pCreateInfo,
2766 const VkAllocationCallbacks* pAllocator,
2767 VkQueryPool* pQueryPool)
2768{
2769 auto stream = mImpl->stream();
2770 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002771 auto resources = mImpl->resources();
2772 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002773 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002774 VkDevice local_device;
2775 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002776 VkQueryPoolCreateInfo* local_pCreateInfo;
2777 local_pCreateInfo = nullptr;
2778 if (pCreateInfo)
2779 {
2780 local_pCreateInfo = (VkQueryPoolCreateInfo*)pool->alloc(sizeof(const VkQueryPoolCreateInfo));
2781 deepcopy_VkQueryPoolCreateInfo(pool, pCreateInfo, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
2782 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002783 VkAllocationCallbacks* local_pAllocator;
2784 local_pAllocator = nullptr;
2785 if (pAllocator)
2786 {
2787 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2788 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2789 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002790 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002791 countingStream->rewind();
2792 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002793 uint64_t cgen_var_212;
2794 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_212, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002795 countingStream->write((uint64_t*)&cgen_var_212, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002796 marshal_VkQueryPoolCreateInfo(countingStream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002797 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002798 uint64_t cgen_var_213 = (uint64_t)(uintptr_t)local_pAllocator;
2799 countingStream->putBe64(cgen_var_213);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002800 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002801 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002802 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002803 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002804 uint64_t cgen_var_214;
2805 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_214, 1);
2806 countingStream->write((uint64_t*)&cgen_var_214, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002807 }
2808 uint32_t packetSize_vkCreateQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2809 countingStream->rewind();
2810 uint32_t opcode_vkCreateQueryPool = OP_vkCreateQueryPool;
2811 stream->write(&opcode_vkCreateQueryPool, sizeof(uint32_t));
2812 stream->write(&packetSize_vkCreateQueryPool, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002813 uint64_t cgen_var_215;
2814 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_215, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002815 stream->write((uint64_t*)&cgen_var_215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002816 marshal_VkQueryPoolCreateInfo(stream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002817 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002818 uint64_t cgen_var_216 = (uint64_t)(uintptr_t)local_pAllocator;
2819 stream->putBe64(cgen_var_216);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002820 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002821 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002822 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002823 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002824 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002825 uint64_t cgen_var_217;
2826 stream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_217, 1);
2827 stream->write((uint64_t*)&cgen_var_217, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002828 stream->setHandleMapping(resources->unwrapMapping());
2829 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002830 uint64_t cgen_var_218;
2831 stream->read((uint64_t*)&cgen_var_218, 8);
2832 stream->handleMapping()->mapHandles_u64_VkQueryPool(&cgen_var_218, (VkQueryPool*)pQueryPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002833 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002834 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
2835 stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002836 countingStream->clearPool();
2837 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002838 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002839 return vkCreateQueryPool_VkResult_return;
2840}
2841
2842void VkEncoder::vkDestroyQueryPool(
2843 VkDevice device,
2844 VkQueryPool queryPool,
2845 const VkAllocationCallbacks* pAllocator)
2846{
2847 auto stream = mImpl->stream();
2848 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002849 auto resources = mImpl->resources();
2850 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002851 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002852 VkDevice local_device;
2853 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002854 VkQueryPool local_queryPool;
2855 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002856 VkAllocationCallbacks* local_pAllocator;
2857 local_pAllocator = nullptr;
2858 if (pAllocator)
2859 {
2860 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2861 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2862 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002863 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002864 countingStream->rewind();
2865 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002866 uint64_t cgen_var_219;
2867 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_219, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002868 countingStream->write((uint64_t*)&cgen_var_219, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002869 uint64_t cgen_var_220;
2870 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_220, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002871 countingStream->write((uint64_t*)&cgen_var_220, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002872 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002873 uint64_t cgen_var_221 = (uint64_t)(uintptr_t)local_pAllocator;
2874 countingStream->putBe64(cgen_var_221);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002875 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002876 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002877 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002878 }
2879 }
2880 uint32_t packetSize_vkDestroyQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2881 countingStream->rewind();
2882 uint32_t opcode_vkDestroyQueryPool = OP_vkDestroyQueryPool;
2883 stream->write(&opcode_vkDestroyQueryPool, sizeof(uint32_t));
2884 stream->write(&packetSize_vkDestroyQueryPool, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002885 uint64_t cgen_var_222;
2886 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_222, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002887 stream->write((uint64_t*)&cgen_var_222, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002888 uint64_t cgen_var_223;
2889 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_223, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002890 stream->write((uint64_t*)&cgen_var_223, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002891 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002892 uint64_t cgen_var_224 = (uint64_t)(uintptr_t)local_pAllocator;
2893 stream->putBe64(cgen_var_224);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002894 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002895 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002896 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002897 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002898 resources->destroyMapping()->mapHandles_VkQueryPool((VkQueryPool*)&queryPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002899}
2900
2901VkResult VkEncoder::vkGetQueryPoolResults(
2902 VkDevice device,
2903 VkQueryPool queryPool,
2904 uint32_t firstQuery,
2905 uint32_t queryCount,
2906 size_t dataSize,
2907 void* pData,
2908 VkDeviceSize stride,
2909 VkQueryResultFlags flags)
2910{
2911 auto stream = mImpl->stream();
2912 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002913 auto resources = mImpl->resources();
2914 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002915 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002916 VkDevice local_device;
2917 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002918 VkQueryPool local_queryPool;
2919 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002920 uint32_t local_firstQuery;
2921 local_firstQuery = firstQuery;
2922 uint32_t local_queryCount;
2923 local_queryCount = queryCount;
2924 size_t local_dataSize;
2925 local_dataSize = dataSize;
2926 VkDeviceSize local_stride;
2927 local_stride = stride;
2928 VkQueryResultFlags local_flags;
2929 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002930 countingStream->rewind();
2931 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002932 uint64_t cgen_var_225;
2933 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_225, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002934 countingStream->write((uint64_t*)&cgen_var_225, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002935 uint64_t cgen_var_226;
2936 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_226, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002937 countingStream->write((uint64_t*)&cgen_var_226, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002938 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
2939 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002940 uint64_t cgen_var_227 = (uint64_t)local_dataSize;
2941 countingStream->putBe64(cgen_var_227);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002942 countingStream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002943 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
2944 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002945 }
2946 uint32_t packetSize_vkGetQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2947 countingStream->rewind();
2948 uint32_t opcode_vkGetQueryPoolResults = OP_vkGetQueryPoolResults;
2949 stream->write(&opcode_vkGetQueryPoolResults, sizeof(uint32_t));
2950 stream->write(&packetSize_vkGetQueryPoolResults, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002951 uint64_t cgen_var_228;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002952 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_228, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002953 stream->write((uint64_t*)&cgen_var_228, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002954 uint64_t cgen_var_229;
2955 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_229, 1);
2956 stream->write((uint64_t*)&cgen_var_229, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002957 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
2958 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002959 uint64_t cgen_var_230 = (uint64_t)local_dataSize;
2960 stream->putBe64(cgen_var_230);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002961 stream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002962 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
2963 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002964 stream->read((void*)pData, ((dataSize)) * sizeof(uint8_t));
2965 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
2966 stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002967 countingStream->clearPool();
2968 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002969 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002970 return vkGetQueryPoolResults_VkResult_return;
2971}
2972
2973VkResult VkEncoder::vkCreateBuffer(
2974 VkDevice device,
2975 const VkBufferCreateInfo* pCreateInfo,
2976 const VkAllocationCallbacks* pAllocator,
2977 VkBuffer* pBuffer)
2978{
2979 auto stream = mImpl->stream();
2980 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002981 auto resources = mImpl->resources();
2982 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002983 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002984 VkDevice local_device;
2985 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002986 VkBufferCreateInfo* local_pCreateInfo;
2987 local_pCreateInfo = nullptr;
2988 if (pCreateInfo)
2989 {
2990 local_pCreateInfo = (VkBufferCreateInfo*)pool->alloc(sizeof(const VkBufferCreateInfo));
2991 deepcopy_VkBufferCreateInfo(pool, pCreateInfo, (VkBufferCreateInfo*)(local_pCreateInfo));
2992 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002993 VkAllocationCallbacks* local_pAllocator;
2994 local_pAllocator = nullptr;
2995 if (pAllocator)
2996 {
2997 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2998 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2999 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003000 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003001 countingStream->rewind();
3002 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003003 uint64_t cgen_var_231;
3004 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_231, 1);
3005 countingStream->write((uint64_t*)&cgen_var_231, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003006 marshal_VkBufferCreateInfo(countingStream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003007 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003008 uint64_t cgen_var_232 = (uint64_t)(uintptr_t)local_pAllocator;
3009 countingStream->putBe64(cgen_var_232);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003010 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003011 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003012 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003013 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003014 uint64_t cgen_var_233;
3015 countingStream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_233, 1);
3016 countingStream->write((uint64_t*)&cgen_var_233, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003017 }
3018 uint32_t packetSize_vkCreateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3019 countingStream->rewind();
3020 uint32_t opcode_vkCreateBuffer = OP_vkCreateBuffer;
3021 stream->write(&opcode_vkCreateBuffer, sizeof(uint32_t));
3022 stream->write(&packetSize_vkCreateBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003023 uint64_t cgen_var_234;
3024 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_234, 1);
3025 stream->write((uint64_t*)&cgen_var_234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003026 marshal_VkBufferCreateInfo(stream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003027 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003028 uint64_t cgen_var_235 = (uint64_t)(uintptr_t)local_pAllocator;
3029 stream->putBe64(cgen_var_235);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003030 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003031 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003032 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003033 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003034 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003035 uint64_t cgen_var_236;
3036 stream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_236, 1);
3037 stream->write((uint64_t*)&cgen_var_236, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003038 stream->setHandleMapping(resources->unwrapMapping());
3039 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003040 uint64_t cgen_var_237;
3041 stream->read((uint64_t*)&cgen_var_237, 8);
3042 stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_237, (VkBuffer*)pBuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003043 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003044 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
3045 stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003046 countingStream->clearPool();
3047 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003048 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003049 return vkCreateBuffer_VkResult_return;
3050}
3051
3052void VkEncoder::vkDestroyBuffer(
3053 VkDevice device,
3054 VkBuffer buffer,
3055 const VkAllocationCallbacks* pAllocator)
3056{
3057 auto stream = mImpl->stream();
3058 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003059 auto resources = mImpl->resources();
3060 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003061 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003062 VkDevice local_device;
3063 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003064 VkBuffer local_buffer;
3065 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003066 VkAllocationCallbacks* local_pAllocator;
3067 local_pAllocator = nullptr;
3068 if (pAllocator)
3069 {
3070 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3071 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3072 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003073 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003074 countingStream->rewind();
3075 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003076 uint64_t cgen_var_238;
3077 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_238, 1);
3078 countingStream->write((uint64_t*)&cgen_var_238, 1 * 8);
3079 uint64_t cgen_var_239;
3080 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_239, 1);
3081 countingStream->write((uint64_t*)&cgen_var_239, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003082 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003083 uint64_t cgen_var_240 = (uint64_t)(uintptr_t)local_pAllocator;
3084 countingStream->putBe64(cgen_var_240);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003085 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003086 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003087 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003088 }
3089 }
3090 uint32_t packetSize_vkDestroyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3091 countingStream->rewind();
3092 uint32_t opcode_vkDestroyBuffer = OP_vkDestroyBuffer;
3093 stream->write(&opcode_vkDestroyBuffer, sizeof(uint32_t));
3094 stream->write(&packetSize_vkDestroyBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003095 uint64_t cgen_var_241;
3096 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_241, 1);
3097 stream->write((uint64_t*)&cgen_var_241, 1 * 8);
3098 uint64_t cgen_var_242;
3099 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_242, 1);
3100 stream->write((uint64_t*)&cgen_var_242, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003101 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003102 uint64_t cgen_var_243 = (uint64_t)(uintptr_t)local_pAllocator;
3103 stream->putBe64(cgen_var_243);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003104 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003105 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003106 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003107 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003108 resources->destroyMapping()->mapHandles_VkBuffer((VkBuffer*)&buffer);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003109}
3110
3111VkResult VkEncoder::vkCreateBufferView(
3112 VkDevice device,
3113 const VkBufferViewCreateInfo* pCreateInfo,
3114 const VkAllocationCallbacks* pAllocator,
3115 VkBufferView* pView)
3116{
3117 auto stream = mImpl->stream();
3118 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003119 auto resources = mImpl->resources();
3120 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003121 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003122 VkDevice local_device;
3123 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003124 VkBufferViewCreateInfo* local_pCreateInfo;
3125 local_pCreateInfo = nullptr;
3126 if (pCreateInfo)
3127 {
3128 local_pCreateInfo = (VkBufferViewCreateInfo*)pool->alloc(sizeof(const VkBufferViewCreateInfo));
3129 deepcopy_VkBufferViewCreateInfo(pool, pCreateInfo, (VkBufferViewCreateInfo*)(local_pCreateInfo));
3130 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003131 VkAllocationCallbacks* local_pAllocator;
3132 local_pAllocator = nullptr;
3133 if (pAllocator)
3134 {
3135 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3136 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3137 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003138 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003139 countingStream->rewind();
3140 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003141 uint64_t cgen_var_244;
3142 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_244, 1);
3143 countingStream->write((uint64_t*)&cgen_var_244, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003144 marshal_VkBufferViewCreateInfo(countingStream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003145 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003146 uint64_t cgen_var_245 = (uint64_t)(uintptr_t)local_pAllocator;
3147 countingStream->putBe64(cgen_var_245);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003148 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003149 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003150 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003151 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003152 uint64_t cgen_var_246;
3153 countingStream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_246, 1);
3154 countingStream->write((uint64_t*)&cgen_var_246, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003155 }
3156 uint32_t packetSize_vkCreateBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3157 countingStream->rewind();
3158 uint32_t opcode_vkCreateBufferView = OP_vkCreateBufferView;
3159 stream->write(&opcode_vkCreateBufferView, sizeof(uint32_t));
3160 stream->write(&packetSize_vkCreateBufferView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003161 uint64_t cgen_var_247;
3162 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_247, 1);
3163 stream->write((uint64_t*)&cgen_var_247, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003164 marshal_VkBufferViewCreateInfo(stream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003165 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003166 uint64_t cgen_var_248 = (uint64_t)(uintptr_t)local_pAllocator;
3167 stream->putBe64(cgen_var_248);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003168 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003169 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003170 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003171 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003172 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003173 uint64_t cgen_var_249;
3174 stream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_249, 1);
3175 stream->write((uint64_t*)&cgen_var_249, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003176 stream->setHandleMapping(resources->unwrapMapping());
3177 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003178 uint64_t cgen_var_250;
3179 stream->read((uint64_t*)&cgen_var_250, 8);
3180 stream->handleMapping()->mapHandles_u64_VkBufferView(&cgen_var_250, (VkBufferView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003181 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003182 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
3183 stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003184 countingStream->clearPool();
3185 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003186 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003187 return vkCreateBufferView_VkResult_return;
3188}
3189
3190void VkEncoder::vkDestroyBufferView(
3191 VkDevice device,
3192 VkBufferView bufferView,
3193 const VkAllocationCallbacks* pAllocator)
3194{
3195 auto stream = mImpl->stream();
3196 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003197 auto resources = mImpl->resources();
3198 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003199 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003200 VkDevice local_device;
3201 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003202 VkBufferView local_bufferView;
3203 local_bufferView = bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003204 VkAllocationCallbacks* local_pAllocator;
3205 local_pAllocator = nullptr;
3206 if (pAllocator)
3207 {
3208 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3209 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3210 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003211 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003212 countingStream->rewind();
3213 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003214 uint64_t cgen_var_251;
3215 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_251, 1);
3216 countingStream->write((uint64_t*)&cgen_var_251, 1 * 8);
3217 uint64_t cgen_var_252;
3218 countingStream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_252, 1);
3219 countingStream->write((uint64_t*)&cgen_var_252, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003220 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003221 uint64_t cgen_var_253 = (uint64_t)(uintptr_t)local_pAllocator;
3222 countingStream->putBe64(cgen_var_253);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003223 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003224 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003225 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003226 }
3227 }
3228 uint32_t packetSize_vkDestroyBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3229 countingStream->rewind();
3230 uint32_t opcode_vkDestroyBufferView = OP_vkDestroyBufferView;
3231 stream->write(&opcode_vkDestroyBufferView, sizeof(uint32_t));
3232 stream->write(&packetSize_vkDestroyBufferView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003233 uint64_t cgen_var_254;
3234 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_254, 1);
3235 stream->write((uint64_t*)&cgen_var_254, 1 * 8);
3236 uint64_t cgen_var_255;
3237 stream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_255, 1);
3238 stream->write((uint64_t*)&cgen_var_255, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003239 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003240 uint64_t cgen_var_256 = (uint64_t)(uintptr_t)local_pAllocator;
3241 stream->putBe64(cgen_var_256);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003242 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003243 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003244 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003245 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003246 resources->destroyMapping()->mapHandles_VkBufferView((VkBufferView*)&bufferView);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003247}
3248
3249VkResult VkEncoder::vkCreateImage(
3250 VkDevice device,
3251 const VkImageCreateInfo* pCreateInfo,
3252 const VkAllocationCallbacks* pAllocator,
3253 VkImage* pImage)
3254{
3255 auto stream = mImpl->stream();
3256 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003257 auto resources = mImpl->resources();
3258 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003259 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003260 VkDevice local_device;
3261 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003262 VkImageCreateInfo* local_pCreateInfo;
3263 local_pCreateInfo = nullptr;
3264 if (pCreateInfo)
3265 {
3266 local_pCreateInfo = (VkImageCreateInfo*)pool->alloc(sizeof(const VkImageCreateInfo));
3267 deepcopy_VkImageCreateInfo(pool, pCreateInfo, (VkImageCreateInfo*)(local_pCreateInfo));
3268 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003269 VkAllocationCallbacks* local_pAllocator;
3270 local_pAllocator = nullptr;
3271 if (pAllocator)
3272 {
3273 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3274 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3275 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003276 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003277 countingStream->rewind();
3278 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003279 uint64_t cgen_var_257;
3280 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_257, 1);
3281 countingStream->write((uint64_t*)&cgen_var_257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003282 marshal_VkImageCreateInfo(countingStream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003283 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003284 uint64_t cgen_var_258 = (uint64_t)(uintptr_t)local_pAllocator;
3285 countingStream->putBe64(cgen_var_258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003286 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003287 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003288 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003289 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003290 uint64_t cgen_var_259;
3291 countingStream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_259, 1);
3292 countingStream->write((uint64_t*)&cgen_var_259, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003293 }
3294 uint32_t packetSize_vkCreateImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3295 countingStream->rewind();
3296 uint32_t opcode_vkCreateImage = OP_vkCreateImage;
3297 stream->write(&opcode_vkCreateImage, sizeof(uint32_t));
3298 stream->write(&packetSize_vkCreateImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003299 uint64_t cgen_var_260;
3300 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_260, 1);
3301 stream->write((uint64_t*)&cgen_var_260, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003302 marshal_VkImageCreateInfo(stream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003303 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003304 uint64_t cgen_var_261 = (uint64_t)(uintptr_t)local_pAllocator;
3305 stream->putBe64(cgen_var_261);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003306 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003307 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003308 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003309 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003310 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003311 uint64_t cgen_var_262;
3312 stream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_262, 1);
3313 stream->write((uint64_t*)&cgen_var_262, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003314 stream->setHandleMapping(resources->unwrapMapping());
3315 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003316 uint64_t cgen_var_263;
3317 stream->read((uint64_t*)&cgen_var_263, 8);
3318 stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_263, (VkImage*)pImage, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003319 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003320 VkResult vkCreateImage_VkResult_return = (VkResult)0;
3321 stream->read(&vkCreateImage_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003322 countingStream->clearPool();
3323 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003324 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003325 return vkCreateImage_VkResult_return;
3326}
3327
3328void VkEncoder::vkDestroyImage(
3329 VkDevice device,
3330 VkImage image,
3331 const VkAllocationCallbacks* pAllocator)
3332{
3333 auto stream = mImpl->stream();
3334 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003335 auto resources = mImpl->resources();
3336 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003337 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003338 VkDevice local_device;
3339 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003340 VkImage local_image;
3341 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003342 VkAllocationCallbacks* local_pAllocator;
3343 local_pAllocator = nullptr;
3344 if (pAllocator)
3345 {
3346 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3347 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3348 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003349 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003350 countingStream->rewind();
3351 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003352 uint64_t cgen_var_264;
3353 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_264, 1);
3354 countingStream->write((uint64_t*)&cgen_var_264, 1 * 8);
3355 uint64_t cgen_var_265;
3356 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_265, 1);
3357 countingStream->write((uint64_t*)&cgen_var_265, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003358 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003359 uint64_t cgen_var_266 = (uint64_t)(uintptr_t)local_pAllocator;
3360 countingStream->putBe64(cgen_var_266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003361 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003362 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003363 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003364 }
3365 }
3366 uint32_t packetSize_vkDestroyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3367 countingStream->rewind();
3368 uint32_t opcode_vkDestroyImage = OP_vkDestroyImage;
3369 stream->write(&opcode_vkDestroyImage, sizeof(uint32_t));
3370 stream->write(&packetSize_vkDestroyImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003371 uint64_t cgen_var_267;
3372 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_267, 1);
3373 stream->write((uint64_t*)&cgen_var_267, 1 * 8);
3374 uint64_t cgen_var_268;
3375 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_268, 1);
3376 stream->write((uint64_t*)&cgen_var_268, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003377 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003378 uint64_t cgen_var_269 = (uint64_t)(uintptr_t)local_pAllocator;
3379 stream->putBe64(cgen_var_269);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003380 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003381 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003382 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003383 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003384 resources->destroyMapping()->mapHandles_VkImage((VkImage*)&image);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003385}
3386
3387void VkEncoder::vkGetImageSubresourceLayout(
3388 VkDevice device,
3389 VkImage image,
3390 const VkImageSubresource* pSubresource,
3391 VkSubresourceLayout* pLayout)
3392{
3393 auto stream = mImpl->stream();
3394 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003395 auto resources = mImpl->resources();
3396 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003397 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003398 VkDevice local_device;
3399 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003400 VkImage local_image;
3401 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003402 VkImageSubresource* local_pSubresource;
3403 local_pSubresource = nullptr;
3404 if (pSubresource)
3405 {
3406 local_pSubresource = (VkImageSubresource*)pool->alloc(sizeof(const VkImageSubresource));
3407 deepcopy_VkImageSubresource(pool, pSubresource, (VkImageSubresource*)(local_pSubresource));
3408 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003409 countingStream->rewind();
3410 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003411 uint64_t cgen_var_270;
3412 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_270, 1);
3413 countingStream->write((uint64_t*)&cgen_var_270, 1 * 8);
3414 uint64_t cgen_var_271;
3415 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_271, 1);
3416 countingStream->write((uint64_t*)&cgen_var_271, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003417 marshal_VkImageSubresource(countingStream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003418 marshal_VkSubresourceLayout(countingStream, (VkSubresourceLayout*)(pLayout));
3419 }
3420 uint32_t packetSize_vkGetImageSubresourceLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3421 countingStream->rewind();
3422 uint32_t opcode_vkGetImageSubresourceLayout = OP_vkGetImageSubresourceLayout;
3423 stream->write(&opcode_vkGetImageSubresourceLayout, sizeof(uint32_t));
3424 stream->write(&packetSize_vkGetImageSubresourceLayout, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003425 uint64_t cgen_var_272;
3426 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_272, 1);
3427 stream->write((uint64_t*)&cgen_var_272, 1 * 8);
3428 uint64_t cgen_var_273;
3429 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_273, 1);
3430 stream->write((uint64_t*)&cgen_var_273, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003431 marshal_VkImageSubresource(stream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003432 marshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
3433 unmarshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
3434}
3435
3436VkResult VkEncoder::vkCreateImageView(
3437 VkDevice device,
3438 const VkImageViewCreateInfo* pCreateInfo,
3439 const VkAllocationCallbacks* pAllocator,
3440 VkImageView* pView)
3441{
3442 auto stream = mImpl->stream();
3443 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003444 auto resources = mImpl->resources();
3445 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003446 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003447 VkDevice local_device;
3448 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003449 VkImageViewCreateInfo* local_pCreateInfo;
3450 local_pCreateInfo = nullptr;
3451 if (pCreateInfo)
3452 {
3453 local_pCreateInfo = (VkImageViewCreateInfo*)pool->alloc(sizeof(const VkImageViewCreateInfo));
3454 deepcopy_VkImageViewCreateInfo(pool, pCreateInfo, (VkImageViewCreateInfo*)(local_pCreateInfo));
3455 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003456 VkAllocationCallbacks* local_pAllocator;
3457 local_pAllocator = nullptr;
3458 if (pAllocator)
3459 {
3460 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3461 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3462 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003463 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003464 countingStream->rewind();
3465 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003466 uint64_t cgen_var_274;
3467 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_274, 1);
3468 countingStream->write((uint64_t*)&cgen_var_274, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003469 marshal_VkImageViewCreateInfo(countingStream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003470 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003471 uint64_t cgen_var_275 = (uint64_t)(uintptr_t)local_pAllocator;
3472 countingStream->putBe64(cgen_var_275);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003473 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003474 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003475 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003476 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003477 uint64_t cgen_var_276;
3478 countingStream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_276, 1);
3479 countingStream->write((uint64_t*)&cgen_var_276, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003480 }
3481 uint32_t packetSize_vkCreateImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3482 countingStream->rewind();
3483 uint32_t opcode_vkCreateImageView = OP_vkCreateImageView;
3484 stream->write(&opcode_vkCreateImageView, sizeof(uint32_t));
3485 stream->write(&packetSize_vkCreateImageView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003486 uint64_t cgen_var_277;
3487 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_277, 1);
3488 stream->write((uint64_t*)&cgen_var_277, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003489 marshal_VkImageViewCreateInfo(stream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003490 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003491 uint64_t cgen_var_278 = (uint64_t)(uintptr_t)local_pAllocator;
3492 stream->putBe64(cgen_var_278);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003493 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003494 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003495 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003496 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003497 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003498 uint64_t cgen_var_279;
3499 stream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_279, 1);
3500 stream->write((uint64_t*)&cgen_var_279, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003501 stream->setHandleMapping(resources->unwrapMapping());
3502 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003503 uint64_t cgen_var_280;
3504 stream->read((uint64_t*)&cgen_var_280, 8);
3505 stream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_280, (VkImageView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003506 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003507 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
3508 stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003509 countingStream->clearPool();
3510 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003511 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003512 return vkCreateImageView_VkResult_return;
3513}
3514
3515void VkEncoder::vkDestroyImageView(
3516 VkDevice device,
3517 VkImageView imageView,
3518 const VkAllocationCallbacks* pAllocator)
3519{
3520 auto stream = mImpl->stream();
3521 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003522 auto resources = mImpl->resources();
3523 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003524 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003525 VkDevice local_device;
3526 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003527 VkImageView local_imageView;
3528 local_imageView = imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003529 VkAllocationCallbacks* local_pAllocator;
3530 local_pAllocator = nullptr;
3531 if (pAllocator)
3532 {
3533 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3534 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3535 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003536 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003537 countingStream->rewind();
3538 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003539 uint64_t cgen_var_281;
3540 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_281, 1);
3541 countingStream->write((uint64_t*)&cgen_var_281, 1 * 8);
3542 uint64_t cgen_var_282;
3543 countingStream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_282, 1);
3544 countingStream->write((uint64_t*)&cgen_var_282, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003545 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003546 uint64_t cgen_var_283 = (uint64_t)(uintptr_t)local_pAllocator;
3547 countingStream->putBe64(cgen_var_283);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003548 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003549 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003550 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003551 }
3552 }
3553 uint32_t packetSize_vkDestroyImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3554 countingStream->rewind();
3555 uint32_t opcode_vkDestroyImageView = OP_vkDestroyImageView;
3556 stream->write(&opcode_vkDestroyImageView, sizeof(uint32_t));
3557 stream->write(&packetSize_vkDestroyImageView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003558 uint64_t cgen_var_284;
3559 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_284, 1);
3560 stream->write((uint64_t*)&cgen_var_284, 1 * 8);
3561 uint64_t cgen_var_285;
3562 stream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_285, 1);
3563 stream->write((uint64_t*)&cgen_var_285, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003564 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003565 uint64_t cgen_var_286 = (uint64_t)(uintptr_t)local_pAllocator;
3566 stream->putBe64(cgen_var_286);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003567 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003568 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003569 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003570 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003571 resources->destroyMapping()->mapHandles_VkImageView((VkImageView*)&imageView);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003572}
3573
3574VkResult VkEncoder::vkCreateShaderModule(
3575 VkDevice device,
3576 const VkShaderModuleCreateInfo* pCreateInfo,
3577 const VkAllocationCallbacks* pAllocator,
3578 VkShaderModule* pShaderModule)
3579{
3580 auto stream = mImpl->stream();
3581 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003582 auto resources = mImpl->resources();
3583 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003584 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003585 VkDevice local_device;
3586 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003587 VkShaderModuleCreateInfo* local_pCreateInfo;
3588 local_pCreateInfo = nullptr;
3589 if (pCreateInfo)
3590 {
3591 local_pCreateInfo = (VkShaderModuleCreateInfo*)pool->alloc(sizeof(const VkShaderModuleCreateInfo));
3592 deepcopy_VkShaderModuleCreateInfo(pool, pCreateInfo, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
3593 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003594 VkAllocationCallbacks* local_pAllocator;
3595 local_pAllocator = nullptr;
3596 if (pAllocator)
3597 {
3598 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3599 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3600 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003601 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003602 countingStream->rewind();
3603 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003604 uint64_t cgen_var_287;
3605 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_287, 1);
3606 countingStream->write((uint64_t*)&cgen_var_287, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003607 marshal_VkShaderModuleCreateInfo(countingStream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003608 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003609 uint64_t cgen_var_288 = (uint64_t)(uintptr_t)local_pAllocator;
3610 countingStream->putBe64(cgen_var_288);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003611 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003612 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003613 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003614 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003615 uint64_t cgen_var_289;
3616 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_289, 1);
3617 countingStream->write((uint64_t*)&cgen_var_289, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003618 }
3619 uint32_t packetSize_vkCreateShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3620 countingStream->rewind();
3621 uint32_t opcode_vkCreateShaderModule = OP_vkCreateShaderModule;
3622 stream->write(&opcode_vkCreateShaderModule, sizeof(uint32_t));
3623 stream->write(&packetSize_vkCreateShaderModule, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003624 uint64_t cgen_var_290;
3625 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_290, 1);
3626 stream->write((uint64_t*)&cgen_var_290, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003627 marshal_VkShaderModuleCreateInfo(stream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003628 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003629 uint64_t cgen_var_291 = (uint64_t)(uintptr_t)local_pAllocator;
3630 stream->putBe64(cgen_var_291);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003631 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003632 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003633 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003634 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003635 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003636 uint64_t cgen_var_292;
3637 stream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_292, 1);
3638 stream->write((uint64_t*)&cgen_var_292, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003639 stream->setHandleMapping(resources->unwrapMapping());
3640 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003641 uint64_t cgen_var_293;
3642 stream->read((uint64_t*)&cgen_var_293, 8);
3643 stream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_293, (VkShaderModule*)pShaderModule, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003644 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003645 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
3646 stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003647 countingStream->clearPool();
3648 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003649 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003650 return vkCreateShaderModule_VkResult_return;
3651}
3652
3653void VkEncoder::vkDestroyShaderModule(
3654 VkDevice device,
3655 VkShaderModule shaderModule,
3656 const VkAllocationCallbacks* pAllocator)
3657{
3658 auto stream = mImpl->stream();
3659 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003660 auto resources = mImpl->resources();
3661 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003662 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003663 VkDevice local_device;
3664 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003665 VkShaderModule local_shaderModule;
3666 local_shaderModule = shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003667 VkAllocationCallbacks* local_pAllocator;
3668 local_pAllocator = nullptr;
3669 if (pAllocator)
3670 {
3671 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3672 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3673 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003674 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003675 countingStream->rewind();
3676 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003677 uint64_t cgen_var_294;
3678 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_294, 1);
3679 countingStream->write((uint64_t*)&cgen_var_294, 1 * 8);
3680 uint64_t cgen_var_295;
3681 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_295, 1);
3682 countingStream->write((uint64_t*)&cgen_var_295, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003683 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003684 uint64_t cgen_var_296 = (uint64_t)(uintptr_t)local_pAllocator;
3685 countingStream->putBe64(cgen_var_296);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003686 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003687 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003688 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003689 }
3690 }
3691 uint32_t packetSize_vkDestroyShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3692 countingStream->rewind();
3693 uint32_t opcode_vkDestroyShaderModule = OP_vkDestroyShaderModule;
3694 stream->write(&opcode_vkDestroyShaderModule, sizeof(uint32_t));
3695 stream->write(&packetSize_vkDestroyShaderModule, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003696 uint64_t cgen_var_297;
3697 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_297, 1);
3698 stream->write((uint64_t*)&cgen_var_297, 1 * 8);
3699 uint64_t cgen_var_298;
3700 stream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_298, 1);
3701 stream->write((uint64_t*)&cgen_var_298, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003702 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003703 uint64_t cgen_var_299 = (uint64_t)(uintptr_t)local_pAllocator;
3704 stream->putBe64(cgen_var_299);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003705 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003706 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003707 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003708 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003709 resources->destroyMapping()->mapHandles_VkShaderModule((VkShaderModule*)&shaderModule);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003710}
3711
3712VkResult VkEncoder::vkCreatePipelineCache(
3713 VkDevice device,
3714 const VkPipelineCacheCreateInfo* pCreateInfo,
3715 const VkAllocationCallbacks* pAllocator,
3716 VkPipelineCache* pPipelineCache)
3717{
3718 auto stream = mImpl->stream();
3719 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003720 auto resources = mImpl->resources();
3721 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003722 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003723 VkDevice local_device;
3724 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003725 VkPipelineCacheCreateInfo* local_pCreateInfo;
3726 local_pCreateInfo = nullptr;
3727 if (pCreateInfo)
3728 {
3729 local_pCreateInfo = (VkPipelineCacheCreateInfo*)pool->alloc(sizeof(const VkPipelineCacheCreateInfo));
3730 deepcopy_VkPipelineCacheCreateInfo(pool, pCreateInfo, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
3731 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003732 VkAllocationCallbacks* local_pAllocator;
3733 local_pAllocator = nullptr;
3734 if (pAllocator)
3735 {
3736 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3737 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3738 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003739 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003740 countingStream->rewind();
3741 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003742 uint64_t cgen_var_300;
3743 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_300, 1);
3744 countingStream->write((uint64_t*)&cgen_var_300, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003745 marshal_VkPipelineCacheCreateInfo(countingStream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003746 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003747 uint64_t cgen_var_301 = (uint64_t)(uintptr_t)local_pAllocator;
3748 countingStream->putBe64(cgen_var_301);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003749 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003750 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003751 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003752 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003753 uint64_t cgen_var_302;
3754 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_302, 1);
3755 countingStream->write((uint64_t*)&cgen_var_302, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003756 }
3757 uint32_t packetSize_vkCreatePipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3758 countingStream->rewind();
3759 uint32_t opcode_vkCreatePipelineCache = OP_vkCreatePipelineCache;
3760 stream->write(&opcode_vkCreatePipelineCache, sizeof(uint32_t));
3761 stream->write(&packetSize_vkCreatePipelineCache, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003762 uint64_t cgen_var_303;
3763 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_303, 1);
3764 stream->write((uint64_t*)&cgen_var_303, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003765 marshal_VkPipelineCacheCreateInfo(stream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003766 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003767 uint64_t cgen_var_304 = (uint64_t)(uintptr_t)local_pAllocator;
3768 stream->putBe64(cgen_var_304);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003769 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003770 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003771 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003772 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003773 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003774 uint64_t cgen_var_305;
3775 stream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_305, 1);
3776 stream->write((uint64_t*)&cgen_var_305, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003777 stream->setHandleMapping(resources->unwrapMapping());
3778 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003779 uint64_t cgen_var_306;
3780 stream->read((uint64_t*)&cgen_var_306, 8);
3781 stream->handleMapping()->mapHandles_u64_VkPipelineCache(&cgen_var_306, (VkPipelineCache*)pPipelineCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003782 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003783 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
3784 stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003785 countingStream->clearPool();
3786 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003787 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003788 return vkCreatePipelineCache_VkResult_return;
3789}
3790
3791void VkEncoder::vkDestroyPipelineCache(
3792 VkDevice device,
3793 VkPipelineCache pipelineCache,
3794 const VkAllocationCallbacks* pAllocator)
3795{
3796 auto stream = mImpl->stream();
3797 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003798 auto resources = mImpl->resources();
3799 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003800 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003801 VkDevice local_device;
3802 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003803 VkPipelineCache local_pipelineCache;
3804 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003805 VkAllocationCallbacks* local_pAllocator;
3806 local_pAllocator = nullptr;
3807 if (pAllocator)
3808 {
3809 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3810 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3811 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003812 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003813 countingStream->rewind();
3814 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003815 uint64_t cgen_var_307;
3816 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_307, 1);
3817 countingStream->write((uint64_t*)&cgen_var_307, 1 * 8);
3818 uint64_t cgen_var_308;
3819 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_308, 1);
3820 countingStream->write((uint64_t*)&cgen_var_308, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003821 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003822 uint64_t cgen_var_309 = (uint64_t)(uintptr_t)local_pAllocator;
3823 countingStream->putBe64(cgen_var_309);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003824 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003825 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003826 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003827 }
3828 }
3829 uint32_t packetSize_vkDestroyPipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3830 countingStream->rewind();
3831 uint32_t opcode_vkDestroyPipelineCache = OP_vkDestroyPipelineCache;
3832 stream->write(&opcode_vkDestroyPipelineCache, sizeof(uint32_t));
3833 stream->write(&packetSize_vkDestroyPipelineCache, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003834 uint64_t cgen_var_310;
3835 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_310, 1);
3836 stream->write((uint64_t*)&cgen_var_310, 1 * 8);
3837 uint64_t cgen_var_311;
3838 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_311, 1);
3839 stream->write((uint64_t*)&cgen_var_311, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003840 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003841 uint64_t cgen_var_312 = (uint64_t)(uintptr_t)local_pAllocator;
3842 stream->putBe64(cgen_var_312);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003843 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003844 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003845 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003846 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003847 resources->destroyMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)&pipelineCache);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003848}
3849
3850VkResult VkEncoder::vkGetPipelineCacheData(
3851 VkDevice device,
3852 VkPipelineCache pipelineCache,
3853 size_t* pDataSize,
3854 void* pData)
3855{
3856 auto stream = mImpl->stream();
3857 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003858 auto resources = mImpl->resources();
3859 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003860 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003861 VkDevice local_device;
3862 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003863 VkPipelineCache local_pipelineCache;
3864 local_pipelineCache = pipelineCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003865 countingStream->rewind();
3866 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003867 uint64_t cgen_var_313;
3868 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_313, 1);
3869 countingStream->write((uint64_t*)&cgen_var_313, 1 * 8);
3870 uint64_t cgen_var_314;
3871 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_314, 1);
3872 countingStream->write((uint64_t*)&cgen_var_314, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003873 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003874 uint64_t cgen_var_315 = (uint64_t)(uintptr_t)pDataSize;
3875 countingStream->putBe64(cgen_var_315);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003876 if (pDataSize)
3877 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003878 uint64_t cgen_var_316 = (uint64_t)(*pDataSize);
3879 countingStream->putBe64(cgen_var_316);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003880 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003881 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003882 uint64_t cgen_var_317 = (uint64_t)(uintptr_t)pData;
3883 countingStream->putBe64(cgen_var_317);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003884 if (pData)
3885 {
3886 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3887 }
3888 }
3889 uint32_t packetSize_vkGetPipelineCacheData = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3890 countingStream->rewind();
3891 uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData;
3892 stream->write(&opcode_vkGetPipelineCacheData, sizeof(uint32_t));
3893 stream->write(&packetSize_vkGetPipelineCacheData, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003894 uint64_t cgen_var_318;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003895 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_318, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003896 stream->write((uint64_t*)&cgen_var_318, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003897 uint64_t cgen_var_319;
3898 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_319, 1);
3899 stream->write((uint64_t*)&cgen_var_319, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003900 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003901 uint64_t cgen_var_320 = (uint64_t)(uintptr_t)pDataSize;
3902 stream->putBe64(cgen_var_320);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003903 if (pDataSize)
3904 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003905 uint64_t cgen_var_321 = (uint64_t)(*pDataSize);
3906 stream->putBe64(cgen_var_321);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003907 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003908 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003909 uint64_t cgen_var_322 = (uint64_t)(uintptr_t)pData;
3910 stream->putBe64(cgen_var_322);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003911 if (pData)
3912 {
3913 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3914 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003915 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003916 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003917 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003918 if (pDataSize)
3919 {
3920 if (!(check_pDataSize))
3921 {
3922 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
3923 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003924 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003925 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003926 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003927 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003928 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003929 if (pData)
3930 {
3931 if (!(check_pData))
3932 {
3933 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
3934 }
3935 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3936 }
3937 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
3938 stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003939 countingStream->clearPool();
3940 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003941 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003942 return vkGetPipelineCacheData_VkResult_return;
3943}
3944
3945VkResult VkEncoder::vkMergePipelineCaches(
3946 VkDevice device,
3947 VkPipelineCache dstCache,
3948 uint32_t srcCacheCount,
3949 const VkPipelineCache* pSrcCaches)
3950{
3951 auto stream = mImpl->stream();
3952 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003953 auto resources = mImpl->resources();
3954 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003955 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003956 VkDevice local_device;
3957 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003958 VkPipelineCache local_dstCache;
3959 local_dstCache = dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003960 uint32_t local_srcCacheCount;
3961 local_srcCacheCount = srcCacheCount;
3962 VkPipelineCache* local_pSrcCaches;
3963 local_pSrcCaches = nullptr;
3964 if (pSrcCaches)
3965 {
3966 local_pSrcCaches = (VkPipelineCache*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
3967 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003968 countingStream->rewind();
3969 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003970 uint64_t cgen_var_326;
3971 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_326, 1);
3972 countingStream->write((uint64_t*)&cgen_var_326, 1 * 8);
3973 uint64_t cgen_var_327;
3974 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_327, 1);
3975 countingStream->write((uint64_t*)&cgen_var_327, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003976 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003977 if (((srcCacheCount)))
3978 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003979 uint64_t* cgen_var_328;
3980 countingStream->alloc((void**)&cgen_var_328, ((srcCacheCount)) * 8);
3981 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_328, ((srcCacheCount)));
3982 countingStream->write((uint64_t*)cgen_var_328, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08003983 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003984 }
3985 uint32_t packetSize_vkMergePipelineCaches = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3986 countingStream->rewind();
3987 uint32_t opcode_vkMergePipelineCaches = OP_vkMergePipelineCaches;
3988 stream->write(&opcode_vkMergePipelineCaches, sizeof(uint32_t));
3989 stream->write(&packetSize_vkMergePipelineCaches, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003990 uint64_t cgen_var_329;
3991 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_329, 1);
3992 stream->write((uint64_t*)&cgen_var_329, 1 * 8);
3993 uint64_t cgen_var_330;
3994 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_330, 1);
3995 stream->write((uint64_t*)&cgen_var_330, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003996 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003997 if (((srcCacheCount)))
3998 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003999 uint64_t* cgen_var_331;
4000 stream->alloc((void**)&cgen_var_331, ((srcCacheCount)) * 8);
4001 stream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_331, ((srcCacheCount)));
4002 stream->write((uint64_t*)cgen_var_331, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004003 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004004 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
4005 stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004006 countingStream->clearPool();
4007 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004008 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004009 return vkMergePipelineCaches_VkResult_return;
4010}
4011
4012VkResult VkEncoder::vkCreateGraphicsPipelines(
4013 VkDevice device,
4014 VkPipelineCache pipelineCache,
4015 uint32_t createInfoCount,
4016 const VkGraphicsPipelineCreateInfo* pCreateInfos,
4017 const VkAllocationCallbacks* pAllocator,
4018 VkPipeline* pPipelines)
4019{
4020 auto stream = mImpl->stream();
4021 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004022 auto resources = mImpl->resources();
4023 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004024 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004025 VkDevice local_device;
4026 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004027 VkPipelineCache local_pipelineCache;
4028 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004029 uint32_t local_createInfoCount;
4030 local_createInfoCount = createInfoCount;
4031 VkGraphicsPipelineCreateInfo* local_pCreateInfos;
4032 local_pCreateInfos = nullptr;
4033 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004034 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004035 local_pCreateInfos = (VkGraphicsPipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkGraphicsPipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004036 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4037 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004038 deepcopy_VkGraphicsPipelineCreateInfo(pool, pCreateInfos + i, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004039 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004040 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004041 VkAllocationCallbacks* local_pAllocator;
4042 local_pAllocator = nullptr;
4043 if (pAllocator)
4044 {
4045 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4046 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4047 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004048 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004049 countingStream->rewind();
4050 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004051 uint64_t cgen_var_332;
4052 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_332, 1);
4053 countingStream->write((uint64_t*)&cgen_var_332, 1 * 8);
4054 uint64_t cgen_var_333;
4055 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_333, 1);
4056 countingStream->write((uint64_t*)&cgen_var_333, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004057 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4058 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4059 {
4060 marshal_VkGraphicsPipelineCreateInfo(countingStream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4061 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004062 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004063 uint64_t cgen_var_334 = (uint64_t)(uintptr_t)local_pAllocator;
4064 countingStream->putBe64(cgen_var_334);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004065 if (local_pAllocator)
4066 {
4067 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004068 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004069 if (((createInfoCount)))
4070 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004071 uint64_t* cgen_var_335;
4072 countingStream->alloc((void**)&cgen_var_335, ((createInfoCount)) * 8);
4073 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_335, ((createInfoCount)));
4074 countingStream->write((uint64_t*)cgen_var_335, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004075 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004076 }
4077 uint32_t packetSize_vkCreateGraphicsPipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4078 countingStream->rewind();
4079 uint32_t opcode_vkCreateGraphicsPipelines = OP_vkCreateGraphicsPipelines;
4080 stream->write(&opcode_vkCreateGraphicsPipelines, sizeof(uint32_t));
4081 stream->write(&packetSize_vkCreateGraphicsPipelines, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004082 uint64_t cgen_var_336;
4083 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_336, 1);
4084 stream->write((uint64_t*)&cgen_var_336, 1 * 8);
4085 uint64_t cgen_var_337;
4086 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_337, 1);
4087 stream->write((uint64_t*)&cgen_var_337, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004088 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004089 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4090 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004091 marshal_VkGraphicsPipelineCreateInfo(stream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004092 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004093 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004094 uint64_t cgen_var_338 = (uint64_t)(uintptr_t)local_pAllocator;
4095 stream->putBe64(cgen_var_338);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004096 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004097 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004098 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004099 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004100 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004101 if (((createInfoCount)))
4102 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004103 uint64_t* cgen_var_339;
4104 stream->alloc((void**)&cgen_var_339, ((createInfoCount)) * 8);
4105 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_339, ((createInfoCount)));
4106 stream->write((uint64_t*)cgen_var_339, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004107 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004108 stream->setHandleMapping(resources->unwrapMapping());
4109 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004110 if (((createInfoCount)))
4111 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004112 uint64_t* cgen_var_340;
4113 stream->alloc((void**)&cgen_var_340, ((createInfoCount)) * 8);
4114 stream->read((uint64_t*)cgen_var_340, ((createInfoCount)) * 8);
4115 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_340, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004116 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004117 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004118 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
4119 stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004120 countingStream->clearPool();
4121 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004122 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004123 return vkCreateGraphicsPipelines_VkResult_return;
4124}
4125
4126VkResult VkEncoder::vkCreateComputePipelines(
4127 VkDevice device,
4128 VkPipelineCache pipelineCache,
4129 uint32_t createInfoCount,
4130 const VkComputePipelineCreateInfo* pCreateInfos,
4131 const VkAllocationCallbacks* pAllocator,
4132 VkPipeline* pPipelines)
4133{
4134 auto stream = mImpl->stream();
4135 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004136 auto resources = mImpl->resources();
4137 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004138 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004139 VkDevice local_device;
4140 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004141 VkPipelineCache local_pipelineCache;
4142 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004143 uint32_t local_createInfoCount;
4144 local_createInfoCount = createInfoCount;
4145 VkComputePipelineCreateInfo* local_pCreateInfos;
4146 local_pCreateInfos = nullptr;
4147 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004148 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004149 local_pCreateInfos = (VkComputePipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkComputePipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004150 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4151 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004152 deepcopy_VkComputePipelineCreateInfo(pool, pCreateInfos + i, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004153 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004154 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004155 VkAllocationCallbacks* local_pAllocator;
4156 local_pAllocator = nullptr;
4157 if (pAllocator)
4158 {
4159 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4160 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4161 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004162 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004163 countingStream->rewind();
4164 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004165 uint64_t cgen_var_341;
4166 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_341, 1);
4167 countingStream->write((uint64_t*)&cgen_var_341, 1 * 8);
4168 uint64_t cgen_var_342;
4169 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_342, 1);
4170 countingStream->write((uint64_t*)&cgen_var_342, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004171 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4172 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4173 {
4174 marshal_VkComputePipelineCreateInfo(countingStream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4175 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004176 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004177 uint64_t cgen_var_343 = (uint64_t)(uintptr_t)local_pAllocator;
4178 countingStream->putBe64(cgen_var_343);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004179 if (local_pAllocator)
4180 {
4181 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004182 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004183 if (((createInfoCount)))
4184 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004185 uint64_t* cgen_var_344;
4186 countingStream->alloc((void**)&cgen_var_344, ((createInfoCount)) * 8);
4187 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_344, ((createInfoCount)));
4188 countingStream->write((uint64_t*)cgen_var_344, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004189 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004190 }
4191 uint32_t packetSize_vkCreateComputePipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4192 countingStream->rewind();
4193 uint32_t opcode_vkCreateComputePipelines = OP_vkCreateComputePipelines;
4194 stream->write(&opcode_vkCreateComputePipelines, sizeof(uint32_t));
4195 stream->write(&packetSize_vkCreateComputePipelines, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004196 uint64_t cgen_var_345;
4197 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_345, 1);
4198 stream->write((uint64_t*)&cgen_var_345, 1 * 8);
4199 uint64_t cgen_var_346;
4200 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_346, 1);
4201 stream->write((uint64_t*)&cgen_var_346, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004202 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004203 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4204 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004205 marshal_VkComputePipelineCreateInfo(stream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004206 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004207 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004208 uint64_t cgen_var_347 = (uint64_t)(uintptr_t)local_pAllocator;
4209 stream->putBe64(cgen_var_347);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004210 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004211 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004212 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004213 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004214 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004215 if (((createInfoCount)))
4216 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004217 uint64_t* cgen_var_348;
4218 stream->alloc((void**)&cgen_var_348, ((createInfoCount)) * 8);
4219 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_348, ((createInfoCount)));
4220 stream->write((uint64_t*)cgen_var_348, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004221 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004222 stream->setHandleMapping(resources->unwrapMapping());
4223 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004224 if (((createInfoCount)))
4225 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004226 uint64_t* cgen_var_349;
4227 stream->alloc((void**)&cgen_var_349, ((createInfoCount)) * 8);
4228 stream->read((uint64_t*)cgen_var_349, ((createInfoCount)) * 8);
4229 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_349, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004230 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004231 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004232 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
4233 stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004234 countingStream->clearPool();
4235 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004236 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004237 return vkCreateComputePipelines_VkResult_return;
4238}
4239
4240void VkEncoder::vkDestroyPipeline(
4241 VkDevice device,
4242 VkPipeline pipeline,
4243 const VkAllocationCallbacks* pAllocator)
4244{
4245 auto stream = mImpl->stream();
4246 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004247 auto resources = mImpl->resources();
4248 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004249 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004250 VkDevice local_device;
4251 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004252 VkPipeline local_pipeline;
4253 local_pipeline = pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004254 VkAllocationCallbacks* local_pAllocator;
4255 local_pAllocator = nullptr;
4256 if (pAllocator)
4257 {
4258 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4259 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4260 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004261 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004262 countingStream->rewind();
4263 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004264 uint64_t cgen_var_350;
4265 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_350, 1);
4266 countingStream->write((uint64_t*)&cgen_var_350, 1 * 8);
4267 uint64_t cgen_var_351;
4268 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_351, 1);
4269 countingStream->write((uint64_t*)&cgen_var_351, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004270 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004271 uint64_t cgen_var_352 = (uint64_t)(uintptr_t)local_pAllocator;
4272 countingStream->putBe64(cgen_var_352);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004273 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004274 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004275 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004276 }
4277 }
4278 uint32_t packetSize_vkDestroyPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4279 countingStream->rewind();
4280 uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline;
4281 stream->write(&opcode_vkDestroyPipeline, sizeof(uint32_t));
4282 stream->write(&packetSize_vkDestroyPipeline, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004283 uint64_t cgen_var_353;
4284 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_353, 1);
4285 stream->write((uint64_t*)&cgen_var_353, 1 * 8);
4286 uint64_t cgen_var_354;
4287 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_354, 1);
4288 stream->write((uint64_t*)&cgen_var_354, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004289 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004290 uint64_t cgen_var_355 = (uint64_t)(uintptr_t)local_pAllocator;
4291 stream->putBe64(cgen_var_355);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004292 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004293 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004294 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004295 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004296 resources->destroyMapping()->mapHandles_VkPipeline((VkPipeline*)&pipeline);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004297}
4298
4299VkResult VkEncoder::vkCreatePipelineLayout(
4300 VkDevice device,
4301 const VkPipelineLayoutCreateInfo* pCreateInfo,
4302 const VkAllocationCallbacks* pAllocator,
4303 VkPipelineLayout* pPipelineLayout)
4304{
4305 auto stream = mImpl->stream();
4306 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004307 auto resources = mImpl->resources();
4308 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004309 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004310 VkDevice local_device;
4311 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004312 VkPipelineLayoutCreateInfo* local_pCreateInfo;
4313 local_pCreateInfo = nullptr;
4314 if (pCreateInfo)
4315 {
4316 local_pCreateInfo = (VkPipelineLayoutCreateInfo*)pool->alloc(sizeof(const VkPipelineLayoutCreateInfo));
4317 deepcopy_VkPipelineLayoutCreateInfo(pool, pCreateInfo, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
4318 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004319 VkAllocationCallbacks* local_pAllocator;
4320 local_pAllocator = nullptr;
4321 if (pAllocator)
4322 {
4323 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4324 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4325 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004326 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004327 countingStream->rewind();
4328 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004329 uint64_t cgen_var_356;
4330 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_356, 1);
4331 countingStream->write((uint64_t*)&cgen_var_356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004332 marshal_VkPipelineLayoutCreateInfo(countingStream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004333 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004334 uint64_t cgen_var_357 = (uint64_t)(uintptr_t)local_pAllocator;
4335 countingStream->putBe64(cgen_var_357);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004336 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004337 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004338 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004339 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004340 uint64_t cgen_var_358;
4341 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_358, 1);
4342 countingStream->write((uint64_t*)&cgen_var_358, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004343 }
4344 uint32_t packetSize_vkCreatePipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4345 countingStream->rewind();
4346 uint32_t opcode_vkCreatePipelineLayout = OP_vkCreatePipelineLayout;
4347 stream->write(&opcode_vkCreatePipelineLayout, sizeof(uint32_t));
4348 stream->write(&packetSize_vkCreatePipelineLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004349 uint64_t cgen_var_359;
4350 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_359, 1);
4351 stream->write((uint64_t*)&cgen_var_359, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004352 marshal_VkPipelineLayoutCreateInfo(stream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004353 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004354 uint64_t cgen_var_360 = (uint64_t)(uintptr_t)local_pAllocator;
4355 stream->putBe64(cgen_var_360);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004356 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004357 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004358 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004359 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004360 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004361 uint64_t cgen_var_361;
4362 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_361, 1);
4363 stream->write((uint64_t*)&cgen_var_361, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004364 stream->setHandleMapping(resources->unwrapMapping());
4365 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004366 uint64_t cgen_var_362;
4367 stream->read((uint64_t*)&cgen_var_362, 8);
4368 stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_362, (VkPipelineLayout*)pPipelineLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004369 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004370 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
4371 stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004372 countingStream->clearPool();
4373 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004374 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004375 return vkCreatePipelineLayout_VkResult_return;
4376}
4377
4378void VkEncoder::vkDestroyPipelineLayout(
4379 VkDevice device,
4380 VkPipelineLayout pipelineLayout,
4381 const VkAllocationCallbacks* pAllocator)
4382{
4383 auto stream = mImpl->stream();
4384 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004385 auto resources = mImpl->resources();
4386 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004387 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004388 VkDevice local_device;
4389 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004390 VkPipelineLayout local_pipelineLayout;
4391 local_pipelineLayout = pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004392 VkAllocationCallbacks* local_pAllocator;
4393 local_pAllocator = nullptr;
4394 if (pAllocator)
4395 {
4396 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4397 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4398 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004399 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004400 countingStream->rewind();
4401 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004402 uint64_t cgen_var_363;
4403 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_363, 1);
4404 countingStream->write((uint64_t*)&cgen_var_363, 1 * 8);
4405 uint64_t cgen_var_364;
4406 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_364, 1);
4407 countingStream->write((uint64_t*)&cgen_var_364, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004408 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004409 uint64_t cgen_var_365 = (uint64_t)(uintptr_t)local_pAllocator;
4410 countingStream->putBe64(cgen_var_365);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004411 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004412 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004413 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004414 }
4415 }
4416 uint32_t packetSize_vkDestroyPipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4417 countingStream->rewind();
4418 uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout;
4419 stream->write(&opcode_vkDestroyPipelineLayout, sizeof(uint32_t));
4420 stream->write(&packetSize_vkDestroyPipelineLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004421 uint64_t cgen_var_366;
4422 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_366, 1);
4423 stream->write((uint64_t*)&cgen_var_366, 1 * 8);
4424 uint64_t cgen_var_367;
4425 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_367, 1);
4426 stream->write((uint64_t*)&cgen_var_367, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004427 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004428 uint64_t cgen_var_368 = (uint64_t)(uintptr_t)local_pAllocator;
4429 stream->putBe64(cgen_var_368);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004430 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004431 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004432 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004433 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004434 resources->destroyMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)&pipelineLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004435}
4436
4437VkResult VkEncoder::vkCreateSampler(
4438 VkDevice device,
4439 const VkSamplerCreateInfo* pCreateInfo,
4440 const VkAllocationCallbacks* pAllocator,
4441 VkSampler* pSampler)
4442{
4443 auto stream = mImpl->stream();
4444 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004445 auto resources = mImpl->resources();
4446 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004447 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004448 VkDevice local_device;
4449 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004450 VkSamplerCreateInfo* local_pCreateInfo;
4451 local_pCreateInfo = nullptr;
4452 if (pCreateInfo)
4453 {
4454 local_pCreateInfo = (VkSamplerCreateInfo*)pool->alloc(sizeof(const VkSamplerCreateInfo));
4455 deepcopy_VkSamplerCreateInfo(pool, pCreateInfo, (VkSamplerCreateInfo*)(local_pCreateInfo));
4456 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004457 VkAllocationCallbacks* local_pAllocator;
4458 local_pAllocator = nullptr;
4459 if (pAllocator)
4460 {
4461 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4462 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4463 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004464 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004465 countingStream->rewind();
4466 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004467 uint64_t cgen_var_369;
4468 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_369, 1);
4469 countingStream->write((uint64_t*)&cgen_var_369, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004470 marshal_VkSamplerCreateInfo(countingStream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004471 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004472 uint64_t cgen_var_370 = (uint64_t)(uintptr_t)local_pAllocator;
4473 countingStream->putBe64(cgen_var_370);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004474 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004475 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004476 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004477 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004478 uint64_t cgen_var_371;
4479 countingStream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_371, 1);
4480 countingStream->write((uint64_t*)&cgen_var_371, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004481 }
4482 uint32_t packetSize_vkCreateSampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4483 countingStream->rewind();
4484 uint32_t opcode_vkCreateSampler = OP_vkCreateSampler;
4485 stream->write(&opcode_vkCreateSampler, sizeof(uint32_t));
4486 stream->write(&packetSize_vkCreateSampler, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004487 uint64_t cgen_var_372;
4488 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_372, 1);
4489 stream->write((uint64_t*)&cgen_var_372, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004490 marshal_VkSamplerCreateInfo(stream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004491 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004492 uint64_t cgen_var_373 = (uint64_t)(uintptr_t)local_pAllocator;
4493 stream->putBe64(cgen_var_373);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004494 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004495 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004496 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004497 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004498 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004499 uint64_t cgen_var_374;
4500 stream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_374, 1);
4501 stream->write((uint64_t*)&cgen_var_374, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004502 stream->setHandleMapping(resources->unwrapMapping());
4503 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004504 uint64_t cgen_var_375;
4505 stream->read((uint64_t*)&cgen_var_375, 8);
4506 stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_375, (VkSampler*)pSampler, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004507 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004508 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
4509 stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004510 countingStream->clearPool();
4511 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004512 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004513 return vkCreateSampler_VkResult_return;
4514}
4515
4516void VkEncoder::vkDestroySampler(
4517 VkDevice device,
4518 VkSampler sampler,
4519 const VkAllocationCallbacks* pAllocator)
4520{
4521 auto stream = mImpl->stream();
4522 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004523 auto resources = mImpl->resources();
4524 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004525 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004526 VkDevice local_device;
4527 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004528 VkSampler local_sampler;
4529 local_sampler = sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004530 VkAllocationCallbacks* local_pAllocator;
4531 local_pAllocator = nullptr;
4532 if (pAllocator)
4533 {
4534 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4535 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4536 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004537 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004538 countingStream->rewind();
4539 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004540 uint64_t cgen_var_376;
4541 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_376, 1);
4542 countingStream->write((uint64_t*)&cgen_var_376, 1 * 8);
4543 uint64_t cgen_var_377;
4544 countingStream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_377, 1);
4545 countingStream->write((uint64_t*)&cgen_var_377, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004546 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004547 uint64_t cgen_var_378 = (uint64_t)(uintptr_t)local_pAllocator;
4548 countingStream->putBe64(cgen_var_378);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004549 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004550 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004551 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004552 }
4553 }
4554 uint32_t packetSize_vkDestroySampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4555 countingStream->rewind();
4556 uint32_t opcode_vkDestroySampler = OP_vkDestroySampler;
4557 stream->write(&opcode_vkDestroySampler, sizeof(uint32_t));
4558 stream->write(&packetSize_vkDestroySampler, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004559 uint64_t cgen_var_379;
4560 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_379, 1);
4561 stream->write((uint64_t*)&cgen_var_379, 1 * 8);
4562 uint64_t cgen_var_380;
4563 stream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_380, 1);
4564 stream->write((uint64_t*)&cgen_var_380, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004565 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004566 uint64_t cgen_var_381 = (uint64_t)(uintptr_t)local_pAllocator;
4567 stream->putBe64(cgen_var_381);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004568 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004569 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004570 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004571 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004572 resources->destroyMapping()->mapHandles_VkSampler((VkSampler*)&sampler);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004573}
4574
4575VkResult VkEncoder::vkCreateDescriptorSetLayout(
4576 VkDevice device,
4577 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
4578 const VkAllocationCallbacks* pAllocator,
4579 VkDescriptorSetLayout* pSetLayout)
4580{
4581 auto stream = mImpl->stream();
4582 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004583 auto resources = mImpl->resources();
4584 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004585 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004586 VkDevice local_device;
4587 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004588 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
4589 local_pCreateInfo = nullptr;
4590 if (pCreateInfo)
4591 {
4592 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
4593 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
4594 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004595 VkAllocationCallbacks* local_pAllocator;
4596 local_pAllocator = nullptr;
4597 if (pAllocator)
4598 {
4599 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4600 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4601 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004602 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004603 countingStream->rewind();
4604 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004605 uint64_t cgen_var_382;
4606 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_382, 1);
4607 countingStream->write((uint64_t*)&cgen_var_382, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004608 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004609 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004610 uint64_t cgen_var_383 = (uint64_t)(uintptr_t)local_pAllocator;
4611 countingStream->putBe64(cgen_var_383);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004612 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004613 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004614 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004615 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004616 uint64_t cgen_var_384;
4617 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_384, 1);
4618 countingStream->write((uint64_t*)&cgen_var_384, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004619 }
4620 uint32_t packetSize_vkCreateDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4621 countingStream->rewind();
4622 uint32_t opcode_vkCreateDescriptorSetLayout = OP_vkCreateDescriptorSetLayout;
4623 stream->write(&opcode_vkCreateDescriptorSetLayout, sizeof(uint32_t));
4624 stream->write(&packetSize_vkCreateDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004625 uint64_t cgen_var_385;
4626 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_385, 1);
4627 stream->write((uint64_t*)&cgen_var_385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004628 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004629 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004630 uint64_t cgen_var_386 = (uint64_t)(uintptr_t)local_pAllocator;
4631 stream->putBe64(cgen_var_386);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004632 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004633 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004634 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004635 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004636 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004637 uint64_t cgen_var_387;
4638 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_387, 1);
4639 stream->write((uint64_t*)&cgen_var_387, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004640 stream->setHandleMapping(resources->unwrapMapping());
4641 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004642 uint64_t cgen_var_388;
4643 stream->read((uint64_t*)&cgen_var_388, 8);
4644 stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_388, (VkDescriptorSetLayout*)pSetLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004645 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004646 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
4647 stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004648 countingStream->clearPool();
4649 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004650 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004651 return vkCreateDescriptorSetLayout_VkResult_return;
4652}
4653
4654void VkEncoder::vkDestroyDescriptorSetLayout(
4655 VkDevice device,
4656 VkDescriptorSetLayout descriptorSetLayout,
4657 const VkAllocationCallbacks* pAllocator)
4658{
4659 auto stream = mImpl->stream();
4660 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004661 auto resources = mImpl->resources();
4662 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004663 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004664 VkDevice local_device;
4665 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004666 VkDescriptorSetLayout local_descriptorSetLayout;
4667 local_descriptorSetLayout = descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004668 VkAllocationCallbacks* local_pAllocator;
4669 local_pAllocator = nullptr;
4670 if (pAllocator)
4671 {
4672 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4673 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4674 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004675 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004676 countingStream->rewind();
4677 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004678 uint64_t cgen_var_389;
4679 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_389, 1);
4680 countingStream->write((uint64_t*)&cgen_var_389, 1 * 8);
4681 uint64_t cgen_var_390;
4682 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_390, 1);
4683 countingStream->write((uint64_t*)&cgen_var_390, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004684 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004685 uint64_t cgen_var_391 = (uint64_t)(uintptr_t)local_pAllocator;
4686 countingStream->putBe64(cgen_var_391);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004687 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004688 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004689 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004690 }
4691 }
4692 uint32_t packetSize_vkDestroyDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4693 countingStream->rewind();
4694 uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout;
4695 stream->write(&opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
4696 stream->write(&packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004697 uint64_t cgen_var_392;
4698 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_392, 1);
4699 stream->write((uint64_t*)&cgen_var_392, 1 * 8);
4700 uint64_t cgen_var_393;
4701 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_393, 1);
4702 stream->write((uint64_t*)&cgen_var_393, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004703 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004704 uint64_t cgen_var_394 = (uint64_t)(uintptr_t)local_pAllocator;
4705 stream->putBe64(cgen_var_394);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004706 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004707 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004708 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004709 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004710 resources->destroyMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&descriptorSetLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004711}
4712
4713VkResult VkEncoder::vkCreateDescriptorPool(
4714 VkDevice device,
4715 const VkDescriptorPoolCreateInfo* pCreateInfo,
4716 const VkAllocationCallbacks* pAllocator,
4717 VkDescriptorPool* pDescriptorPool)
4718{
4719 auto stream = mImpl->stream();
4720 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004721 auto resources = mImpl->resources();
4722 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004723 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004724 VkDevice local_device;
4725 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004726 VkDescriptorPoolCreateInfo* local_pCreateInfo;
4727 local_pCreateInfo = nullptr;
4728 if (pCreateInfo)
4729 {
4730 local_pCreateInfo = (VkDescriptorPoolCreateInfo*)pool->alloc(sizeof(const VkDescriptorPoolCreateInfo));
4731 deepcopy_VkDescriptorPoolCreateInfo(pool, pCreateInfo, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
4732 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004733 VkAllocationCallbacks* local_pAllocator;
4734 local_pAllocator = nullptr;
4735 if (pAllocator)
4736 {
4737 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4738 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4739 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004740 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004741 countingStream->rewind();
4742 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004743 uint64_t cgen_var_395;
4744 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_395, 1);
4745 countingStream->write((uint64_t*)&cgen_var_395, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004746 marshal_VkDescriptorPoolCreateInfo(countingStream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004747 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004748 uint64_t cgen_var_396 = (uint64_t)(uintptr_t)local_pAllocator;
4749 countingStream->putBe64(cgen_var_396);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004750 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004751 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004752 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004753 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004754 uint64_t cgen_var_397;
4755 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_397, 1);
4756 countingStream->write((uint64_t*)&cgen_var_397, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004757 }
4758 uint32_t packetSize_vkCreateDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4759 countingStream->rewind();
4760 uint32_t opcode_vkCreateDescriptorPool = OP_vkCreateDescriptorPool;
4761 stream->write(&opcode_vkCreateDescriptorPool, sizeof(uint32_t));
4762 stream->write(&packetSize_vkCreateDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004763 uint64_t cgen_var_398;
4764 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_398, 1);
4765 stream->write((uint64_t*)&cgen_var_398, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004766 marshal_VkDescriptorPoolCreateInfo(stream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004767 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004768 uint64_t cgen_var_399 = (uint64_t)(uintptr_t)local_pAllocator;
4769 stream->putBe64(cgen_var_399);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004770 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004771 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004772 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004773 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004774 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004775 uint64_t cgen_var_400;
4776 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_400, 1);
4777 stream->write((uint64_t*)&cgen_var_400, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004778 stream->setHandleMapping(resources->unwrapMapping());
4779 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004780 uint64_t cgen_var_401;
4781 stream->read((uint64_t*)&cgen_var_401, 8);
4782 stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_401, (VkDescriptorPool*)pDescriptorPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004783 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004784 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
4785 stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004786 countingStream->clearPool();
4787 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004788 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004789 return vkCreateDescriptorPool_VkResult_return;
4790}
4791
4792void VkEncoder::vkDestroyDescriptorPool(
4793 VkDevice device,
4794 VkDescriptorPool descriptorPool,
4795 const VkAllocationCallbacks* pAllocator)
4796{
4797 auto stream = mImpl->stream();
4798 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004799 auto resources = mImpl->resources();
4800 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004801 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004802 VkDevice local_device;
4803 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004804 VkDescriptorPool local_descriptorPool;
4805 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004806 VkAllocationCallbacks* local_pAllocator;
4807 local_pAllocator = nullptr;
4808 if (pAllocator)
4809 {
4810 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4811 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4812 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004813 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004814 countingStream->rewind();
4815 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004816 uint64_t cgen_var_402;
4817 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_402, 1);
4818 countingStream->write((uint64_t*)&cgen_var_402, 1 * 8);
4819 uint64_t cgen_var_403;
4820 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_403, 1);
4821 countingStream->write((uint64_t*)&cgen_var_403, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004822 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004823 uint64_t cgen_var_404 = (uint64_t)(uintptr_t)local_pAllocator;
4824 countingStream->putBe64(cgen_var_404);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004825 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004826 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004827 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004828 }
4829 }
4830 uint32_t packetSize_vkDestroyDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4831 countingStream->rewind();
4832 uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool;
4833 stream->write(&opcode_vkDestroyDescriptorPool, sizeof(uint32_t));
4834 stream->write(&packetSize_vkDestroyDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004835 uint64_t cgen_var_405;
4836 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_405, 1);
4837 stream->write((uint64_t*)&cgen_var_405, 1 * 8);
4838 uint64_t cgen_var_406;
4839 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_406, 1);
4840 stream->write((uint64_t*)&cgen_var_406, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004841 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004842 uint64_t cgen_var_407 = (uint64_t)(uintptr_t)local_pAllocator;
4843 stream->putBe64(cgen_var_407);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004844 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004845 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004846 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004847 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004848 resources->destroyMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)&descriptorPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004849}
4850
4851VkResult VkEncoder::vkResetDescriptorPool(
4852 VkDevice device,
4853 VkDescriptorPool descriptorPool,
4854 VkDescriptorPoolResetFlags flags)
4855{
4856 auto stream = mImpl->stream();
4857 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004858 auto resources = mImpl->resources();
4859 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004860 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004861 VkDevice local_device;
4862 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004863 VkDescriptorPool local_descriptorPool;
4864 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004865 VkDescriptorPoolResetFlags local_flags;
4866 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004867 countingStream->rewind();
4868 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004869 uint64_t cgen_var_408;
4870 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_408, 1);
4871 countingStream->write((uint64_t*)&cgen_var_408, 1 * 8);
4872 uint64_t cgen_var_409;
4873 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_409, 1);
4874 countingStream->write((uint64_t*)&cgen_var_409, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004875 countingStream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004876 }
4877 uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4878 countingStream->rewind();
4879 uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool;
4880 stream->write(&opcode_vkResetDescriptorPool, sizeof(uint32_t));
4881 stream->write(&packetSize_vkResetDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004882 uint64_t cgen_var_410;
4883 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_410, 1);
4884 stream->write((uint64_t*)&cgen_var_410, 1 * 8);
4885 uint64_t cgen_var_411;
4886 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_411, 1);
4887 stream->write((uint64_t*)&cgen_var_411, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004888 stream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004889 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
4890 stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004891 countingStream->clearPool();
4892 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004893 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004894 return vkResetDescriptorPool_VkResult_return;
4895}
4896
4897VkResult VkEncoder::vkAllocateDescriptorSets(
4898 VkDevice device,
4899 const VkDescriptorSetAllocateInfo* pAllocateInfo,
4900 VkDescriptorSet* pDescriptorSets)
4901{
4902 auto stream = mImpl->stream();
4903 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004904 auto resources = mImpl->resources();
4905 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004906 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004907 VkDevice local_device;
4908 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004909 VkDescriptorSetAllocateInfo* local_pAllocateInfo;
4910 local_pAllocateInfo = nullptr;
4911 if (pAllocateInfo)
4912 {
4913 local_pAllocateInfo = (VkDescriptorSetAllocateInfo*)pool->alloc(sizeof(const VkDescriptorSetAllocateInfo));
4914 deepcopy_VkDescriptorSetAllocateInfo(pool, pAllocateInfo, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
4915 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004916 countingStream->rewind();
4917 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004918 uint64_t cgen_var_412;
4919 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_412, 1);
4920 countingStream->write((uint64_t*)&cgen_var_412, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004921 marshal_VkDescriptorSetAllocateInfo(countingStream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004922 if (pAllocateInfo->descriptorSetCount)
4923 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004924 uint64_t* cgen_var_413;
4925 countingStream->alloc((void**)&cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
4926 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_413, pAllocateInfo->descriptorSetCount);
4927 countingStream->write((uint64_t*)cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004928 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004929 }
4930 uint32_t packetSize_vkAllocateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4931 countingStream->rewind();
4932 uint32_t opcode_vkAllocateDescriptorSets = OP_vkAllocateDescriptorSets;
4933 stream->write(&opcode_vkAllocateDescriptorSets, sizeof(uint32_t));
4934 stream->write(&packetSize_vkAllocateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004935 uint64_t cgen_var_414;
4936 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_414, 1);
4937 stream->write((uint64_t*)&cgen_var_414, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004938 marshal_VkDescriptorSetAllocateInfo(stream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08004939 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004940 if (pAllocateInfo->descriptorSetCount)
4941 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004942 uint64_t* cgen_var_415;
4943 stream->alloc((void**)&cgen_var_415, pAllocateInfo->descriptorSetCount * 8);
4944 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_415, pAllocateInfo->descriptorSetCount);
4945 stream->write((uint64_t*)cgen_var_415, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004946 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004947 stream->setHandleMapping(resources->unwrapMapping());
4948 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004949 if (pAllocateInfo->descriptorSetCount)
4950 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004951 uint64_t* cgen_var_416;
4952 stream->alloc((void**)&cgen_var_416, pAllocateInfo->descriptorSetCount * 8);
4953 stream->read((uint64_t*)cgen_var_416, pAllocateInfo->descriptorSetCount * 8);
4954 stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_416, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004955 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004956 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004957 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
4958 stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004959 countingStream->clearPool();
4960 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004961 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004962 return vkAllocateDescriptorSets_VkResult_return;
4963}
4964
4965VkResult VkEncoder::vkFreeDescriptorSets(
4966 VkDevice device,
4967 VkDescriptorPool descriptorPool,
4968 uint32_t descriptorSetCount,
4969 const VkDescriptorSet* pDescriptorSets)
4970{
4971 auto stream = mImpl->stream();
4972 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004973 auto resources = mImpl->resources();
4974 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004975 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004976 VkDevice local_device;
4977 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004978 VkDescriptorPool local_descriptorPool;
4979 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004980 uint32_t local_descriptorSetCount;
4981 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004982 VkDescriptorSet* local_pDescriptorSets;
4983 local_pDescriptorSets = nullptr;
4984 if (pDescriptorSets)
4985 {
4986 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
4987 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004988 countingStream->rewind();
4989 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004990 uint64_t cgen_var_417;
4991 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_417, 1);
4992 countingStream->write((uint64_t*)&cgen_var_417, 1 * 8);
4993 uint64_t cgen_var_418;
4994 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_418, 1);
4995 countingStream->write((uint64_t*)&cgen_var_418, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004996 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004997 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004998 uint64_t cgen_var_419 = (uint64_t)(uintptr_t)local_pDescriptorSets;
4999 countingStream->putBe64(cgen_var_419);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005000 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005001 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005002 if (((descriptorSetCount)))
5003 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005004 uint64_t* cgen_var_420;
5005 countingStream->alloc((void**)&cgen_var_420, ((descriptorSetCount)) * 8);
5006 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_420, ((descriptorSetCount)));
5007 countingStream->write((uint64_t*)cgen_var_420, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005008 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005009 }
5010 }
5011 uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5012 countingStream->rewind();
5013 uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets;
5014 stream->write(&opcode_vkFreeDescriptorSets, sizeof(uint32_t));
5015 stream->write(&packetSize_vkFreeDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005016 uint64_t cgen_var_421;
5017 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_421, 1);
5018 stream->write((uint64_t*)&cgen_var_421, 1 * 8);
5019 uint64_t cgen_var_422;
5020 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_422, 1);
5021 stream->write((uint64_t*)&cgen_var_422, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005022 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005023 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005024 uint64_t cgen_var_423 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5025 stream->putBe64(cgen_var_423);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005026 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005027 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005028 if (((descriptorSetCount)))
5029 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005030 uint64_t* cgen_var_424;
5031 stream->alloc((void**)&cgen_var_424, ((descriptorSetCount)) * 8);
5032 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_424, ((descriptorSetCount)));
5033 stream->write((uint64_t*)cgen_var_424, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005034 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005035 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005036 if (pDescriptorSets)
5037 {
5038 resources->destroyMapping()->mapHandles_VkDescriptorSet((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)));
5039 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005040 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
5041 stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005042 countingStream->clearPool();
5043 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005044 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005045 return vkFreeDescriptorSets_VkResult_return;
5046}
5047
5048void VkEncoder::vkUpdateDescriptorSets(
5049 VkDevice device,
5050 uint32_t descriptorWriteCount,
5051 const VkWriteDescriptorSet* pDescriptorWrites,
5052 uint32_t descriptorCopyCount,
5053 const VkCopyDescriptorSet* pDescriptorCopies)
5054{
5055 auto stream = mImpl->stream();
5056 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005057 auto resources = mImpl->resources();
5058 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005059 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005060 VkDevice local_device;
5061 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005062 uint32_t local_descriptorWriteCount;
5063 local_descriptorWriteCount = descriptorWriteCount;
5064 VkWriteDescriptorSet* local_pDescriptorWrites;
5065 local_pDescriptorWrites = nullptr;
5066 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005067 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005068 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005069 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5070 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005071 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005072 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005073 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005074 uint32_t local_descriptorCopyCount;
5075 local_descriptorCopyCount = descriptorCopyCount;
5076 VkCopyDescriptorSet* local_pDescriptorCopies;
5077 local_pDescriptorCopies = nullptr;
5078 if (pDescriptorCopies)
5079 {
5080 local_pDescriptorCopies = (VkCopyDescriptorSet*)pool->alloc(((descriptorCopyCount)) * sizeof(const VkCopyDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005081 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5082 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005083 deepcopy_VkCopyDescriptorSet(pool, pDescriptorCopies + i, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
5084 }
5085 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005086 countingStream->rewind();
5087 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005088 uint64_t cgen_var_425;
5089 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_425, 1);
5090 countingStream->write((uint64_t*)&cgen_var_425, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005091 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
5092 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5093 {
5094 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
5095 }
5096 countingStream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
5097 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5098 {
5099 marshal_VkCopyDescriptorSet(countingStream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005100 }
5101 }
5102 uint32_t packetSize_vkUpdateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5103 countingStream->rewind();
5104 uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets;
5105 stream->write(&opcode_vkUpdateDescriptorSets, sizeof(uint32_t));
5106 stream->write(&packetSize_vkUpdateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005107 uint64_t cgen_var_426;
5108 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_426, 1);
5109 stream->write((uint64_t*)&cgen_var_426, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005110 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005111 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5112 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005113 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005114 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005115 stream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005116 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5117 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005118 marshal_VkCopyDescriptorSet(stream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005119 }
5120}
5121
5122VkResult VkEncoder::vkCreateFramebuffer(
5123 VkDevice device,
5124 const VkFramebufferCreateInfo* pCreateInfo,
5125 const VkAllocationCallbacks* pAllocator,
5126 VkFramebuffer* pFramebuffer)
5127{
5128 auto stream = mImpl->stream();
5129 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005130 auto resources = mImpl->resources();
5131 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005132 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005133 VkDevice local_device;
5134 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005135 VkFramebufferCreateInfo* local_pCreateInfo;
5136 local_pCreateInfo = nullptr;
5137 if (pCreateInfo)
5138 {
5139 local_pCreateInfo = (VkFramebufferCreateInfo*)pool->alloc(sizeof(const VkFramebufferCreateInfo));
5140 deepcopy_VkFramebufferCreateInfo(pool, pCreateInfo, (VkFramebufferCreateInfo*)(local_pCreateInfo));
5141 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005142 VkAllocationCallbacks* local_pAllocator;
5143 local_pAllocator = nullptr;
5144 if (pAllocator)
5145 {
5146 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5147 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5148 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005149 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005150 countingStream->rewind();
5151 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005152 uint64_t cgen_var_427;
5153 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_427, 1);
5154 countingStream->write((uint64_t*)&cgen_var_427, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005155 marshal_VkFramebufferCreateInfo(countingStream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005156 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005157 uint64_t cgen_var_428 = (uint64_t)(uintptr_t)local_pAllocator;
5158 countingStream->putBe64(cgen_var_428);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005159 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005160 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005161 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005162 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005163 uint64_t cgen_var_429;
5164 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_429, 1);
5165 countingStream->write((uint64_t*)&cgen_var_429, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005166 }
5167 uint32_t packetSize_vkCreateFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5168 countingStream->rewind();
5169 uint32_t opcode_vkCreateFramebuffer = OP_vkCreateFramebuffer;
5170 stream->write(&opcode_vkCreateFramebuffer, sizeof(uint32_t));
5171 stream->write(&packetSize_vkCreateFramebuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005172 uint64_t cgen_var_430;
5173 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_430, 1);
5174 stream->write((uint64_t*)&cgen_var_430, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005175 marshal_VkFramebufferCreateInfo(stream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005176 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005177 uint64_t cgen_var_431 = (uint64_t)(uintptr_t)local_pAllocator;
5178 stream->putBe64(cgen_var_431);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005179 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005180 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005181 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005182 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005183 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005184 uint64_t cgen_var_432;
5185 stream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_432, 1);
5186 stream->write((uint64_t*)&cgen_var_432, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005187 stream->setHandleMapping(resources->unwrapMapping());
5188 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005189 uint64_t cgen_var_433;
5190 stream->read((uint64_t*)&cgen_var_433, 8);
5191 stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_433, (VkFramebuffer*)pFramebuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005192 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005193 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
5194 stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005195 countingStream->clearPool();
5196 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005197 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005198 return vkCreateFramebuffer_VkResult_return;
5199}
5200
5201void VkEncoder::vkDestroyFramebuffer(
5202 VkDevice device,
5203 VkFramebuffer framebuffer,
5204 const VkAllocationCallbacks* pAllocator)
5205{
5206 auto stream = mImpl->stream();
5207 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005208 auto resources = mImpl->resources();
5209 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005210 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005211 VkDevice local_device;
5212 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005213 VkFramebuffer local_framebuffer;
5214 local_framebuffer = framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005215 VkAllocationCallbacks* local_pAllocator;
5216 local_pAllocator = nullptr;
5217 if (pAllocator)
5218 {
5219 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5220 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5221 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005222 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005223 countingStream->rewind();
5224 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005225 uint64_t cgen_var_434;
5226 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_434, 1);
5227 countingStream->write((uint64_t*)&cgen_var_434, 1 * 8);
5228 uint64_t cgen_var_435;
5229 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_435, 1);
5230 countingStream->write((uint64_t*)&cgen_var_435, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005231 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005232 uint64_t cgen_var_436 = (uint64_t)(uintptr_t)local_pAllocator;
5233 countingStream->putBe64(cgen_var_436);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005234 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005235 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005236 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005237 }
5238 }
5239 uint32_t packetSize_vkDestroyFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5240 countingStream->rewind();
5241 uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer;
5242 stream->write(&opcode_vkDestroyFramebuffer, sizeof(uint32_t));
5243 stream->write(&packetSize_vkDestroyFramebuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005244 uint64_t cgen_var_437;
5245 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_437, 1);
5246 stream->write((uint64_t*)&cgen_var_437, 1 * 8);
5247 uint64_t cgen_var_438;
5248 stream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_438, 1);
5249 stream->write((uint64_t*)&cgen_var_438, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005250 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005251 uint64_t cgen_var_439 = (uint64_t)(uintptr_t)local_pAllocator;
5252 stream->putBe64(cgen_var_439);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005253 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005254 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005255 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005256 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005257 resources->destroyMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)&framebuffer);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005258}
5259
5260VkResult VkEncoder::vkCreateRenderPass(
5261 VkDevice device,
5262 const VkRenderPassCreateInfo* pCreateInfo,
5263 const VkAllocationCallbacks* pAllocator,
5264 VkRenderPass* pRenderPass)
5265{
5266 auto stream = mImpl->stream();
5267 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005268 auto resources = mImpl->resources();
5269 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005270 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005271 VkDevice local_device;
5272 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005273 VkRenderPassCreateInfo* local_pCreateInfo;
5274 local_pCreateInfo = nullptr;
5275 if (pCreateInfo)
5276 {
5277 local_pCreateInfo = (VkRenderPassCreateInfo*)pool->alloc(sizeof(const VkRenderPassCreateInfo));
5278 deepcopy_VkRenderPassCreateInfo(pool, pCreateInfo, (VkRenderPassCreateInfo*)(local_pCreateInfo));
5279 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005280 VkAllocationCallbacks* local_pAllocator;
5281 local_pAllocator = nullptr;
5282 if (pAllocator)
5283 {
5284 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5285 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5286 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005287 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005288 countingStream->rewind();
5289 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005290 uint64_t cgen_var_440;
5291 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_440, 1);
5292 countingStream->write((uint64_t*)&cgen_var_440, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005293 marshal_VkRenderPassCreateInfo(countingStream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005294 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005295 uint64_t cgen_var_441 = (uint64_t)(uintptr_t)local_pAllocator;
5296 countingStream->putBe64(cgen_var_441);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005297 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005298 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005299 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005300 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005301 uint64_t cgen_var_442;
5302 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_442, 1);
5303 countingStream->write((uint64_t*)&cgen_var_442, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005304 }
5305 uint32_t packetSize_vkCreateRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5306 countingStream->rewind();
5307 uint32_t opcode_vkCreateRenderPass = OP_vkCreateRenderPass;
5308 stream->write(&opcode_vkCreateRenderPass, sizeof(uint32_t));
5309 stream->write(&packetSize_vkCreateRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005310 uint64_t cgen_var_443;
5311 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_443, 1);
5312 stream->write((uint64_t*)&cgen_var_443, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005313 marshal_VkRenderPassCreateInfo(stream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005314 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005315 uint64_t cgen_var_444 = (uint64_t)(uintptr_t)local_pAllocator;
5316 stream->putBe64(cgen_var_444);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005317 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005318 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005319 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005320 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005321 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005322 uint64_t cgen_var_445;
5323 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_445, 1);
5324 stream->write((uint64_t*)&cgen_var_445, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005325 stream->setHandleMapping(resources->unwrapMapping());
5326 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005327 uint64_t cgen_var_446;
5328 stream->read((uint64_t*)&cgen_var_446, 8);
5329 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_446, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005330 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005331 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
5332 stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005333 countingStream->clearPool();
5334 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005335 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005336 return vkCreateRenderPass_VkResult_return;
5337}
5338
5339void VkEncoder::vkDestroyRenderPass(
5340 VkDevice device,
5341 VkRenderPass renderPass,
5342 const VkAllocationCallbacks* pAllocator)
5343{
5344 auto stream = mImpl->stream();
5345 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005346 auto resources = mImpl->resources();
5347 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005348 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005349 VkDevice local_device;
5350 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005351 VkRenderPass local_renderPass;
5352 local_renderPass = renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005353 VkAllocationCallbacks* local_pAllocator;
5354 local_pAllocator = nullptr;
5355 if (pAllocator)
5356 {
5357 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5358 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5359 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005360 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005361 countingStream->rewind();
5362 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005363 uint64_t cgen_var_447;
5364 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_447, 1);
5365 countingStream->write((uint64_t*)&cgen_var_447, 1 * 8);
5366 uint64_t cgen_var_448;
5367 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_448, 1);
5368 countingStream->write((uint64_t*)&cgen_var_448, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005369 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005370 uint64_t cgen_var_449 = (uint64_t)(uintptr_t)local_pAllocator;
5371 countingStream->putBe64(cgen_var_449);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005372 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005373 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005374 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005375 }
5376 }
5377 uint32_t packetSize_vkDestroyRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5378 countingStream->rewind();
5379 uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass;
5380 stream->write(&opcode_vkDestroyRenderPass, sizeof(uint32_t));
5381 stream->write(&packetSize_vkDestroyRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005382 uint64_t cgen_var_450;
5383 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_450, 1);
5384 stream->write((uint64_t*)&cgen_var_450, 1 * 8);
5385 uint64_t cgen_var_451;
5386 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_451, 1);
5387 stream->write((uint64_t*)&cgen_var_451, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005388 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005389 uint64_t cgen_var_452 = (uint64_t)(uintptr_t)local_pAllocator;
5390 stream->putBe64(cgen_var_452);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005391 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005392 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005393 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005394 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005395 resources->destroyMapping()->mapHandles_VkRenderPass((VkRenderPass*)&renderPass);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005396}
5397
5398void VkEncoder::vkGetRenderAreaGranularity(
5399 VkDevice device,
5400 VkRenderPass renderPass,
5401 VkExtent2D* pGranularity)
5402{
5403 auto stream = mImpl->stream();
5404 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005405 auto resources = mImpl->resources();
5406 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005407 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005408 VkDevice local_device;
5409 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005410 VkRenderPass local_renderPass;
5411 local_renderPass = renderPass;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005412 countingStream->rewind();
5413 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005414 uint64_t cgen_var_453;
5415 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_453, 1);
5416 countingStream->write((uint64_t*)&cgen_var_453, 1 * 8);
5417 uint64_t cgen_var_454;
5418 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_454, 1);
5419 countingStream->write((uint64_t*)&cgen_var_454, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005420 marshal_VkExtent2D(countingStream, (VkExtent2D*)(pGranularity));
5421 }
5422 uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5423 countingStream->rewind();
5424 uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity;
5425 stream->write(&opcode_vkGetRenderAreaGranularity, sizeof(uint32_t));
5426 stream->write(&packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005427 uint64_t cgen_var_455;
5428 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_455, 1);
5429 stream->write((uint64_t*)&cgen_var_455, 1 * 8);
5430 uint64_t cgen_var_456;
5431 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_456, 1);
5432 stream->write((uint64_t*)&cgen_var_456, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005433 marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
5434 unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
5435}
5436
5437VkResult VkEncoder::vkCreateCommandPool(
5438 VkDevice device,
5439 const VkCommandPoolCreateInfo* pCreateInfo,
5440 const VkAllocationCallbacks* pAllocator,
5441 VkCommandPool* pCommandPool)
5442{
5443 auto stream = mImpl->stream();
5444 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005445 auto resources = mImpl->resources();
5446 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005447 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005448 VkDevice local_device;
5449 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005450 VkCommandPoolCreateInfo* local_pCreateInfo;
5451 local_pCreateInfo = nullptr;
5452 if (pCreateInfo)
5453 {
5454 local_pCreateInfo = (VkCommandPoolCreateInfo*)pool->alloc(sizeof(const VkCommandPoolCreateInfo));
5455 deepcopy_VkCommandPoolCreateInfo(pool, pCreateInfo, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
5456 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005457 VkAllocationCallbacks* local_pAllocator;
5458 local_pAllocator = nullptr;
5459 if (pAllocator)
5460 {
5461 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5462 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5463 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005464 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005465 countingStream->rewind();
5466 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005467 uint64_t cgen_var_457;
5468 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_457, 1);
5469 countingStream->write((uint64_t*)&cgen_var_457, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005470 marshal_VkCommandPoolCreateInfo(countingStream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005471 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005472 uint64_t cgen_var_458 = (uint64_t)(uintptr_t)local_pAllocator;
5473 countingStream->putBe64(cgen_var_458);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005474 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005475 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005476 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005477 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005478 uint64_t cgen_var_459;
5479 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_459, 1);
5480 countingStream->write((uint64_t*)&cgen_var_459, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005481 }
5482 uint32_t packetSize_vkCreateCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5483 countingStream->rewind();
5484 uint32_t opcode_vkCreateCommandPool = OP_vkCreateCommandPool;
5485 stream->write(&opcode_vkCreateCommandPool, sizeof(uint32_t));
5486 stream->write(&packetSize_vkCreateCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005487 uint64_t cgen_var_460;
5488 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_460, 1);
5489 stream->write((uint64_t*)&cgen_var_460, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005490 marshal_VkCommandPoolCreateInfo(stream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005491 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005492 uint64_t cgen_var_461 = (uint64_t)(uintptr_t)local_pAllocator;
5493 stream->putBe64(cgen_var_461);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005494 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005495 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005496 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005497 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005498 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005499 uint64_t cgen_var_462;
5500 stream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_462, 1);
5501 stream->write((uint64_t*)&cgen_var_462, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005502 stream->setHandleMapping(resources->unwrapMapping());
5503 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005504 uint64_t cgen_var_463;
5505 stream->read((uint64_t*)&cgen_var_463, 8);
5506 stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_463, (VkCommandPool*)pCommandPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005507 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005508 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
5509 stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005510 countingStream->clearPool();
5511 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005512 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005513 return vkCreateCommandPool_VkResult_return;
5514}
5515
5516void VkEncoder::vkDestroyCommandPool(
5517 VkDevice device,
5518 VkCommandPool commandPool,
5519 const VkAllocationCallbacks* pAllocator)
5520{
5521 auto stream = mImpl->stream();
5522 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005523 auto resources = mImpl->resources();
5524 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005525 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005526 VkDevice local_device;
5527 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005528 VkCommandPool local_commandPool;
5529 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005530 VkAllocationCallbacks* local_pAllocator;
5531 local_pAllocator = nullptr;
5532 if (pAllocator)
5533 {
5534 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5535 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5536 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005537 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005538 countingStream->rewind();
5539 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005540 uint64_t cgen_var_464;
5541 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_464, 1);
5542 countingStream->write((uint64_t*)&cgen_var_464, 1 * 8);
5543 uint64_t cgen_var_465;
5544 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_465, 1);
5545 countingStream->write((uint64_t*)&cgen_var_465, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005546 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005547 uint64_t cgen_var_466 = (uint64_t)(uintptr_t)local_pAllocator;
5548 countingStream->putBe64(cgen_var_466);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005549 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005550 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005551 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005552 }
5553 }
5554 uint32_t packetSize_vkDestroyCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5555 countingStream->rewind();
5556 uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool;
5557 stream->write(&opcode_vkDestroyCommandPool, sizeof(uint32_t));
5558 stream->write(&packetSize_vkDestroyCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005559 uint64_t cgen_var_467;
5560 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_467, 1);
5561 stream->write((uint64_t*)&cgen_var_467, 1 * 8);
5562 uint64_t cgen_var_468;
5563 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_468, 1);
5564 stream->write((uint64_t*)&cgen_var_468, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005565 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005566 uint64_t cgen_var_469 = (uint64_t)(uintptr_t)local_pAllocator;
5567 stream->putBe64(cgen_var_469);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005568 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005569 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005570 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005571 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005572 resources->destroyMapping()->mapHandles_VkCommandPool((VkCommandPool*)&commandPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005573}
5574
5575VkResult VkEncoder::vkResetCommandPool(
5576 VkDevice device,
5577 VkCommandPool commandPool,
5578 VkCommandPoolResetFlags flags)
5579{
5580 auto stream = mImpl->stream();
5581 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005582 auto resources = mImpl->resources();
5583 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005584 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005585 VkDevice local_device;
5586 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005587 VkCommandPool local_commandPool;
5588 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005589 VkCommandPoolResetFlags local_flags;
5590 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005591 countingStream->rewind();
5592 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005593 uint64_t cgen_var_470;
5594 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_470, 1);
5595 countingStream->write((uint64_t*)&cgen_var_470, 1 * 8);
5596 uint64_t cgen_var_471;
5597 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_471, 1);
5598 countingStream->write((uint64_t*)&cgen_var_471, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005599 countingStream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005600 }
5601 uint32_t packetSize_vkResetCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5602 countingStream->rewind();
5603 uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool;
5604 stream->write(&opcode_vkResetCommandPool, sizeof(uint32_t));
5605 stream->write(&packetSize_vkResetCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005606 uint64_t cgen_var_472;
5607 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_472, 1);
5608 stream->write((uint64_t*)&cgen_var_472, 1 * 8);
5609 uint64_t cgen_var_473;
5610 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_473, 1);
5611 stream->write((uint64_t*)&cgen_var_473, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005612 stream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005613 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
5614 stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005615 countingStream->clearPool();
5616 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005617 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005618 return vkResetCommandPool_VkResult_return;
5619}
5620
5621VkResult VkEncoder::vkAllocateCommandBuffers(
5622 VkDevice device,
5623 const VkCommandBufferAllocateInfo* pAllocateInfo,
5624 VkCommandBuffer* pCommandBuffers)
5625{
5626 auto stream = mImpl->stream();
5627 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005628 auto resources = mImpl->resources();
5629 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005630 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005631 VkDevice local_device;
5632 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005633 VkCommandBufferAllocateInfo* local_pAllocateInfo;
5634 local_pAllocateInfo = nullptr;
5635 if (pAllocateInfo)
5636 {
5637 local_pAllocateInfo = (VkCommandBufferAllocateInfo*)pool->alloc(sizeof(const VkCommandBufferAllocateInfo));
5638 deepcopy_VkCommandBufferAllocateInfo(pool, pAllocateInfo, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
5639 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005640 countingStream->rewind();
5641 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005642 uint64_t cgen_var_474;
5643 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_474, 1);
5644 countingStream->write((uint64_t*)&cgen_var_474, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005645 marshal_VkCommandBufferAllocateInfo(countingStream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005646 if (pAllocateInfo->commandBufferCount)
5647 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005648 uint64_t* cgen_var_475;
5649 countingStream->alloc((void**)&cgen_var_475, pAllocateInfo->commandBufferCount * 8);
5650 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_475, pAllocateInfo->commandBufferCount);
5651 countingStream->write((uint64_t*)cgen_var_475, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005652 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005653 }
5654 uint32_t packetSize_vkAllocateCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5655 countingStream->rewind();
5656 uint32_t opcode_vkAllocateCommandBuffers = OP_vkAllocateCommandBuffers;
5657 stream->write(&opcode_vkAllocateCommandBuffers, sizeof(uint32_t));
5658 stream->write(&packetSize_vkAllocateCommandBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005659 uint64_t cgen_var_476;
5660 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_476, 1);
5661 stream->write((uint64_t*)&cgen_var_476, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005662 marshal_VkCommandBufferAllocateInfo(stream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08005663 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08005664 if (pAllocateInfo->commandBufferCount)
5665 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005666 uint64_t* cgen_var_477;
5667 stream->alloc((void**)&cgen_var_477, pAllocateInfo->commandBufferCount * 8);
5668 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_477, pAllocateInfo->commandBufferCount);
5669 stream->write((uint64_t*)cgen_var_477, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005670 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005671 stream->setHandleMapping(resources->unwrapMapping());
5672 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08005673 if (pAllocateInfo->commandBufferCount)
5674 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005675 uint64_t* cgen_var_478;
5676 stream->alloc((void**)&cgen_var_478, pAllocateInfo->commandBufferCount * 8);
5677 stream->read((uint64_t*)cgen_var_478, pAllocateInfo->commandBufferCount * 8);
5678 stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_478, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005679 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005680 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005681 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
5682 stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005683 countingStream->clearPool();
5684 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005685 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005686 return vkAllocateCommandBuffers_VkResult_return;
5687}
5688
5689void VkEncoder::vkFreeCommandBuffers(
5690 VkDevice device,
5691 VkCommandPool commandPool,
5692 uint32_t commandBufferCount,
5693 const VkCommandBuffer* pCommandBuffers)
5694{
5695 auto stream = mImpl->stream();
5696 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005697 auto resources = mImpl->resources();
5698 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005699 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005700 VkDevice local_device;
5701 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005702 VkCommandPool local_commandPool;
5703 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005704 uint32_t local_commandBufferCount;
5705 local_commandBufferCount = commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005706 VkCommandBuffer* local_pCommandBuffers;
5707 local_pCommandBuffers = nullptr;
5708 if (pCommandBuffers)
5709 {
5710 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
5711 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005712 countingStream->rewind();
5713 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005714 uint64_t cgen_var_479;
5715 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_479, 1);
5716 countingStream->write((uint64_t*)&cgen_var_479, 1 * 8);
5717 uint64_t cgen_var_480;
5718 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_480, 1);
5719 countingStream->write((uint64_t*)&cgen_var_480, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005720 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005721 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005722 uint64_t cgen_var_481 = (uint64_t)(uintptr_t)local_pCommandBuffers;
5723 countingStream->putBe64(cgen_var_481);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005724 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005725 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005726 if (((commandBufferCount)))
5727 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005728 uint64_t* cgen_var_482;
5729 countingStream->alloc((void**)&cgen_var_482, ((commandBufferCount)) * 8);
5730 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_482, ((commandBufferCount)));
5731 countingStream->write((uint64_t*)cgen_var_482, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005732 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005733 }
5734 }
5735 uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5736 countingStream->rewind();
5737 uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers;
5738 stream->write(&opcode_vkFreeCommandBuffers, sizeof(uint32_t));
5739 stream->write(&packetSize_vkFreeCommandBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005740 uint64_t cgen_var_483;
5741 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_483, 1);
5742 stream->write((uint64_t*)&cgen_var_483, 1 * 8);
5743 uint64_t cgen_var_484;
5744 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_484, 1);
5745 stream->write((uint64_t*)&cgen_var_484, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005746 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005747 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005748 uint64_t cgen_var_485 = (uint64_t)(uintptr_t)local_pCommandBuffers;
5749 stream->putBe64(cgen_var_485);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005750 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005751 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005752 if (((commandBufferCount)))
5753 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005754 uint64_t* cgen_var_486;
5755 stream->alloc((void**)&cgen_var_486, ((commandBufferCount)) * 8);
5756 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_486, ((commandBufferCount)));
5757 stream->write((uint64_t*)cgen_var_486, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005758 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005759 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005760 if (pCommandBuffers)
5761 {
5762 resources->destroyMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)));
5763 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005764}
5765
5766VkResult VkEncoder::vkBeginCommandBuffer(
5767 VkCommandBuffer commandBuffer,
5768 const VkCommandBufferBeginInfo* pBeginInfo)
5769{
5770 auto stream = mImpl->stream();
5771 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005772 auto resources = mImpl->resources();
5773 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005774 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005775 VkCommandBuffer local_commandBuffer;
5776 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005777 VkCommandBufferBeginInfo* local_pBeginInfo;
5778 local_pBeginInfo = nullptr;
5779 if (pBeginInfo)
5780 {
5781 local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo));
5782 deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
5783 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005784 countingStream->rewind();
5785 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005786 uint64_t cgen_var_487;
5787 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_487, 1);
5788 countingStream->write((uint64_t*)&cgen_var_487, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005789 marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005790 }
5791 uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5792 countingStream->rewind();
5793 uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer;
5794 stream->write(&opcode_vkBeginCommandBuffer, sizeof(uint32_t));
5795 stream->write(&packetSize_vkBeginCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005796 uint64_t cgen_var_488;
5797 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_488, 1);
5798 stream->write((uint64_t*)&cgen_var_488, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005799 marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005800 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
5801 stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005802 countingStream->clearPool();
5803 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005804 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005805 return vkBeginCommandBuffer_VkResult_return;
5806}
5807
5808VkResult VkEncoder::vkEndCommandBuffer(
5809 VkCommandBuffer commandBuffer)
5810{
5811 auto stream = mImpl->stream();
5812 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005813 auto resources = mImpl->resources();
5814 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005815 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005816 VkCommandBuffer local_commandBuffer;
5817 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005818 countingStream->rewind();
5819 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005820 uint64_t cgen_var_489;
5821 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_489, 1);
5822 countingStream->write((uint64_t*)&cgen_var_489, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005823 }
5824 uint32_t packetSize_vkEndCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5825 countingStream->rewind();
5826 uint32_t opcode_vkEndCommandBuffer = OP_vkEndCommandBuffer;
5827 stream->write(&opcode_vkEndCommandBuffer, sizeof(uint32_t));
5828 stream->write(&packetSize_vkEndCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005829 uint64_t cgen_var_490;
5830 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_490, 1);
5831 stream->write((uint64_t*)&cgen_var_490, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005832 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
5833 stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005834 countingStream->clearPool();
5835 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005836 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005837 return vkEndCommandBuffer_VkResult_return;
5838}
5839
5840VkResult VkEncoder::vkResetCommandBuffer(
5841 VkCommandBuffer commandBuffer,
5842 VkCommandBufferResetFlags flags)
5843{
5844 auto stream = mImpl->stream();
5845 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005846 auto resources = mImpl->resources();
5847 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005848 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005849 VkCommandBuffer local_commandBuffer;
5850 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005851 VkCommandBufferResetFlags local_flags;
5852 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005853 countingStream->rewind();
5854 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005855 uint64_t cgen_var_491;
5856 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_491, 1);
5857 countingStream->write((uint64_t*)&cgen_var_491, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005858 countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005859 }
5860 uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5861 countingStream->rewind();
5862 uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer;
5863 stream->write(&opcode_vkResetCommandBuffer, sizeof(uint32_t));
5864 stream->write(&packetSize_vkResetCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005865 uint64_t cgen_var_492;
5866 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_492, 1);
5867 stream->write((uint64_t*)&cgen_var_492, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005868 stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005869 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
5870 stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005871 countingStream->clearPool();
5872 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005873 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005874 return vkResetCommandBuffer_VkResult_return;
5875}
5876
5877void VkEncoder::vkCmdBindPipeline(
5878 VkCommandBuffer commandBuffer,
5879 VkPipelineBindPoint pipelineBindPoint,
5880 VkPipeline pipeline)
5881{
5882 auto stream = mImpl->stream();
5883 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005884 auto resources = mImpl->resources();
5885 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005886 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005887 VkCommandBuffer local_commandBuffer;
5888 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005889 VkPipelineBindPoint local_pipelineBindPoint;
5890 local_pipelineBindPoint = pipelineBindPoint;
5891 VkPipeline local_pipeline;
5892 local_pipeline = pipeline;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005893 countingStream->rewind();
5894 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005895 uint64_t cgen_var_493;
5896 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_493, 1);
5897 countingStream->write((uint64_t*)&cgen_var_493, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005898 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005899 uint64_t cgen_var_494;
5900 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_494, 1);
5901 countingStream->write((uint64_t*)&cgen_var_494, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005902 }
5903 uint32_t packetSize_vkCmdBindPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5904 countingStream->rewind();
5905 uint32_t opcode_vkCmdBindPipeline = OP_vkCmdBindPipeline;
5906 stream->write(&opcode_vkCmdBindPipeline, sizeof(uint32_t));
5907 stream->write(&packetSize_vkCmdBindPipeline, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005908 uint64_t cgen_var_495;
5909 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_495, 1);
5910 stream->write((uint64_t*)&cgen_var_495, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005911 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005912 uint64_t cgen_var_496;
5913 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_496, 1);
5914 stream->write((uint64_t*)&cgen_var_496, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005915}
5916
5917void VkEncoder::vkCmdSetViewport(
5918 VkCommandBuffer commandBuffer,
5919 uint32_t firstViewport,
5920 uint32_t viewportCount,
5921 const VkViewport* pViewports)
5922{
5923 auto stream = mImpl->stream();
5924 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005925 auto resources = mImpl->resources();
5926 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005927 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005928 VkCommandBuffer local_commandBuffer;
5929 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005930 uint32_t local_firstViewport;
5931 local_firstViewport = firstViewport;
5932 uint32_t local_viewportCount;
5933 local_viewportCount = viewportCount;
5934 VkViewport* local_pViewports;
5935 local_pViewports = nullptr;
5936 if (pViewports)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005937 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005938 local_pViewports = (VkViewport*)pool->alloc(((viewportCount)) * sizeof(const VkViewport));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005939 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5940 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005941 deepcopy_VkViewport(pool, pViewports + i, (VkViewport*)(local_pViewports + i));
5942 }
5943 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005944 countingStream->rewind();
5945 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005946 uint64_t cgen_var_497;
5947 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_497, 1);
5948 countingStream->write((uint64_t*)&cgen_var_497, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005949 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
5950 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
5951 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5952 {
5953 marshal_VkViewport(countingStream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005954 }
5955 }
5956 uint32_t packetSize_vkCmdSetViewport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5957 countingStream->rewind();
5958 uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport;
5959 stream->write(&opcode_vkCmdSetViewport, sizeof(uint32_t));
5960 stream->write(&packetSize_vkCmdSetViewport, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005961 uint64_t cgen_var_498;
5962 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_498, 1);
5963 stream->write((uint64_t*)&cgen_var_498, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005964 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
5965 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005966 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5967 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005968 marshal_VkViewport(stream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005969 }
5970}
5971
5972void VkEncoder::vkCmdSetScissor(
5973 VkCommandBuffer commandBuffer,
5974 uint32_t firstScissor,
5975 uint32_t scissorCount,
5976 const VkRect2D* pScissors)
5977{
5978 auto stream = mImpl->stream();
5979 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005980 auto resources = mImpl->resources();
5981 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005982 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005983 VkCommandBuffer local_commandBuffer;
5984 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005985 uint32_t local_firstScissor;
5986 local_firstScissor = firstScissor;
5987 uint32_t local_scissorCount;
5988 local_scissorCount = scissorCount;
5989 VkRect2D* local_pScissors;
5990 local_pScissors = nullptr;
5991 if (pScissors)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005992 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005993 local_pScissors = (VkRect2D*)pool->alloc(((scissorCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005994 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
5995 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005996 deepcopy_VkRect2D(pool, pScissors + i, (VkRect2D*)(local_pScissors + i));
5997 }
5998 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005999 countingStream->rewind();
6000 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006001 uint64_t cgen_var_499;
6002 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_499, 1);
6003 countingStream->write((uint64_t*)&cgen_var_499, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006004 countingStream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6005 countingStream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
6006 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6007 {
6008 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006009 }
6010 }
6011 uint32_t packetSize_vkCmdSetScissor = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6012 countingStream->rewind();
6013 uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor;
6014 stream->write(&opcode_vkCmdSetScissor, sizeof(uint32_t));
6015 stream->write(&packetSize_vkCmdSetScissor, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006016 uint64_t cgen_var_500;
6017 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_500, 1);
6018 stream->write((uint64_t*)&cgen_var_500, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006019 stream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6020 stream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006021 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6022 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006023 marshal_VkRect2D(stream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006024 }
6025}
6026
6027void VkEncoder::vkCmdSetLineWidth(
6028 VkCommandBuffer commandBuffer,
6029 float lineWidth)
6030{
6031 auto stream = mImpl->stream();
6032 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006033 auto resources = mImpl->resources();
6034 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006035 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006036 VkCommandBuffer local_commandBuffer;
6037 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006038 float local_lineWidth;
6039 local_lineWidth = lineWidth;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006040 countingStream->rewind();
6041 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006042 uint64_t cgen_var_501;
6043 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_501, 1);
6044 countingStream->write((uint64_t*)&cgen_var_501, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006045 countingStream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006046 }
6047 uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6048 countingStream->rewind();
6049 uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth;
6050 stream->write(&opcode_vkCmdSetLineWidth, sizeof(uint32_t));
6051 stream->write(&packetSize_vkCmdSetLineWidth, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006052 uint64_t cgen_var_502;
6053 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_502, 1);
6054 stream->write((uint64_t*)&cgen_var_502, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006055 stream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006056}
6057
6058void VkEncoder::vkCmdSetDepthBias(
6059 VkCommandBuffer commandBuffer,
6060 float depthBiasConstantFactor,
6061 float depthBiasClamp,
6062 float depthBiasSlopeFactor)
6063{
6064 auto stream = mImpl->stream();
6065 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006066 auto resources = mImpl->resources();
6067 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006068 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006069 VkCommandBuffer local_commandBuffer;
6070 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006071 float local_depthBiasConstantFactor;
6072 local_depthBiasConstantFactor = depthBiasConstantFactor;
6073 float local_depthBiasClamp;
6074 local_depthBiasClamp = depthBiasClamp;
6075 float local_depthBiasSlopeFactor;
6076 local_depthBiasSlopeFactor = depthBiasSlopeFactor;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006077 countingStream->rewind();
6078 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006079 uint64_t cgen_var_503;
6080 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_503, 1);
6081 countingStream->write((uint64_t*)&cgen_var_503, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006082 countingStream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6083 countingStream->write((float*)&local_depthBiasClamp, sizeof(float));
6084 countingStream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006085 }
6086 uint32_t packetSize_vkCmdSetDepthBias = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6087 countingStream->rewind();
6088 uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias;
6089 stream->write(&opcode_vkCmdSetDepthBias, sizeof(uint32_t));
6090 stream->write(&packetSize_vkCmdSetDepthBias, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006091 uint64_t cgen_var_504;
6092 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_504, 1);
6093 stream->write((uint64_t*)&cgen_var_504, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006094 stream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6095 stream->write((float*)&local_depthBiasClamp, sizeof(float));
6096 stream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006097}
6098
6099void VkEncoder::vkCmdSetBlendConstants(
6100 VkCommandBuffer commandBuffer,
6101 const float blendConstants)
6102{
6103 auto stream = mImpl->stream();
6104 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006105 auto resources = mImpl->resources();
6106 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006107 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006108 VkCommandBuffer local_commandBuffer;
6109 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006110 float local_blendConstants[4];
6111 memcpy(&local_blendConstants, &blendConstants, 4 * sizeof(const float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006112 countingStream->rewind();
6113 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006114 uint64_t cgen_var_505;
6115 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_505, 1);
6116 countingStream->write((uint64_t*)&cgen_var_505, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006117 countingStream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006118 }
6119 uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6120 countingStream->rewind();
6121 uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants;
6122 stream->write(&opcode_vkCmdSetBlendConstants, sizeof(uint32_t));
6123 stream->write(&packetSize_vkCmdSetBlendConstants, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006124 uint64_t cgen_var_506;
6125 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_506, 1);
6126 stream->write((uint64_t*)&cgen_var_506, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006127 stream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006128}
6129
6130void VkEncoder::vkCmdSetDepthBounds(
6131 VkCommandBuffer commandBuffer,
6132 float minDepthBounds,
6133 float maxDepthBounds)
6134{
6135 auto stream = mImpl->stream();
6136 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006137 auto resources = mImpl->resources();
6138 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006139 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006140 VkCommandBuffer local_commandBuffer;
6141 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006142 float local_minDepthBounds;
6143 local_minDepthBounds = minDepthBounds;
6144 float local_maxDepthBounds;
6145 local_maxDepthBounds = maxDepthBounds;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006146 countingStream->rewind();
6147 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006148 uint64_t cgen_var_507;
6149 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_507, 1);
6150 countingStream->write((uint64_t*)&cgen_var_507, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006151 countingStream->write((float*)&local_minDepthBounds, sizeof(float));
6152 countingStream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006153 }
6154 uint32_t packetSize_vkCmdSetDepthBounds = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6155 countingStream->rewind();
6156 uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds;
6157 stream->write(&opcode_vkCmdSetDepthBounds, sizeof(uint32_t));
6158 stream->write(&packetSize_vkCmdSetDepthBounds, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006159 uint64_t cgen_var_508;
6160 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_508, 1);
6161 stream->write((uint64_t*)&cgen_var_508, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006162 stream->write((float*)&local_minDepthBounds, sizeof(float));
6163 stream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006164}
6165
6166void VkEncoder::vkCmdSetStencilCompareMask(
6167 VkCommandBuffer commandBuffer,
6168 VkStencilFaceFlags faceMask,
6169 uint32_t compareMask)
6170{
6171 auto stream = mImpl->stream();
6172 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006173 auto resources = mImpl->resources();
6174 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006175 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006176 VkCommandBuffer local_commandBuffer;
6177 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006178 VkStencilFaceFlags local_faceMask;
6179 local_faceMask = faceMask;
6180 uint32_t local_compareMask;
6181 local_compareMask = compareMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006182 countingStream->rewind();
6183 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006184 uint64_t cgen_var_509;
6185 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_509, 1);
6186 countingStream->write((uint64_t*)&cgen_var_509, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006187 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6188 countingStream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006189 }
6190 uint32_t packetSize_vkCmdSetStencilCompareMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6191 countingStream->rewind();
6192 uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask;
6193 stream->write(&opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t));
6194 stream->write(&packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006195 uint64_t cgen_var_510;
6196 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_510, 1);
6197 stream->write((uint64_t*)&cgen_var_510, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006198 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6199 stream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006200}
6201
6202void VkEncoder::vkCmdSetStencilWriteMask(
6203 VkCommandBuffer commandBuffer,
6204 VkStencilFaceFlags faceMask,
6205 uint32_t writeMask)
6206{
6207 auto stream = mImpl->stream();
6208 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006209 auto resources = mImpl->resources();
6210 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006211 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006212 VkCommandBuffer local_commandBuffer;
6213 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006214 VkStencilFaceFlags local_faceMask;
6215 local_faceMask = faceMask;
6216 uint32_t local_writeMask;
6217 local_writeMask = writeMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006218 countingStream->rewind();
6219 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006220 uint64_t cgen_var_511;
6221 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_511, 1);
6222 countingStream->write((uint64_t*)&cgen_var_511, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006223 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6224 countingStream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006225 }
6226 uint32_t packetSize_vkCmdSetStencilWriteMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6227 countingStream->rewind();
6228 uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask;
6229 stream->write(&opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t));
6230 stream->write(&packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006231 uint64_t cgen_var_512;
6232 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_512, 1);
6233 stream->write((uint64_t*)&cgen_var_512, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006234 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6235 stream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006236}
6237
6238void VkEncoder::vkCmdSetStencilReference(
6239 VkCommandBuffer commandBuffer,
6240 VkStencilFaceFlags faceMask,
6241 uint32_t reference)
6242{
6243 auto stream = mImpl->stream();
6244 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006245 auto resources = mImpl->resources();
6246 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006247 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006248 VkCommandBuffer local_commandBuffer;
6249 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006250 VkStencilFaceFlags local_faceMask;
6251 local_faceMask = faceMask;
6252 uint32_t local_reference;
6253 local_reference = reference;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006254 countingStream->rewind();
6255 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006256 uint64_t cgen_var_513;
6257 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_513, 1);
6258 countingStream->write((uint64_t*)&cgen_var_513, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006259 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6260 countingStream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006261 }
6262 uint32_t packetSize_vkCmdSetStencilReference = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6263 countingStream->rewind();
6264 uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference;
6265 stream->write(&opcode_vkCmdSetStencilReference, sizeof(uint32_t));
6266 stream->write(&packetSize_vkCmdSetStencilReference, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006267 uint64_t cgen_var_514;
6268 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_514, 1);
6269 stream->write((uint64_t*)&cgen_var_514, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006270 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6271 stream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006272}
6273
6274void VkEncoder::vkCmdBindDescriptorSets(
6275 VkCommandBuffer commandBuffer,
6276 VkPipelineBindPoint pipelineBindPoint,
6277 VkPipelineLayout layout,
6278 uint32_t firstSet,
6279 uint32_t descriptorSetCount,
6280 const VkDescriptorSet* pDescriptorSets,
6281 uint32_t dynamicOffsetCount,
6282 const uint32_t* pDynamicOffsets)
6283{
6284 auto stream = mImpl->stream();
6285 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006286 auto resources = mImpl->resources();
6287 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006288 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006289 VkCommandBuffer local_commandBuffer;
6290 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006291 VkPipelineBindPoint local_pipelineBindPoint;
6292 local_pipelineBindPoint = pipelineBindPoint;
6293 VkPipelineLayout local_layout;
6294 local_layout = layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006295 uint32_t local_firstSet;
6296 local_firstSet = firstSet;
6297 uint32_t local_descriptorSetCount;
6298 local_descriptorSetCount = descriptorSetCount;
6299 VkDescriptorSet* local_pDescriptorSets;
6300 local_pDescriptorSets = nullptr;
6301 if (pDescriptorSets)
6302 {
6303 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
6304 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006305 uint32_t local_dynamicOffsetCount;
6306 local_dynamicOffsetCount = dynamicOffsetCount;
6307 uint32_t* local_pDynamicOffsets;
6308 local_pDynamicOffsets = nullptr;
6309 if (pDynamicOffsets)
6310 {
6311 local_pDynamicOffsets = (uint32_t*)pool->dupArray(pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
6312 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006313 countingStream->rewind();
6314 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006315 uint64_t cgen_var_515;
6316 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_515, 1);
6317 countingStream->write((uint64_t*)&cgen_var_515, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006318 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006319 uint64_t cgen_var_516;
6320 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_516, 1);
6321 countingStream->write((uint64_t*)&cgen_var_516, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006322 countingStream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
6323 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006324 if (((descriptorSetCount)))
6325 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006326 uint64_t* cgen_var_517;
6327 countingStream->alloc((void**)&cgen_var_517, ((descriptorSetCount)) * 8);
6328 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_517, ((descriptorSetCount)));
6329 countingStream->write((uint64_t*)cgen_var_517, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006330 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006331 countingStream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
6332 countingStream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006333 }
6334 uint32_t packetSize_vkCmdBindDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6335 countingStream->rewind();
6336 uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets;
6337 stream->write(&opcode_vkCmdBindDescriptorSets, sizeof(uint32_t));
6338 stream->write(&packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006339 uint64_t cgen_var_518;
6340 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_518, 1);
6341 stream->write((uint64_t*)&cgen_var_518, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006342 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006343 uint64_t cgen_var_519;
6344 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_519, 1);
6345 stream->write((uint64_t*)&cgen_var_519, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006346 stream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
6347 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006348 if (((descriptorSetCount)))
6349 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006350 uint64_t* cgen_var_520;
6351 stream->alloc((void**)&cgen_var_520, ((descriptorSetCount)) * 8);
6352 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_520, ((descriptorSetCount)));
6353 stream->write((uint64_t*)cgen_var_520, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006354 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006355 stream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
6356 stream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006357}
6358
6359void VkEncoder::vkCmdBindIndexBuffer(
6360 VkCommandBuffer commandBuffer,
6361 VkBuffer buffer,
6362 VkDeviceSize offset,
6363 VkIndexType indexType)
6364{
6365 auto stream = mImpl->stream();
6366 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006367 auto resources = mImpl->resources();
6368 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006369 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006370 VkCommandBuffer local_commandBuffer;
6371 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006372 VkBuffer local_buffer;
6373 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006374 VkDeviceSize local_offset;
6375 local_offset = offset;
6376 VkIndexType local_indexType;
6377 local_indexType = indexType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006378 countingStream->rewind();
6379 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006380 uint64_t cgen_var_521;
6381 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_521, 1);
6382 countingStream->write((uint64_t*)&cgen_var_521, 1 * 8);
6383 uint64_t cgen_var_522;
6384 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_522, 1);
6385 countingStream->write((uint64_t*)&cgen_var_522, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006386 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6387 countingStream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006388 }
6389 uint32_t packetSize_vkCmdBindIndexBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6390 countingStream->rewind();
6391 uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer;
6392 stream->write(&opcode_vkCmdBindIndexBuffer, sizeof(uint32_t));
6393 stream->write(&packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006394 uint64_t cgen_var_523;
6395 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_523, 1);
6396 stream->write((uint64_t*)&cgen_var_523, 1 * 8);
6397 uint64_t cgen_var_524;
6398 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_524, 1);
6399 stream->write((uint64_t*)&cgen_var_524, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006400 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6401 stream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006402}
6403
6404void VkEncoder::vkCmdBindVertexBuffers(
6405 VkCommandBuffer commandBuffer,
6406 uint32_t firstBinding,
6407 uint32_t bindingCount,
6408 const VkBuffer* pBuffers,
6409 const VkDeviceSize* pOffsets)
6410{
6411 auto stream = mImpl->stream();
6412 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006413 auto resources = mImpl->resources();
6414 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006415 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006416 VkCommandBuffer local_commandBuffer;
6417 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006418 uint32_t local_firstBinding;
6419 local_firstBinding = firstBinding;
6420 uint32_t local_bindingCount;
6421 local_bindingCount = bindingCount;
6422 VkBuffer* local_pBuffers;
6423 local_pBuffers = nullptr;
6424 if (pBuffers)
6425 {
6426 local_pBuffers = (VkBuffer*)pool->dupArray(pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
6427 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006428 VkDeviceSize* local_pOffsets;
6429 local_pOffsets = nullptr;
6430 if (pOffsets)
6431 {
6432 local_pOffsets = (VkDeviceSize*)pool->dupArray(pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
6433 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006434 countingStream->rewind();
6435 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006436 uint64_t cgen_var_525;
6437 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_525, 1);
6438 countingStream->write((uint64_t*)&cgen_var_525, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006439 countingStream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
6440 countingStream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006441 if (((bindingCount)))
6442 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006443 uint64_t* cgen_var_526;
6444 countingStream->alloc((void**)&cgen_var_526, ((bindingCount)) * 8);
6445 countingStream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_526, ((bindingCount)));
6446 countingStream->write((uint64_t*)cgen_var_526, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006447 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006448 countingStream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006449 }
6450 uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6451 countingStream->rewind();
6452 uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers;
6453 stream->write(&opcode_vkCmdBindVertexBuffers, sizeof(uint32_t));
6454 stream->write(&packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006455 uint64_t cgen_var_527;
6456 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_527, 1);
6457 stream->write((uint64_t*)&cgen_var_527, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006458 stream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
6459 stream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006460 if (((bindingCount)))
6461 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006462 uint64_t* cgen_var_528;
6463 stream->alloc((void**)&cgen_var_528, ((bindingCount)) * 8);
6464 stream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_528, ((bindingCount)));
6465 stream->write((uint64_t*)cgen_var_528, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006466 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006467 stream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006468}
6469
6470void VkEncoder::vkCmdDraw(
6471 VkCommandBuffer commandBuffer,
6472 uint32_t vertexCount,
6473 uint32_t instanceCount,
6474 uint32_t firstVertex,
6475 uint32_t firstInstance)
6476{
6477 auto stream = mImpl->stream();
6478 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006479 auto resources = mImpl->resources();
6480 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006481 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006482 VkCommandBuffer local_commandBuffer;
6483 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006484 uint32_t local_vertexCount;
6485 local_vertexCount = vertexCount;
6486 uint32_t local_instanceCount;
6487 local_instanceCount = instanceCount;
6488 uint32_t local_firstVertex;
6489 local_firstVertex = firstVertex;
6490 uint32_t local_firstInstance;
6491 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006492 countingStream->rewind();
6493 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006494 uint64_t cgen_var_529;
6495 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_529, 1);
6496 countingStream->write((uint64_t*)&cgen_var_529, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006497 countingStream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
6498 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6499 countingStream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
6500 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006501 }
6502 uint32_t packetSize_vkCmdDraw = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6503 countingStream->rewind();
6504 uint32_t opcode_vkCmdDraw = OP_vkCmdDraw;
6505 stream->write(&opcode_vkCmdDraw, sizeof(uint32_t));
6506 stream->write(&packetSize_vkCmdDraw, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006507 uint64_t cgen_var_530;
6508 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_530, 1);
6509 stream->write((uint64_t*)&cgen_var_530, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006510 stream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
6511 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6512 stream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
6513 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006514}
6515
6516void VkEncoder::vkCmdDrawIndexed(
6517 VkCommandBuffer commandBuffer,
6518 uint32_t indexCount,
6519 uint32_t instanceCount,
6520 uint32_t firstIndex,
6521 int32_t vertexOffset,
6522 uint32_t firstInstance)
6523{
6524 auto stream = mImpl->stream();
6525 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006526 auto resources = mImpl->resources();
6527 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006528 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006529 VkCommandBuffer local_commandBuffer;
6530 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006531 uint32_t local_indexCount;
6532 local_indexCount = indexCount;
6533 uint32_t local_instanceCount;
6534 local_instanceCount = instanceCount;
6535 uint32_t local_firstIndex;
6536 local_firstIndex = firstIndex;
6537 int32_t local_vertexOffset;
6538 local_vertexOffset = vertexOffset;
6539 uint32_t local_firstInstance;
6540 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006541 countingStream->rewind();
6542 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006543 uint64_t cgen_var_531;
6544 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_531, 1);
6545 countingStream->write((uint64_t*)&cgen_var_531, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006546 countingStream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
6547 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6548 countingStream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
6549 countingStream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
6550 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006551 }
6552 uint32_t packetSize_vkCmdDrawIndexed = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6553 countingStream->rewind();
6554 uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed;
6555 stream->write(&opcode_vkCmdDrawIndexed, sizeof(uint32_t));
6556 stream->write(&packetSize_vkCmdDrawIndexed, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006557 uint64_t cgen_var_532;
6558 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_532, 1);
6559 stream->write((uint64_t*)&cgen_var_532, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006560 stream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
6561 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6562 stream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
6563 stream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
6564 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006565}
6566
6567void VkEncoder::vkCmdDrawIndirect(
6568 VkCommandBuffer commandBuffer,
6569 VkBuffer buffer,
6570 VkDeviceSize offset,
6571 uint32_t drawCount,
6572 uint32_t stride)
6573{
6574 auto stream = mImpl->stream();
6575 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006576 auto resources = mImpl->resources();
6577 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006578 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006579 VkCommandBuffer local_commandBuffer;
6580 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006581 VkBuffer local_buffer;
6582 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006583 VkDeviceSize local_offset;
6584 local_offset = offset;
6585 uint32_t local_drawCount;
6586 local_drawCount = drawCount;
6587 uint32_t local_stride;
6588 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006589 countingStream->rewind();
6590 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006591 uint64_t cgen_var_533;
6592 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_533, 1);
6593 countingStream->write((uint64_t*)&cgen_var_533, 1 * 8);
6594 uint64_t cgen_var_534;
6595 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_534, 1);
6596 countingStream->write((uint64_t*)&cgen_var_534, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006597 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6598 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6599 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006600 }
6601 uint32_t packetSize_vkCmdDrawIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6602 countingStream->rewind();
6603 uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect;
6604 stream->write(&opcode_vkCmdDrawIndirect, sizeof(uint32_t));
6605 stream->write(&packetSize_vkCmdDrawIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006606 uint64_t cgen_var_535;
6607 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_535, 1);
6608 stream->write((uint64_t*)&cgen_var_535, 1 * 8);
6609 uint64_t cgen_var_536;
6610 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_536, 1);
6611 stream->write((uint64_t*)&cgen_var_536, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006612 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6613 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6614 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006615}
6616
6617void VkEncoder::vkCmdDrawIndexedIndirect(
6618 VkCommandBuffer commandBuffer,
6619 VkBuffer buffer,
6620 VkDeviceSize offset,
6621 uint32_t drawCount,
6622 uint32_t stride)
6623{
6624 auto stream = mImpl->stream();
6625 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006626 auto resources = mImpl->resources();
6627 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006628 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006629 VkCommandBuffer local_commandBuffer;
6630 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006631 VkBuffer local_buffer;
6632 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006633 VkDeviceSize local_offset;
6634 local_offset = offset;
6635 uint32_t local_drawCount;
6636 local_drawCount = drawCount;
6637 uint32_t local_stride;
6638 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006639 countingStream->rewind();
6640 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006641 uint64_t cgen_var_537;
6642 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_537, 1);
6643 countingStream->write((uint64_t*)&cgen_var_537, 1 * 8);
6644 uint64_t cgen_var_538;
6645 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_538, 1);
6646 countingStream->write((uint64_t*)&cgen_var_538, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006647 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6648 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6649 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006650 }
6651 uint32_t packetSize_vkCmdDrawIndexedIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6652 countingStream->rewind();
6653 uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect;
6654 stream->write(&opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
6655 stream->write(&packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006656 uint64_t cgen_var_539;
6657 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_539, 1);
6658 stream->write((uint64_t*)&cgen_var_539, 1 * 8);
6659 uint64_t cgen_var_540;
6660 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_540, 1);
6661 stream->write((uint64_t*)&cgen_var_540, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006662 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6663 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6664 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006665}
6666
6667void VkEncoder::vkCmdDispatch(
6668 VkCommandBuffer commandBuffer,
6669 uint32_t groupCountX,
6670 uint32_t groupCountY,
6671 uint32_t groupCountZ)
6672{
6673 auto stream = mImpl->stream();
6674 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006675 auto resources = mImpl->resources();
6676 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006677 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006678 VkCommandBuffer local_commandBuffer;
6679 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006680 uint32_t local_groupCountX;
6681 local_groupCountX = groupCountX;
6682 uint32_t local_groupCountY;
6683 local_groupCountY = groupCountY;
6684 uint32_t local_groupCountZ;
6685 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006686 countingStream->rewind();
6687 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006688 uint64_t cgen_var_541;
6689 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_541, 1);
6690 countingStream->write((uint64_t*)&cgen_var_541, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006691 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
6692 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
6693 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006694 }
6695 uint32_t packetSize_vkCmdDispatch = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6696 countingStream->rewind();
6697 uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch;
6698 stream->write(&opcode_vkCmdDispatch, sizeof(uint32_t));
6699 stream->write(&packetSize_vkCmdDispatch, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006700 uint64_t cgen_var_542;
6701 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_542, 1);
6702 stream->write((uint64_t*)&cgen_var_542, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006703 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
6704 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
6705 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006706}
6707
6708void VkEncoder::vkCmdDispatchIndirect(
6709 VkCommandBuffer commandBuffer,
6710 VkBuffer buffer,
6711 VkDeviceSize offset)
6712{
6713 auto stream = mImpl->stream();
6714 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006715 auto resources = mImpl->resources();
6716 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006717 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006718 VkCommandBuffer local_commandBuffer;
6719 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006720 VkBuffer local_buffer;
6721 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006722 VkDeviceSize local_offset;
6723 local_offset = offset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006724 countingStream->rewind();
6725 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006726 uint64_t cgen_var_543;
6727 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_543, 1);
6728 countingStream->write((uint64_t*)&cgen_var_543, 1 * 8);
6729 uint64_t cgen_var_544;
6730 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_544, 1);
6731 countingStream->write((uint64_t*)&cgen_var_544, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006732 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006733 }
6734 uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6735 countingStream->rewind();
6736 uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect;
6737 stream->write(&opcode_vkCmdDispatchIndirect, sizeof(uint32_t));
6738 stream->write(&packetSize_vkCmdDispatchIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006739 uint64_t cgen_var_545;
6740 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_545, 1);
6741 stream->write((uint64_t*)&cgen_var_545, 1 * 8);
6742 uint64_t cgen_var_546;
6743 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_546, 1);
6744 stream->write((uint64_t*)&cgen_var_546, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006745 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006746}
6747
6748void VkEncoder::vkCmdCopyBuffer(
6749 VkCommandBuffer commandBuffer,
6750 VkBuffer srcBuffer,
6751 VkBuffer dstBuffer,
6752 uint32_t regionCount,
6753 const VkBufferCopy* pRegions)
6754{
6755 auto stream = mImpl->stream();
6756 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006757 auto resources = mImpl->resources();
6758 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006759 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006760 VkCommandBuffer local_commandBuffer;
6761 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006762 VkBuffer local_srcBuffer;
6763 local_srcBuffer = srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006764 VkBuffer local_dstBuffer;
6765 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006766 uint32_t local_regionCount;
6767 local_regionCount = regionCount;
6768 VkBufferCopy* local_pRegions;
6769 local_pRegions = nullptr;
6770 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006771 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006772 local_pRegions = (VkBufferCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006773 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6774 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006775 deepcopy_VkBufferCopy(pool, pRegions + i, (VkBufferCopy*)(local_pRegions + i));
6776 }
6777 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006778 countingStream->rewind();
6779 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006780 uint64_t cgen_var_547;
6781 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_547, 1);
6782 countingStream->write((uint64_t*)&cgen_var_547, 1 * 8);
6783 uint64_t cgen_var_548;
6784 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_548, 1);
6785 countingStream->write((uint64_t*)&cgen_var_548, 1 * 8);
6786 uint64_t cgen_var_549;
6787 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_549, 1);
6788 countingStream->write((uint64_t*)&cgen_var_549, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006789 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6790 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6791 {
6792 marshal_VkBufferCopy(countingStream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006793 }
6794 }
6795 uint32_t packetSize_vkCmdCopyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6796 countingStream->rewind();
6797 uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer;
6798 stream->write(&opcode_vkCmdCopyBuffer, sizeof(uint32_t));
6799 stream->write(&packetSize_vkCmdCopyBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006800 uint64_t cgen_var_550;
6801 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_550, 1);
6802 stream->write((uint64_t*)&cgen_var_550, 1 * 8);
6803 uint64_t cgen_var_551;
6804 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_551, 1);
6805 stream->write((uint64_t*)&cgen_var_551, 1 * 8);
6806 uint64_t cgen_var_552;
6807 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_552, 1);
6808 stream->write((uint64_t*)&cgen_var_552, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006809 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006810 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6811 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006812 marshal_VkBufferCopy(stream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006813 }
6814}
6815
6816void VkEncoder::vkCmdCopyImage(
6817 VkCommandBuffer commandBuffer,
6818 VkImage srcImage,
6819 VkImageLayout srcImageLayout,
6820 VkImage dstImage,
6821 VkImageLayout dstImageLayout,
6822 uint32_t regionCount,
6823 const VkImageCopy* pRegions)
6824{
6825 auto stream = mImpl->stream();
6826 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006827 auto resources = mImpl->resources();
6828 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006829 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006830 VkCommandBuffer local_commandBuffer;
6831 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006832 VkImage local_srcImage;
6833 local_srcImage = srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006834 VkImageLayout local_srcImageLayout;
6835 local_srcImageLayout = srcImageLayout;
6836 VkImage local_dstImage;
6837 local_dstImage = dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006838 VkImageLayout local_dstImageLayout;
6839 local_dstImageLayout = dstImageLayout;
6840 uint32_t local_regionCount;
6841 local_regionCount = regionCount;
6842 VkImageCopy* local_pRegions;
6843 local_pRegions = nullptr;
6844 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006845 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006846 local_pRegions = (VkImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006847 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6848 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006849 deepcopy_VkImageCopy(pool, pRegions + i, (VkImageCopy*)(local_pRegions + i));
6850 }
6851 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006852 countingStream->rewind();
6853 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006854 uint64_t cgen_var_553;
6855 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_553, 1);
6856 countingStream->write((uint64_t*)&cgen_var_553, 1 * 8);
6857 uint64_t cgen_var_554;
6858 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_554, 1);
6859 countingStream->write((uint64_t*)&cgen_var_554, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006860 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006861 uint64_t cgen_var_555;
6862 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_555, 1);
6863 countingStream->write((uint64_t*)&cgen_var_555, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006864 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6865 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6866 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6867 {
6868 marshal_VkImageCopy(countingStream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006869 }
6870 }
6871 uint32_t packetSize_vkCmdCopyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6872 countingStream->rewind();
6873 uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage;
6874 stream->write(&opcode_vkCmdCopyImage, sizeof(uint32_t));
6875 stream->write(&packetSize_vkCmdCopyImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006876 uint64_t cgen_var_556;
6877 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_556, 1);
6878 stream->write((uint64_t*)&cgen_var_556, 1 * 8);
6879 uint64_t cgen_var_557;
6880 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_557, 1);
6881 stream->write((uint64_t*)&cgen_var_557, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006882 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006883 uint64_t cgen_var_558;
6884 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_558, 1);
6885 stream->write((uint64_t*)&cgen_var_558, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006886 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6887 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006888 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6889 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006890 marshal_VkImageCopy(stream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006891 }
6892}
6893
6894void VkEncoder::vkCmdBlitImage(
6895 VkCommandBuffer commandBuffer,
6896 VkImage srcImage,
6897 VkImageLayout srcImageLayout,
6898 VkImage dstImage,
6899 VkImageLayout dstImageLayout,
6900 uint32_t regionCount,
6901 const VkImageBlit* pRegions,
6902 VkFilter filter)
6903{
6904 auto stream = mImpl->stream();
6905 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006906 auto resources = mImpl->resources();
6907 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006908 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006909 VkCommandBuffer local_commandBuffer;
6910 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006911 VkImage local_srcImage;
6912 local_srcImage = srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006913 VkImageLayout local_srcImageLayout;
6914 local_srcImageLayout = srcImageLayout;
6915 VkImage local_dstImage;
6916 local_dstImage = dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006917 VkImageLayout local_dstImageLayout;
6918 local_dstImageLayout = dstImageLayout;
6919 uint32_t local_regionCount;
6920 local_regionCount = regionCount;
6921 VkImageBlit* local_pRegions;
6922 local_pRegions = nullptr;
6923 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006924 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006925 local_pRegions = (VkImageBlit*)pool->alloc(((regionCount)) * sizeof(const VkImageBlit));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006926 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6927 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006928 deepcopy_VkImageBlit(pool, pRegions + i, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006929 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006930 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006931 VkFilter local_filter;
6932 local_filter = filter;
6933 countingStream->rewind();
6934 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006935 uint64_t cgen_var_559;
6936 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_559, 1);
6937 countingStream->write((uint64_t*)&cgen_var_559, 1 * 8);
6938 uint64_t cgen_var_560;
6939 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_560, 1);
6940 countingStream->write((uint64_t*)&cgen_var_560, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006941 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006942 uint64_t cgen_var_561;
6943 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_561, 1);
6944 countingStream->write((uint64_t*)&cgen_var_561, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006945 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6946 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6947 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6948 {
6949 marshal_VkImageBlit(countingStream, (VkImageBlit*)(local_pRegions + i));
6950 }
6951 countingStream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006952 }
6953 uint32_t packetSize_vkCmdBlitImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6954 countingStream->rewind();
6955 uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage;
6956 stream->write(&opcode_vkCmdBlitImage, sizeof(uint32_t));
6957 stream->write(&packetSize_vkCmdBlitImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006958 uint64_t cgen_var_562;
6959 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_562, 1);
6960 stream->write((uint64_t*)&cgen_var_562, 1 * 8);
6961 uint64_t cgen_var_563;
6962 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_563, 1);
6963 stream->write((uint64_t*)&cgen_var_563, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006964 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006965 uint64_t cgen_var_564;
6966 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_564, 1);
6967 stream->write((uint64_t*)&cgen_var_564, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006968 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6969 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006970 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6971 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006972 marshal_VkImageBlit(stream, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006973 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006974 stream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006975}
6976
6977void VkEncoder::vkCmdCopyBufferToImage(
6978 VkCommandBuffer commandBuffer,
6979 VkBuffer srcBuffer,
6980 VkImage dstImage,
6981 VkImageLayout dstImageLayout,
6982 uint32_t regionCount,
6983 const VkBufferImageCopy* pRegions)
6984{
6985 auto stream = mImpl->stream();
6986 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006987 auto resources = mImpl->resources();
6988 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006989 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006990 VkCommandBuffer local_commandBuffer;
6991 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006992 VkBuffer local_srcBuffer;
6993 local_srcBuffer = srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006994 VkImage local_dstImage;
6995 local_dstImage = dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006996 VkImageLayout local_dstImageLayout;
6997 local_dstImageLayout = dstImageLayout;
6998 uint32_t local_regionCount;
6999 local_regionCount = regionCount;
7000 VkBufferImageCopy* local_pRegions;
7001 local_pRegions = nullptr;
7002 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007003 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007004 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007005 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7006 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007007 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7008 }
7009 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007010 countingStream->rewind();
7011 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007012 uint64_t cgen_var_565;
7013 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_565, 1);
7014 countingStream->write((uint64_t*)&cgen_var_565, 1 * 8);
7015 uint64_t cgen_var_566;
7016 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_566, 1);
7017 countingStream->write((uint64_t*)&cgen_var_566, 1 * 8);
7018 uint64_t cgen_var_567;
7019 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_567, 1);
7020 countingStream->write((uint64_t*)&cgen_var_567, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007021 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7022 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7023 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7024 {
7025 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007026 }
7027 }
7028 uint32_t packetSize_vkCmdCopyBufferToImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7029 countingStream->rewind();
7030 uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage;
7031 stream->write(&opcode_vkCmdCopyBufferToImage, sizeof(uint32_t));
7032 stream->write(&packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007033 uint64_t cgen_var_568;
7034 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_568, 1);
7035 stream->write((uint64_t*)&cgen_var_568, 1 * 8);
7036 uint64_t cgen_var_569;
7037 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_569, 1);
7038 stream->write((uint64_t*)&cgen_var_569, 1 * 8);
7039 uint64_t cgen_var_570;
7040 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_570, 1);
7041 stream->write((uint64_t*)&cgen_var_570, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007042 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7043 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007044 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7045 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007046 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007047 }
7048}
7049
7050void VkEncoder::vkCmdCopyImageToBuffer(
7051 VkCommandBuffer commandBuffer,
7052 VkImage srcImage,
7053 VkImageLayout srcImageLayout,
7054 VkBuffer dstBuffer,
7055 uint32_t regionCount,
7056 const VkBufferImageCopy* pRegions)
7057{
7058 auto stream = mImpl->stream();
7059 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007060 auto resources = mImpl->resources();
7061 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007062 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007063 VkCommandBuffer local_commandBuffer;
7064 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007065 VkImage local_srcImage;
7066 local_srcImage = srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007067 VkImageLayout local_srcImageLayout;
7068 local_srcImageLayout = srcImageLayout;
7069 VkBuffer local_dstBuffer;
7070 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007071 uint32_t local_regionCount;
7072 local_regionCount = regionCount;
7073 VkBufferImageCopy* local_pRegions;
7074 local_pRegions = nullptr;
7075 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007076 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007077 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007078 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7079 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007080 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7081 }
7082 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007083 countingStream->rewind();
7084 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007085 uint64_t cgen_var_571;
7086 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_571, 1);
7087 countingStream->write((uint64_t*)&cgen_var_571, 1 * 8);
7088 uint64_t cgen_var_572;
7089 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_572, 1);
7090 countingStream->write((uint64_t*)&cgen_var_572, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007091 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007092 uint64_t cgen_var_573;
7093 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_573, 1);
7094 countingStream->write((uint64_t*)&cgen_var_573, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007095 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7096 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7097 {
7098 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007099 }
7100 }
7101 uint32_t packetSize_vkCmdCopyImageToBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7102 countingStream->rewind();
7103 uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer;
7104 stream->write(&opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t));
7105 stream->write(&packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007106 uint64_t cgen_var_574;
7107 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_574, 1);
7108 stream->write((uint64_t*)&cgen_var_574, 1 * 8);
7109 uint64_t cgen_var_575;
7110 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_575, 1);
7111 stream->write((uint64_t*)&cgen_var_575, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007112 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007113 uint64_t cgen_var_576;
7114 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_576, 1);
7115 stream->write((uint64_t*)&cgen_var_576, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007116 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007117 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7118 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007119 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007120 }
7121}
7122
7123void VkEncoder::vkCmdUpdateBuffer(
7124 VkCommandBuffer commandBuffer,
7125 VkBuffer dstBuffer,
7126 VkDeviceSize dstOffset,
7127 VkDeviceSize dataSize,
7128 const void* pData)
7129{
7130 auto stream = mImpl->stream();
7131 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007132 auto resources = mImpl->resources();
7133 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007134 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007135 VkCommandBuffer local_commandBuffer;
7136 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007137 VkBuffer local_dstBuffer;
7138 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007139 VkDeviceSize local_dstOffset;
7140 local_dstOffset = dstOffset;
7141 VkDeviceSize local_dataSize;
7142 local_dataSize = dataSize;
7143 void* local_pData;
7144 local_pData = nullptr;
7145 if (pData)
7146 {
7147 local_pData = (void*)pool->dupArray(pData, ((dataSize)) * sizeof(const uint8_t));
7148 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007149 countingStream->rewind();
7150 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007151 uint64_t cgen_var_577;
7152 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_577, 1);
7153 countingStream->write((uint64_t*)&cgen_var_577, 1 * 8);
7154 uint64_t cgen_var_578;
7155 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_578, 1);
7156 countingStream->write((uint64_t*)&cgen_var_578, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007157 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7158 countingStream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7159 countingStream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007160 }
7161 uint32_t packetSize_vkCmdUpdateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7162 countingStream->rewind();
7163 uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer;
7164 stream->write(&opcode_vkCmdUpdateBuffer, sizeof(uint32_t));
7165 stream->write(&packetSize_vkCmdUpdateBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007166 uint64_t cgen_var_579;
7167 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_579, 1);
7168 stream->write((uint64_t*)&cgen_var_579, 1 * 8);
7169 uint64_t cgen_var_580;
7170 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_580, 1);
7171 stream->write((uint64_t*)&cgen_var_580, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007172 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7173 stream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7174 stream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007175}
7176
7177void VkEncoder::vkCmdFillBuffer(
7178 VkCommandBuffer commandBuffer,
7179 VkBuffer dstBuffer,
7180 VkDeviceSize dstOffset,
7181 VkDeviceSize size,
7182 uint32_t data)
7183{
7184 auto stream = mImpl->stream();
7185 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007186 auto resources = mImpl->resources();
7187 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007188 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007189 VkCommandBuffer local_commandBuffer;
7190 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007191 VkBuffer local_dstBuffer;
7192 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007193 VkDeviceSize local_dstOffset;
7194 local_dstOffset = dstOffset;
7195 VkDeviceSize local_size;
7196 local_size = size;
7197 uint32_t local_data;
7198 local_data = data;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007199 countingStream->rewind();
7200 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007201 uint64_t cgen_var_581;
7202 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_581, 1);
7203 countingStream->write((uint64_t*)&cgen_var_581, 1 * 8);
7204 uint64_t cgen_var_582;
7205 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_582, 1);
7206 countingStream->write((uint64_t*)&cgen_var_582, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007207 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7208 countingStream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7209 countingStream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007210 }
7211 uint32_t packetSize_vkCmdFillBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7212 countingStream->rewind();
7213 uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer;
7214 stream->write(&opcode_vkCmdFillBuffer, sizeof(uint32_t));
7215 stream->write(&packetSize_vkCmdFillBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007216 uint64_t cgen_var_583;
7217 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_583, 1);
7218 stream->write((uint64_t*)&cgen_var_583, 1 * 8);
7219 uint64_t cgen_var_584;
7220 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_584, 1);
7221 stream->write((uint64_t*)&cgen_var_584, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007222 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7223 stream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7224 stream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007225}
7226
7227void VkEncoder::vkCmdClearColorImage(
7228 VkCommandBuffer commandBuffer,
7229 VkImage image,
7230 VkImageLayout imageLayout,
7231 const VkClearColorValue* pColor,
7232 uint32_t rangeCount,
7233 const VkImageSubresourceRange* pRanges)
7234{
7235 auto stream = mImpl->stream();
7236 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007237 auto resources = mImpl->resources();
7238 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007239 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007240 VkCommandBuffer local_commandBuffer;
7241 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007242 VkImage local_image;
7243 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007244 VkImageLayout local_imageLayout;
7245 local_imageLayout = imageLayout;
7246 VkClearColorValue* local_pColor;
7247 local_pColor = nullptr;
7248 if (pColor)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007249 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007250 local_pColor = (VkClearColorValue*)pool->alloc(sizeof(const VkClearColorValue));
7251 deepcopy_VkClearColorValue(pool, pColor, (VkClearColorValue*)(local_pColor));
7252 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007253 uint32_t local_rangeCount;
7254 local_rangeCount = rangeCount;
7255 VkImageSubresourceRange* local_pRanges;
7256 local_pRanges = nullptr;
7257 if (pRanges)
7258 {
7259 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007260 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7261 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007262 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
7263 }
7264 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007265 countingStream->rewind();
7266 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007267 uint64_t cgen_var_585;
7268 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_585, 1);
7269 countingStream->write((uint64_t*)&cgen_var_585, 1 * 8);
7270 uint64_t cgen_var_586;
7271 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_586, 1);
7272 countingStream->write((uint64_t*)&cgen_var_586, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007273 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7274 marshal_VkClearColorValue(countingStream, (VkClearColorValue*)(local_pColor));
7275 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
7276 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7277 {
7278 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007279 }
7280 }
7281 uint32_t packetSize_vkCmdClearColorImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7282 countingStream->rewind();
7283 uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage;
7284 stream->write(&opcode_vkCmdClearColorImage, sizeof(uint32_t));
7285 stream->write(&packetSize_vkCmdClearColorImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007286 uint64_t cgen_var_587;
7287 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_587, 1);
7288 stream->write((uint64_t*)&cgen_var_587, 1 * 8);
7289 uint64_t cgen_var_588;
7290 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_588, 1);
7291 stream->write((uint64_t*)&cgen_var_588, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007292 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7293 marshal_VkClearColorValue(stream, (VkClearColorValue*)(local_pColor));
7294 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007295 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7296 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007297 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007298 }
7299}
7300
7301void VkEncoder::vkCmdClearDepthStencilImage(
7302 VkCommandBuffer commandBuffer,
7303 VkImage image,
7304 VkImageLayout imageLayout,
7305 const VkClearDepthStencilValue* pDepthStencil,
7306 uint32_t rangeCount,
7307 const VkImageSubresourceRange* pRanges)
7308{
7309 auto stream = mImpl->stream();
7310 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007311 auto resources = mImpl->resources();
7312 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007313 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007314 VkCommandBuffer local_commandBuffer;
7315 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007316 VkImage local_image;
7317 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007318 VkImageLayout local_imageLayout;
7319 local_imageLayout = imageLayout;
7320 VkClearDepthStencilValue* local_pDepthStencil;
7321 local_pDepthStencil = nullptr;
7322 if (pDepthStencil)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007323 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007324 local_pDepthStencil = (VkClearDepthStencilValue*)pool->alloc(sizeof(const VkClearDepthStencilValue));
7325 deepcopy_VkClearDepthStencilValue(pool, pDepthStencil, (VkClearDepthStencilValue*)(local_pDepthStencil));
7326 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007327 uint32_t local_rangeCount;
7328 local_rangeCount = rangeCount;
7329 VkImageSubresourceRange* local_pRanges;
7330 local_pRanges = nullptr;
7331 if (pRanges)
7332 {
7333 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007334 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7335 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007336 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
7337 }
7338 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007339 countingStream->rewind();
7340 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007341 uint64_t cgen_var_589;
7342 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_589, 1);
7343 countingStream->write((uint64_t*)&cgen_var_589, 1 * 8);
7344 uint64_t cgen_var_590;
7345 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_590, 1);
7346 countingStream->write((uint64_t*)&cgen_var_590, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007347 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7348 marshal_VkClearDepthStencilValue(countingStream, (VkClearDepthStencilValue*)(local_pDepthStencil));
7349 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
7350 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7351 {
7352 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007353 }
7354 }
7355 uint32_t packetSize_vkCmdClearDepthStencilImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7356 countingStream->rewind();
7357 uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage;
7358 stream->write(&opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t));
7359 stream->write(&packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007360 uint64_t cgen_var_591;
7361 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_591, 1);
7362 stream->write((uint64_t*)&cgen_var_591, 1 * 8);
7363 uint64_t cgen_var_592;
7364 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_592, 1);
7365 stream->write((uint64_t*)&cgen_var_592, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007366 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7367 marshal_VkClearDepthStencilValue(stream, (VkClearDepthStencilValue*)(local_pDepthStencil));
7368 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007369 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7370 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007371 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007372 }
7373}
7374
7375void VkEncoder::vkCmdClearAttachments(
7376 VkCommandBuffer commandBuffer,
7377 uint32_t attachmentCount,
7378 const VkClearAttachment* pAttachments,
7379 uint32_t rectCount,
7380 const VkClearRect* pRects)
7381{
7382 auto stream = mImpl->stream();
7383 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007384 auto resources = mImpl->resources();
7385 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007386 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007387 VkCommandBuffer local_commandBuffer;
7388 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007389 uint32_t local_attachmentCount;
7390 local_attachmentCount = attachmentCount;
7391 VkClearAttachment* local_pAttachments;
7392 local_pAttachments = nullptr;
7393 if (pAttachments)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007394 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007395 local_pAttachments = (VkClearAttachment*)pool->alloc(((attachmentCount)) * sizeof(const VkClearAttachment));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007396 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7397 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007398 deepcopy_VkClearAttachment(pool, pAttachments + i, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007399 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007400 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007401 uint32_t local_rectCount;
7402 local_rectCount = rectCount;
7403 VkClearRect* local_pRects;
7404 local_pRects = nullptr;
7405 if (pRects)
7406 {
7407 local_pRects = (VkClearRect*)pool->alloc(((rectCount)) * sizeof(const VkClearRect));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007408 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7409 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007410 deepcopy_VkClearRect(pool, pRects + i, (VkClearRect*)(local_pRects + i));
7411 }
7412 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007413 countingStream->rewind();
7414 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007415 uint64_t cgen_var_593;
7416 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_593, 1);
7417 countingStream->write((uint64_t*)&cgen_var_593, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007418 countingStream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
7419 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7420 {
7421 marshal_VkClearAttachment(countingStream, (VkClearAttachment*)(local_pAttachments + i));
7422 }
7423 countingStream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
7424 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7425 {
7426 marshal_VkClearRect(countingStream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007427 }
7428 }
7429 uint32_t packetSize_vkCmdClearAttachments = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7430 countingStream->rewind();
7431 uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments;
7432 stream->write(&opcode_vkCmdClearAttachments, sizeof(uint32_t));
7433 stream->write(&packetSize_vkCmdClearAttachments, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007434 uint64_t cgen_var_594;
7435 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_594, 1);
7436 stream->write((uint64_t*)&cgen_var_594, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007437 stream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007438 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7439 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007440 marshal_VkClearAttachment(stream, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007441 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007442 stream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007443 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7444 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007445 marshal_VkClearRect(stream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007446 }
7447}
7448
7449void VkEncoder::vkCmdResolveImage(
7450 VkCommandBuffer commandBuffer,
7451 VkImage srcImage,
7452 VkImageLayout srcImageLayout,
7453 VkImage dstImage,
7454 VkImageLayout dstImageLayout,
7455 uint32_t regionCount,
7456 const VkImageResolve* pRegions)
7457{
7458 auto stream = mImpl->stream();
7459 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007460 auto resources = mImpl->resources();
7461 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007462 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007463 VkCommandBuffer local_commandBuffer;
7464 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007465 VkImage local_srcImage;
7466 local_srcImage = srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007467 VkImageLayout local_srcImageLayout;
7468 local_srcImageLayout = srcImageLayout;
7469 VkImage local_dstImage;
7470 local_dstImage = dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007471 VkImageLayout local_dstImageLayout;
7472 local_dstImageLayout = dstImageLayout;
7473 uint32_t local_regionCount;
7474 local_regionCount = regionCount;
7475 VkImageResolve* local_pRegions;
7476 local_pRegions = nullptr;
7477 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007478 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007479 local_pRegions = (VkImageResolve*)pool->alloc(((regionCount)) * sizeof(const VkImageResolve));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007480 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7481 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007482 deepcopy_VkImageResolve(pool, pRegions + i, (VkImageResolve*)(local_pRegions + i));
7483 }
7484 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007485 countingStream->rewind();
7486 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007487 uint64_t cgen_var_595;
7488 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_595, 1);
7489 countingStream->write((uint64_t*)&cgen_var_595, 1 * 8);
7490 uint64_t cgen_var_596;
7491 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_596, 1);
7492 countingStream->write((uint64_t*)&cgen_var_596, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007493 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007494 uint64_t cgen_var_597;
7495 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_597, 1);
7496 countingStream->write((uint64_t*)&cgen_var_597, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007497 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7498 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7499 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7500 {
7501 marshal_VkImageResolve(countingStream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007502 }
7503 }
7504 uint32_t packetSize_vkCmdResolveImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7505 countingStream->rewind();
7506 uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage;
7507 stream->write(&opcode_vkCmdResolveImage, sizeof(uint32_t));
7508 stream->write(&packetSize_vkCmdResolveImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007509 uint64_t cgen_var_598;
7510 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_598, 1);
7511 stream->write((uint64_t*)&cgen_var_598, 1 * 8);
7512 uint64_t cgen_var_599;
7513 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_599, 1);
7514 stream->write((uint64_t*)&cgen_var_599, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007515 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007516 uint64_t cgen_var_600;
7517 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_600, 1);
7518 stream->write((uint64_t*)&cgen_var_600, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007519 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7520 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007521 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7522 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007523 marshal_VkImageResolve(stream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007524 }
7525}
7526
7527void VkEncoder::vkCmdSetEvent(
7528 VkCommandBuffer commandBuffer,
7529 VkEvent event,
7530 VkPipelineStageFlags stageMask)
7531{
7532 auto stream = mImpl->stream();
7533 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007534 auto resources = mImpl->resources();
7535 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007536 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007537 VkCommandBuffer local_commandBuffer;
7538 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007539 VkEvent local_event;
7540 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007541 VkPipelineStageFlags local_stageMask;
7542 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007543 countingStream->rewind();
7544 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007545 uint64_t cgen_var_601;
7546 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_601, 1);
7547 countingStream->write((uint64_t*)&cgen_var_601, 1 * 8);
7548 uint64_t cgen_var_602;
7549 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_602, 1);
7550 countingStream->write((uint64_t*)&cgen_var_602, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007551 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007552 }
7553 uint32_t packetSize_vkCmdSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7554 countingStream->rewind();
7555 uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent;
7556 stream->write(&opcode_vkCmdSetEvent, sizeof(uint32_t));
7557 stream->write(&packetSize_vkCmdSetEvent, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007558 uint64_t cgen_var_603;
7559 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_603, 1);
7560 stream->write((uint64_t*)&cgen_var_603, 1 * 8);
7561 uint64_t cgen_var_604;
7562 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_604, 1);
7563 stream->write((uint64_t*)&cgen_var_604, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007564 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007565}
7566
7567void VkEncoder::vkCmdResetEvent(
7568 VkCommandBuffer commandBuffer,
7569 VkEvent event,
7570 VkPipelineStageFlags stageMask)
7571{
7572 auto stream = mImpl->stream();
7573 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007574 auto resources = mImpl->resources();
7575 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007576 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007577 VkCommandBuffer local_commandBuffer;
7578 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007579 VkEvent local_event;
7580 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007581 VkPipelineStageFlags local_stageMask;
7582 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007583 countingStream->rewind();
7584 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007585 uint64_t cgen_var_605;
7586 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_605, 1);
7587 countingStream->write((uint64_t*)&cgen_var_605, 1 * 8);
7588 uint64_t cgen_var_606;
7589 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_606, 1);
7590 countingStream->write((uint64_t*)&cgen_var_606, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007591 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007592 }
7593 uint32_t packetSize_vkCmdResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7594 countingStream->rewind();
7595 uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent;
7596 stream->write(&opcode_vkCmdResetEvent, sizeof(uint32_t));
7597 stream->write(&packetSize_vkCmdResetEvent, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007598 uint64_t cgen_var_607;
7599 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_607, 1);
7600 stream->write((uint64_t*)&cgen_var_607, 1 * 8);
7601 uint64_t cgen_var_608;
7602 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_608, 1);
7603 stream->write((uint64_t*)&cgen_var_608, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007604 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007605}
7606
7607void VkEncoder::vkCmdWaitEvents(
7608 VkCommandBuffer commandBuffer,
7609 uint32_t eventCount,
7610 const VkEvent* pEvents,
7611 VkPipelineStageFlags srcStageMask,
7612 VkPipelineStageFlags dstStageMask,
7613 uint32_t memoryBarrierCount,
7614 const VkMemoryBarrier* pMemoryBarriers,
7615 uint32_t bufferMemoryBarrierCount,
7616 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
7617 uint32_t imageMemoryBarrierCount,
7618 const VkImageMemoryBarrier* pImageMemoryBarriers)
7619{
7620 auto stream = mImpl->stream();
7621 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007622 auto resources = mImpl->resources();
7623 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007624 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007625 VkCommandBuffer local_commandBuffer;
7626 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007627 uint32_t local_eventCount;
7628 local_eventCount = eventCount;
7629 VkEvent* local_pEvents;
7630 local_pEvents = nullptr;
7631 if (pEvents)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007632 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007633 local_pEvents = (VkEvent*)pool->dupArray(pEvents, ((eventCount)) * sizeof(const VkEvent));
7634 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007635 VkPipelineStageFlags local_srcStageMask;
7636 local_srcStageMask = srcStageMask;
7637 VkPipelineStageFlags local_dstStageMask;
7638 local_dstStageMask = dstStageMask;
7639 uint32_t local_memoryBarrierCount;
7640 local_memoryBarrierCount = memoryBarrierCount;
7641 VkMemoryBarrier* local_pMemoryBarriers;
7642 local_pMemoryBarriers = nullptr;
7643 if (pMemoryBarriers)
7644 {
7645 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007646 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7647 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007648 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007649 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007650 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007651 uint32_t local_bufferMemoryBarrierCount;
7652 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
7653 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
7654 local_pBufferMemoryBarriers = nullptr;
7655 if (pBufferMemoryBarriers)
7656 {
7657 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007658 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7659 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007660 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007661 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007662 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007663 uint32_t local_imageMemoryBarrierCount;
7664 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
7665 VkImageMemoryBarrier* local_pImageMemoryBarriers;
7666 local_pImageMemoryBarriers = nullptr;
7667 if (pImageMemoryBarriers)
7668 {
7669 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007670 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7671 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007672 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
7673 }
7674 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007675 countingStream->rewind();
7676 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007677 uint64_t cgen_var_609;
7678 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_609, 1);
7679 countingStream->write((uint64_t*)&cgen_var_609, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007680 countingStream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007681 if (((eventCount)))
7682 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007683 uint64_t* cgen_var_610;
7684 countingStream->alloc((void**)&cgen_var_610, ((eventCount)) * 8);
7685 countingStream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_610, ((eventCount)));
7686 countingStream->write((uint64_t*)cgen_var_610, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007687 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007688 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7689 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7690 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
7691 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7692 {
7693 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
7694 }
7695 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
7696 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7697 {
7698 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
7699 }
7700 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
7701 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7702 {
7703 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007704 }
7705 }
7706 uint32_t packetSize_vkCmdWaitEvents = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7707 countingStream->rewind();
7708 uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents;
7709 stream->write(&opcode_vkCmdWaitEvents, sizeof(uint32_t));
7710 stream->write(&packetSize_vkCmdWaitEvents, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007711 uint64_t cgen_var_611;
7712 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_611, 1);
7713 stream->write((uint64_t*)&cgen_var_611, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007714 stream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007715 if (((eventCount)))
7716 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007717 uint64_t* cgen_var_612;
7718 stream->alloc((void**)&cgen_var_612, ((eventCount)) * 8);
7719 stream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_612, ((eventCount)));
7720 stream->write((uint64_t*)cgen_var_612, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007721 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007722 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7723 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7724 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007725 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7726 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007727 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007728 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007729 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007730 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7731 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007732 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007733 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007734 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007735 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7736 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007737 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007738 }
7739}
7740
7741void VkEncoder::vkCmdPipelineBarrier(
7742 VkCommandBuffer commandBuffer,
7743 VkPipelineStageFlags srcStageMask,
7744 VkPipelineStageFlags dstStageMask,
7745 VkDependencyFlags dependencyFlags,
7746 uint32_t memoryBarrierCount,
7747 const VkMemoryBarrier* pMemoryBarriers,
7748 uint32_t bufferMemoryBarrierCount,
7749 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
7750 uint32_t imageMemoryBarrierCount,
7751 const VkImageMemoryBarrier* pImageMemoryBarriers)
7752{
7753 auto stream = mImpl->stream();
7754 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007755 auto resources = mImpl->resources();
7756 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007757 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007758 VkCommandBuffer local_commandBuffer;
7759 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007760 VkPipelineStageFlags local_srcStageMask;
7761 local_srcStageMask = srcStageMask;
7762 VkPipelineStageFlags local_dstStageMask;
7763 local_dstStageMask = dstStageMask;
7764 VkDependencyFlags local_dependencyFlags;
7765 local_dependencyFlags = dependencyFlags;
7766 uint32_t local_memoryBarrierCount;
7767 local_memoryBarrierCount = memoryBarrierCount;
7768 VkMemoryBarrier* local_pMemoryBarriers;
7769 local_pMemoryBarriers = nullptr;
7770 if (pMemoryBarriers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007771 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007772 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007773 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7774 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007775 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007776 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007777 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007778 uint32_t local_bufferMemoryBarrierCount;
7779 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
7780 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
7781 local_pBufferMemoryBarriers = nullptr;
7782 if (pBufferMemoryBarriers)
7783 {
7784 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007785 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7786 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007787 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007788 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007789 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007790 uint32_t local_imageMemoryBarrierCount;
7791 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
7792 VkImageMemoryBarrier* local_pImageMemoryBarriers;
7793 local_pImageMemoryBarriers = nullptr;
7794 if (pImageMemoryBarriers)
7795 {
7796 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007797 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7798 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007799 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
7800 }
7801 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007802 countingStream->rewind();
7803 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007804 uint64_t cgen_var_613;
7805 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_613, 1);
7806 countingStream->write((uint64_t*)&cgen_var_613, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007807 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7808 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7809 countingStream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
7810 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
7811 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7812 {
7813 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
7814 }
7815 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
7816 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7817 {
7818 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
7819 }
7820 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
7821 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7822 {
7823 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007824 }
7825 }
7826 uint32_t packetSize_vkCmdPipelineBarrier = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7827 countingStream->rewind();
7828 uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier;
7829 stream->write(&opcode_vkCmdPipelineBarrier, sizeof(uint32_t));
7830 stream->write(&packetSize_vkCmdPipelineBarrier, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007831 uint64_t cgen_var_614;
7832 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_614, 1);
7833 stream->write((uint64_t*)&cgen_var_614, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007834 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7835 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7836 stream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
7837 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007838 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7839 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007840 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007841 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007842 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007843 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7844 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007845 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007846 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007847 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007848 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7849 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007850 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007851 }
7852}
7853
7854void VkEncoder::vkCmdBeginQuery(
7855 VkCommandBuffer commandBuffer,
7856 VkQueryPool queryPool,
7857 uint32_t query,
7858 VkQueryControlFlags flags)
7859{
7860 auto stream = mImpl->stream();
7861 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007862 auto resources = mImpl->resources();
7863 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007864 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007865 VkCommandBuffer local_commandBuffer;
7866 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007867 VkQueryPool local_queryPool;
7868 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007869 uint32_t local_query;
7870 local_query = query;
7871 VkQueryControlFlags local_flags;
7872 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007873 countingStream->rewind();
7874 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007875 uint64_t cgen_var_615;
7876 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_615, 1);
7877 countingStream->write((uint64_t*)&cgen_var_615, 1 * 8);
7878 uint64_t cgen_var_616;
7879 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_616, 1);
7880 countingStream->write((uint64_t*)&cgen_var_616, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007881 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
7882 countingStream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007883 }
7884 uint32_t packetSize_vkCmdBeginQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7885 countingStream->rewind();
7886 uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery;
7887 stream->write(&opcode_vkCmdBeginQuery, sizeof(uint32_t));
7888 stream->write(&packetSize_vkCmdBeginQuery, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007889 uint64_t cgen_var_617;
7890 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_617, 1);
7891 stream->write((uint64_t*)&cgen_var_617, 1 * 8);
7892 uint64_t cgen_var_618;
7893 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_618, 1);
7894 stream->write((uint64_t*)&cgen_var_618, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007895 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
7896 stream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007897}
7898
7899void VkEncoder::vkCmdEndQuery(
7900 VkCommandBuffer commandBuffer,
7901 VkQueryPool queryPool,
7902 uint32_t query)
7903{
7904 auto stream = mImpl->stream();
7905 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007906 auto resources = mImpl->resources();
7907 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007908 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007909 VkCommandBuffer local_commandBuffer;
7910 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007911 VkQueryPool local_queryPool;
7912 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007913 uint32_t local_query;
7914 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007915 countingStream->rewind();
7916 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007917 uint64_t cgen_var_619;
7918 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_619, 1);
7919 countingStream->write((uint64_t*)&cgen_var_619, 1 * 8);
7920 uint64_t cgen_var_620;
7921 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_620, 1);
7922 countingStream->write((uint64_t*)&cgen_var_620, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007923 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007924 }
7925 uint32_t packetSize_vkCmdEndQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7926 countingStream->rewind();
7927 uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery;
7928 stream->write(&opcode_vkCmdEndQuery, sizeof(uint32_t));
7929 stream->write(&packetSize_vkCmdEndQuery, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007930 uint64_t cgen_var_621;
7931 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_621, 1);
7932 stream->write((uint64_t*)&cgen_var_621, 1 * 8);
7933 uint64_t cgen_var_622;
7934 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_622, 1);
7935 stream->write((uint64_t*)&cgen_var_622, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007936 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007937}
7938
7939void VkEncoder::vkCmdResetQueryPool(
7940 VkCommandBuffer commandBuffer,
7941 VkQueryPool queryPool,
7942 uint32_t firstQuery,
7943 uint32_t queryCount)
7944{
7945 auto stream = mImpl->stream();
7946 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007947 auto resources = mImpl->resources();
7948 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007949 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007950 VkCommandBuffer local_commandBuffer;
7951 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007952 VkQueryPool local_queryPool;
7953 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007954 uint32_t local_firstQuery;
7955 local_firstQuery = firstQuery;
7956 uint32_t local_queryCount;
7957 local_queryCount = queryCount;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007958 countingStream->rewind();
7959 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007960 uint64_t cgen_var_623;
7961 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_623, 1);
7962 countingStream->write((uint64_t*)&cgen_var_623, 1 * 8);
7963 uint64_t cgen_var_624;
7964 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_624, 1);
7965 countingStream->write((uint64_t*)&cgen_var_624, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007966 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
7967 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007968 }
7969 uint32_t packetSize_vkCmdResetQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7970 countingStream->rewind();
7971 uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool;
7972 stream->write(&opcode_vkCmdResetQueryPool, sizeof(uint32_t));
7973 stream->write(&packetSize_vkCmdResetQueryPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007974 uint64_t cgen_var_625;
7975 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_625, 1);
7976 stream->write((uint64_t*)&cgen_var_625, 1 * 8);
7977 uint64_t cgen_var_626;
7978 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_626, 1);
7979 stream->write((uint64_t*)&cgen_var_626, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007980 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
7981 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007982}
7983
7984void VkEncoder::vkCmdWriteTimestamp(
7985 VkCommandBuffer commandBuffer,
7986 VkPipelineStageFlagBits pipelineStage,
7987 VkQueryPool queryPool,
7988 uint32_t query)
7989{
7990 auto stream = mImpl->stream();
7991 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007992 auto resources = mImpl->resources();
7993 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007994 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007995 VkCommandBuffer local_commandBuffer;
7996 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007997 VkPipelineStageFlagBits local_pipelineStage;
7998 local_pipelineStage = pipelineStage;
7999 VkQueryPool local_queryPool;
8000 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008001 uint32_t local_query;
8002 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008003 countingStream->rewind();
8004 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008005 uint64_t cgen_var_627;
8006 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_627, 1);
8007 countingStream->write((uint64_t*)&cgen_var_627, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008008 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008009 uint64_t cgen_var_628;
8010 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_628, 1);
8011 countingStream->write((uint64_t*)&cgen_var_628, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008012 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008013 }
8014 uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8015 countingStream->rewind();
8016 uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp;
8017 stream->write(&opcode_vkCmdWriteTimestamp, sizeof(uint32_t));
8018 stream->write(&packetSize_vkCmdWriteTimestamp, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008019 uint64_t cgen_var_629;
8020 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_629, 1);
8021 stream->write((uint64_t*)&cgen_var_629, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008022 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008023 uint64_t cgen_var_630;
8024 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_630, 1);
8025 stream->write((uint64_t*)&cgen_var_630, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008026 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008027}
8028
8029void VkEncoder::vkCmdCopyQueryPoolResults(
8030 VkCommandBuffer commandBuffer,
8031 VkQueryPool queryPool,
8032 uint32_t firstQuery,
8033 uint32_t queryCount,
8034 VkBuffer dstBuffer,
8035 VkDeviceSize dstOffset,
8036 VkDeviceSize stride,
8037 VkQueryResultFlags flags)
8038{
8039 auto stream = mImpl->stream();
8040 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008041 auto resources = mImpl->resources();
8042 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008043 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008044 VkCommandBuffer local_commandBuffer;
8045 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008046 VkQueryPool local_queryPool;
8047 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008048 uint32_t local_firstQuery;
8049 local_firstQuery = firstQuery;
8050 uint32_t local_queryCount;
8051 local_queryCount = queryCount;
8052 VkBuffer local_dstBuffer;
8053 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008054 VkDeviceSize local_dstOffset;
8055 local_dstOffset = dstOffset;
8056 VkDeviceSize local_stride;
8057 local_stride = stride;
8058 VkQueryResultFlags local_flags;
8059 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008060 countingStream->rewind();
8061 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008062 uint64_t cgen_var_631;
8063 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_631, 1);
8064 countingStream->write((uint64_t*)&cgen_var_631, 1 * 8);
8065 uint64_t cgen_var_632;
8066 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_632, 1);
8067 countingStream->write((uint64_t*)&cgen_var_632, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008068 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8069 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008070 uint64_t cgen_var_633;
8071 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_633, 1);
8072 countingStream->write((uint64_t*)&cgen_var_633, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008073 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8074 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8075 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008076 }
8077 uint32_t packetSize_vkCmdCopyQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8078 countingStream->rewind();
8079 uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults;
8080 stream->write(&opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
8081 stream->write(&packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008082 uint64_t cgen_var_634;
8083 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_634, 1);
8084 stream->write((uint64_t*)&cgen_var_634, 1 * 8);
8085 uint64_t cgen_var_635;
8086 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_635, 1);
8087 stream->write((uint64_t*)&cgen_var_635, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008088 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8089 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008090 uint64_t cgen_var_636;
8091 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_636, 1);
8092 stream->write((uint64_t*)&cgen_var_636, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008093 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8094 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8095 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008096}
8097
8098void VkEncoder::vkCmdPushConstants(
8099 VkCommandBuffer commandBuffer,
8100 VkPipelineLayout layout,
8101 VkShaderStageFlags stageFlags,
8102 uint32_t offset,
8103 uint32_t size,
8104 const void* pValues)
8105{
8106 auto stream = mImpl->stream();
8107 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008108 auto resources = mImpl->resources();
8109 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008110 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008111 VkCommandBuffer local_commandBuffer;
8112 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008113 VkPipelineLayout local_layout;
8114 local_layout = layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008115 VkShaderStageFlags local_stageFlags;
8116 local_stageFlags = stageFlags;
8117 uint32_t local_offset;
8118 local_offset = offset;
8119 uint32_t local_size;
8120 local_size = size;
8121 void* local_pValues;
8122 local_pValues = nullptr;
8123 if (pValues)
8124 {
8125 local_pValues = (void*)pool->dupArray(pValues, ((size)) * sizeof(const uint8_t));
8126 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008127 countingStream->rewind();
8128 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008129 uint64_t cgen_var_637;
8130 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_637, 1);
8131 countingStream->write((uint64_t*)&cgen_var_637, 1 * 8);
8132 uint64_t cgen_var_638;
8133 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_638, 1);
8134 countingStream->write((uint64_t*)&cgen_var_638, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008135 countingStream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8136 countingStream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8137 countingStream->write((uint32_t*)&local_size, sizeof(uint32_t));
8138 countingStream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008139 }
8140 uint32_t packetSize_vkCmdPushConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8141 countingStream->rewind();
8142 uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants;
8143 stream->write(&opcode_vkCmdPushConstants, sizeof(uint32_t));
8144 stream->write(&packetSize_vkCmdPushConstants, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008145 uint64_t cgen_var_639;
8146 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_639, 1);
8147 stream->write((uint64_t*)&cgen_var_639, 1 * 8);
8148 uint64_t cgen_var_640;
8149 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_640, 1);
8150 stream->write((uint64_t*)&cgen_var_640, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008151 stream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8152 stream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8153 stream->write((uint32_t*)&local_size, sizeof(uint32_t));
8154 stream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008155}
8156
8157void VkEncoder::vkCmdBeginRenderPass(
8158 VkCommandBuffer commandBuffer,
8159 const VkRenderPassBeginInfo* pRenderPassBegin,
8160 VkSubpassContents contents)
8161{
8162 auto stream = mImpl->stream();
8163 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008164 auto resources = mImpl->resources();
8165 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008166 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008167 VkCommandBuffer local_commandBuffer;
8168 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008169 VkRenderPassBeginInfo* local_pRenderPassBegin;
8170 local_pRenderPassBegin = nullptr;
8171 if (pRenderPassBegin)
8172 {
8173 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
8174 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8175 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008176 VkSubpassContents local_contents;
8177 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008178 countingStream->rewind();
8179 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008180 uint64_t cgen_var_641;
8181 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_641, 1);
8182 countingStream->write((uint64_t*)&cgen_var_641, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008183 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8184 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008185 }
8186 uint32_t packetSize_vkCmdBeginRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8187 countingStream->rewind();
8188 uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass;
8189 stream->write(&opcode_vkCmdBeginRenderPass, sizeof(uint32_t));
8190 stream->write(&packetSize_vkCmdBeginRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008191 uint64_t cgen_var_642;
8192 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_642, 1);
8193 stream->write((uint64_t*)&cgen_var_642, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008194 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8195 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008196}
8197
8198void VkEncoder::vkCmdNextSubpass(
8199 VkCommandBuffer commandBuffer,
8200 VkSubpassContents contents)
8201{
8202 auto stream = mImpl->stream();
8203 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008204 auto resources = mImpl->resources();
8205 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008206 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008207 VkCommandBuffer local_commandBuffer;
8208 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008209 VkSubpassContents local_contents;
8210 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008211 countingStream->rewind();
8212 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008213 uint64_t cgen_var_643;
8214 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_643, 1);
8215 countingStream->write((uint64_t*)&cgen_var_643, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008216 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008217 }
8218 uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8219 countingStream->rewind();
8220 uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass;
8221 stream->write(&opcode_vkCmdNextSubpass, sizeof(uint32_t));
8222 stream->write(&packetSize_vkCmdNextSubpass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008223 uint64_t cgen_var_644;
8224 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_644, 1);
8225 stream->write((uint64_t*)&cgen_var_644, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008226 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008227}
8228
8229void VkEncoder::vkCmdEndRenderPass(
8230 VkCommandBuffer commandBuffer)
8231{
8232 auto stream = mImpl->stream();
8233 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008234 auto resources = mImpl->resources();
8235 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008236 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008237 VkCommandBuffer local_commandBuffer;
8238 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008239 countingStream->rewind();
8240 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008241 uint64_t cgen_var_645;
8242 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_645, 1);
8243 countingStream->write((uint64_t*)&cgen_var_645, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008244 }
8245 uint32_t packetSize_vkCmdEndRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8246 countingStream->rewind();
8247 uint32_t opcode_vkCmdEndRenderPass = OP_vkCmdEndRenderPass;
8248 stream->write(&opcode_vkCmdEndRenderPass, sizeof(uint32_t));
8249 stream->write(&packetSize_vkCmdEndRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008250 uint64_t cgen_var_646;
8251 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_646, 1);
8252 stream->write((uint64_t*)&cgen_var_646, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008253}
8254
8255void VkEncoder::vkCmdExecuteCommands(
8256 VkCommandBuffer commandBuffer,
8257 uint32_t commandBufferCount,
8258 const VkCommandBuffer* pCommandBuffers)
8259{
8260 auto stream = mImpl->stream();
8261 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008262 auto resources = mImpl->resources();
8263 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008264 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008265 VkCommandBuffer local_commandBuffer;
8266 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008267 uint32_t local_commandBufferCount;
8268 local_commandBufferCount = commandBufferCount;
8269 VkCommandBuffer* local_pCommandBuffers;
8270 local_pCommandBuffers = nullptr;
8271 if (pCommandBuffers)
8272 {
8273 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
8274 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008275 countingStream->rewind();
8276 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008277 uint64_t cgen_var_647;
8278 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_647, 1);
8279 countingStream->write((uint64_t*)&cgen_var_647, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008280 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008281 if (((commandBufferCount)))
8282 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008283 uint64_t* cgen_var_648;
8284 countingStream->alloc((void**)&cgen_var_648, ((commandBufferCount)) * 8);
8285 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_648, ((commandBufferCount)));
8286 countingStream->write((uint64_t*)cgen_var_648, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008287 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008288 }
8289 uint32_t packetSize_vkCmdExecuteCommands = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8290 countingStream->rewind();
8291 uint32_t opcode_vkCmdExecuteCommands = OP_vkCmdExecuteCommands;
8292 stream->write(&opcode_vkCmdExecuteCommands, sizeof(uint32_t));
8293 stream->write(&packetSize_vkCmdExecuteCommands, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008294 uint64_t cgen_var_649;
8295 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_649, 1);
8296 stream->write((uint64_t*)&cgen_var_649, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008297 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008298 if (((commandBufferCount)))
8299 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008300 uint64_t* cgen_var_650;
8301 stream->alloc((void**)&cgen_var_650, ((commandBufferCount)) * 8);
8302 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_650, ((commandBufferCount)));
8303 stream->write((uint64_t*)cgen_var_650, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008304 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008305}
8306
8307#endif
8308#ifdef VK_VERSION_1_1
8309VkResult VkEncoder::vkEnumerateInstanceVersion(
8310 uint32_t* pApiVersion)
8311{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008312 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008313 vkEnumerateInstanceVersion_VkResult_return = goldfish_vkEnumerateInstanceVersion(pApiVersion);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008314 return vkEnumerateInstanceVersion_VkResult_return;
8315}
8316
8317VkResult VkEncoder::vkBindBufferMemory2(
8318 VkDevice device,
8319 uint32_t bindInfoCount,
8320 const VkBindBufferMemoryInfo* pBindInfos)
8321{
8322 auto stream = mImpl->stream();
8323 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008324 auto resources = mImpl->resources();
8325 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008326 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008327 VkDevice local_device;
8328 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008329 uint32_t local_bindInfoCount;
8330 local_bindInfoCount = bindInfoCount;
8331 VkBindBufferMemoryInfo* local_pBindInfos;
8332 local_pBindInfos = nullptr;
8333 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008334 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008335 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008336 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8337 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008338 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
8339 }
8340 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008341 countingStream->rewind();
8342 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008343 uint64_t cgen_var_651;
8344 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_651, 1);
8345 countingStream->write((uint64_t*)&cgen_var_651, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008346 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
8347 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8348 {
8349 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008350 }
8351 }
8352 uint32_t packetSize_vkBindBufferMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8353 countingStream->rewind();
8354 uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2;
8355 stream->write(&opcode_vkBindBufferMemory2, sizeof(uint32_t));
8356 stream->write(&packetSize_vkBindBufferMemory2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008357 uint64_t cgen_var_652;
8358 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_652, 1);
8359 stream->write((uint64_t*)&cgen_var_652, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008360 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008361 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8362 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008363 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008364 }
8365 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
8366 stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008367 countingStream->clearPool();
8368 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008369 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008370 return vkBindBufferMemory2_VkResult_return;
8371}
8372
8373VkResult VkEncoder::vkBindImageMemory2(
8374 VkDevice device,
8375 uint32_t bindInfoCount,
8376 const VkBindImageMemoryInfo* pBindInfos)
8377{
8378 auto stream = mImpl->stream();
8379 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008380 auto resources = mImpl->resources();
8381 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008382 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008383 VkDevice local_device;
8384 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008385 uint32_t local_bindInfoCount;
8386 local_bindInfoCount = bindInfoCount;
8387 VkBindImageMemoryInfo* local_pBindInfos;
8388 local_pBindInfos = nullptr;
8389 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008390 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008391 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008392 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8393 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008394 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
8395 }
8396 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008397 countingStream->rewind();
8398 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008399 uint64_t cgen_var_653;
8400 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_653, 1);
8401 countingStream->write((uint64_t*)&cgen_var_653, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008402 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
8403 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8404 {
8405 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008406 }
8407 }
8408 uint32_t packetSize_vkBindImageMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8409 countingStream->rewind();
8410 uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2;
8411 stream->write(&opcode_vkBindImageMemory2, sizeof(uint32_t));
8412 stream->write(&packetSize_vkBindImageMemory2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008413 uint64_t cgen_var_654;
8414 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_654, 1);
8415 stream->write((uint64_t*)&cgen_var_654, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008416 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008417 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8418 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008419 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008420 }
8421 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
8422 stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008423 countingStream->clearPool();
8424 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008425 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008426 return vkBindImageMemory2_VkResult_return;
8427}
8428
8429void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures(
8430 VkDevice device,
8431 uint32_t heapIndex,
8432 uint32_t localDeviceIndex,
8433 uint32_t remoteDeviceIndex,
8434 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
8435{
8436 auto stream = mImpl->stream();
8437 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008438 auto resources = mImpl->resources();
8439 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008440 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008441 VkDevice local_device;
8442 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008443 uint32_t local_heapIndex;
8444 local_heapIndex = heapIndex;
8445 uint32_t local_localDeviceIndex;
8446 local_localDeviceIndex = localDeviceIndex;
8447 uint32_t local_remoteDeviceIndex;
8448 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008449 countingStream->rewind();
8450 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008451 uint64_t cgen_var_655;
8452 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_655, 1);
8453 countingStream->write((uint64_t*)&cgen_var_655, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008454 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
8455 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
8456 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008457 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8458 }
8459 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8460 countingStream->rewind();
8461 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures;
8462 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
8463 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008464 uint64_t cgen_var_656;
8465 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_656, 1);
8466 stream->write((uint64_t*)&cgen_var_656, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008467 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
8468 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
8469 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008470 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8471 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8472}
8473
8474void VkEncoder::vkCmdSetDeviceMask(
8475 VkCommandBuffer commandBuffer,
8476 uint32_t deviceMask)
8477{
8478 auto stream = mImpl->stream();
8479 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008480 auto resources = mImpl->resources();
8481 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008482 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008483 VkCommandBuffer local_commandBuffer;
8484 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008485 uint32_t local_deviceMask;
8486 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008487 countingStream->rewind();
8488 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008489 uint64_t cgen_var_657;
8490 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_657, 1);
8491 countingStream->write((uint64_t*)&cgen_var_657, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008492 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008493 }
8494 uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8495 countingStream->rewind();
8496 uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask;
8497 stream->write(&opcode_vkCmdSetDeviceMask, sizeof(uint32_t));
8498 stream->write(&packetSize_vkCmdSetDeviceMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008499 uint64_t cgen_var_658;
8500 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_658, 1);
8501 stream->write((uint64_t*)&cgen_var_658, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008502 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008503}
8504
8505void VkEncoder::vkCmdDispatchBase(
8506 VkCommandBuffer commandBuffer,
8507 uint32_t baseGroupX,
8508 uint32_t baseGroupY,
8509 uint32_t baseGroupZ,
8510 uint32_t groupCountX,
8511 uint32_t groupCountY,
8512 uint32_t groupCountZ)
8513{
8514 auto stream = mImpl->stream();
8515 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008516 auto resources = mImpl->resources();
8517 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008518 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008519 VkCommandBuffer local_commandBuffer;
8520 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008521 uint32_t local_baseGroupX;
8522 local_baseGroupX = baseGroupX;
8523 uint32_t local_baseGroupY;
8524 local_baseGroupY = baseGroupY;
8525 uint32_t local_baseGroupZ;
8526 local_baseGroupZ = baseGroupZ;
8527 uint32_t local_groupCountX;
8528 local_groupCountX = groupCountX;
8529 uint32_t local_groupCountY;
8530 local_groupCountY = groupCountY;
8531 uint32_t local_groupCountZ;
8532 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008533 countingStream->rewind();
8534 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008535 uint64_t cgen_var_659;
8536 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_659, 1);
8537 countingStream->write((uint64_t*)&cgen_var_659, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008538 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
8539 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
8540 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
8541 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
8542 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
8543 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008544 }
8545 uint32_t packetSize_vkCmdDispatchBase = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8546 countingStream->rewind();
8547 uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase;
8548 stream->write(&opcode_vkCmdDispatchBase, sizeof(uint32_t));
8549 stream->write(&packetSize_vkCmdDispatchBase, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008550 uint64_t cgen_var_660;
8551 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_660, 1);
8552 stream->write((uint64_t*)&cgen_var_660, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008553 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
8554 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
8555 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
8556 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
8557 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
8558 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008559}
8560
8561VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups(
8562 VkInstance instance,
8563 uint32_t* pPhysicalDeviceGroupCount,
8564 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
8565{
8566 auto stream = mImpl->stream();
8567 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008568 auto resources = mImpl->resources();
8569 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008570 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008571 VkInstance local_instance;
8572 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008573 countingStream->rewind();
8574 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008575 uint64_t cgen_var_661;
8576 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_661, 1);
8577 countingStream->write((uint64_t*)&cgen_var_661, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008578 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008579 uint64_t cgen_var_662 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
8580 countingStream->putBe64(cgen_var_662);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008581 if (pPhysicalDeviceGroupCount)
8582 {
8583 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8584 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008585 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008586 uint64_t cgen_var_663 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
8587 countingStream->putBe64(cgen_var_663);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008588 if (pPhysicalDeviceGroupProperties)
8589 {
8590 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8591 {
8592 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8593 }
8594 }
8595 }
8596 uint32_t packetSize_vkEnumeratePhysicalDeviceGroups = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8597 countingStream->rewind();
8598 uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups;
8599 stream->write(&opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
8600 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008601 uint64_t cgen_var_664;
8602 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_664, 1);
8603 stream->write((uint64_t*)&cgen_var_664, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008604 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008605 uint64_t cgen_var_665 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
8606 stream->putBe64(cgen_var_665);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008607 if (pPhysicalDeviceGroupCount)
8608 {
8609 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8610 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008611 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008612 uint64_t cgen_var_666 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
8613 stream->putBe64(cgen_var_666);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008614 if (pPhysicalDeviceGroupProperties)
8615 {
8616 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8617 {
8618 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8619 }
8620 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008621 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008622 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008623 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008624 if (pPhysicalDeviceGroupCount)
8625 {
8626 if (!(check_pPhysicalDeviceGroupCount))
8627 {
8628 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
8629 }
8630 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8631 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008632 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008633 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008634 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008635 if (pPhysicalDeviceGroupProperties)
8636 {
8637 if (!(check_pPhysicalDeviceGroupProperties))
8638 {
8639 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
8640 }
8641 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8642 {
8643 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8644 }
8645 }
8646 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
8647 stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008648 countingStream->clearPool();
8649 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008650 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008651 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
8652}
8653
8654void VkEncoder::vkGetImageMemoryRequirements2(
8655 VkDevice device,
8656 const VkImageMemoryRequirementsInfo2* pInfo,
8657 VkMemoryRequirements2* pMemoryRequirements)
8658{
8659 auto stream = mImpl->stream();
8660 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008661 auto resources = mImpl->resources();
8662 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008663 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008664 VkDevice local_device;
8665 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008666 VkImageMemoryRequirementsInfo2* local_pInfo;
8667 local_pInfo = nullptr;
8668 if (pInfo)
8669 {
8670 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
8671 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
8672 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008673 countingStream->rewind();
8674 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008675 uint64_t cgen_var_669;
8676 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_669, 1);
8677 countingStream->write((uint64_t*)&cgen_var_669, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008678 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008679 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
8680 }
8681 uint32_t packetSize_vkGetImageMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8682 countingStream->rewind();
8683 uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2;
8684 stream->write(&opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t));
8685 stream->write(&packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008686 uint64_t cgen_var_670;
8687 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_670, 1);
8688 stream->write((uint64_t*)&cgen_var_670, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008689 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008690 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8691 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8692}
8693
8694void VkEncoder::vkGetBufferMemoryRequirements2(
8695 VkDevice device,
8696 const VkBufferMemoryRequirementsInfo2* pInfo,
8697 VkMemoryRequirements2* pMemoryRequirements)
8698{
8699 auto stream = mImpl->stream();
8700 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008701 auto resources = mImpl->resources();
8702 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008703 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008704 VkDevice local_device;
8705 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008706 VkBufferMemoryRequirementsInfo2* local_pInfo;
8707 local_pInfo = nullptr;
8708 if (pInfo)
8709 {
8710 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
8711 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
8712 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008713 countingStream->rewind();
8714 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008715 uint64_t cgen_var_671;
8716 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_671, 1);
8717 countingStream->write((uint64_t*)&cgen_var_671, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008718 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008719 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
8720 }
8721 uint32_t packetSize_vkGetBufferMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8722 countingStream->rewind();
8723 uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2;
8724 stream->write(&opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
8725 stream->write(&packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008726 uint64_t cgen_var_672;
8727 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_672, 1);
8728 stream->write((uint64_t*)&cgen_var_672, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008729 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008730 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8731 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8732}
8733
8734void VkEncoder::vkGetImageSparseMemoryRequirements2(
8735 VkDevice device,
8736 const VkImageSparseMemoryRequirementsInfo2* pInfo,
8737 uint32_t* pSparseMemoryRequirementCount,
8738 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
8739{
8740 auto stream = mImpl->stream();
8741 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008742 auto resources = mImpl->resources();
8743 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008744 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008745 VkDevice local_device;
8746 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008747 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
8748 local_pInfo = nullptr;
8749 if (pInfo)
8750 {
8751 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
8752 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
8753 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008754 countingStream->rewind();
8755 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008756 uint64_t cgen_var_673;
8757 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_673, 1);
8758 countingStream->write((uint64_t*)&cgen_var_673, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008759 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008760 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008761 uint64_t cgen_var_674 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
8762 countingStream->putBe64(cgen_var_674);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008763 if (pSparseMemoryRequirementCount)
8764 {
8765 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8766 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008767 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008768 uint64_t cgen_var_675 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
8769 countingStream->putBe64(cgen_var_675);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008770 if (pSparseMemoryRequirements)
8771 {
8772 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8773 {
8774 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8775 }
8776 }
8777 }
8778 uint32_t packetSize_vkGetImageSparseMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8779 countingStream->rewind();
8780 uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2;
8781 stream->write(&opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
8782 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008783 uint64_t cgen_var_676;
8784 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_676, 1);
8785 stream->write((uint64_t*)&cgen_var_676, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008786 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008787 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008788 uint64_t cgen_var_677 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
8789 stream->putBe64(cgen_var_677);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008790 if (pSparseMemoryRequirementCount)
8791 {
8792 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8793 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008794 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008795 uint64_t cgen_var_678 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
8796 stream->putBe64(cgen_var_678);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008797 if (pSparseMemoryRequirements)
8798 {
8799 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8800 {
8801 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8802 }
8803 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008804 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008805 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008806 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008807 if (pSparseMemoryRequirementCount)
8808 {
8809 if (!(check_pSparseMemoryRequirementCount))
8810 {
8811 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
8812 }
8813 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8814 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008815 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008816 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008817 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008818 if (pSparseMemoryRequirements)
8819 {
8820 if (!(check_pSparseMemoryRequirements))
8821 {
8822 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
8823 }
8824 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8825 {
8826 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8827 }
8828 }
8829}
8830
8831void VkEncoder::vkGetPhysicalDeviceFeatures2(
8832 VkPhysicalDevice physicalDevice,
8833 VkPhysicalDeviceFeatures2* pFeatures)
8834{
8835 auto stream = mImpl->stream();
8836 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008837 auto resources = mImpl->resources();
8838 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008839 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008840 VkPhysicalDevice local_physicalDevice;
8841 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008842 countingStream->rewind();
8843 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008844 uint64_t cgen_var_681;
8845 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_681, 1);
8846 countingStream->write((uint64_t*)&cgen_var_681, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008847 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8848 }
8849 uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8850 countingStream->rewind();
8851 uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2;
8852 stream->write(&opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
8853 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008854 uint64_t cgen_var_682;
8855 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_682, 1);
8856 stream->write((uint64_t*)&cgen_var_682, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008857 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8858 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8859}
8860
8861void VkEncoder::vkGetPhysicalDeviceProperties2(
8862 VkPhysicalDevice physicalDevice,
8863 VkPhysicalDeviceProperties2* pProperties)
8864{
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008865 goldfish_vkGetPhysicalDeviceProperties2(physicalDevice, pProperties);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008866}
8867
8868void VkEncoder::vkGetPhysicalDeviceFormatProperties2(
8869 VkPhysicalDevice physicalDevice,
8870 VkFormat format,
8871 VkFormatProperties2* pFormatProperties)
8872{
8873 auto stream = mImpl->stream();
8874 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008875 auto resources = mImpl->resources();
8876 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008877 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008878 VkPhysicalDevice local_physicalDevice;
8879 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008880 VkFormat local_format;
8881 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008882 countingStream->rewind();
8883 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008884 uint64_t cgen_var_683;
8885 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_683, 1);
8886 countingStream->write((uint64_t*)&cgen_var_683, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008887 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008888 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
8889 }
8890 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8891 countingStream->rewind();
8892 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2;
8893 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
8894 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008895 uint64_t cgen_var_684;
8896 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_684, 1);
8897 stream->write((uint64_t*)&cgen_var_684, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008898 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008899 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
8900 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
8901}
8902
8903VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2(
8904 VkPhysicalDevice physicalDevice,
8905 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
8906 VkImageFormatProperties2* pImageFormatProperties)
8907{
8908 auto stream = mImpl->stream();
8909 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008910 auto resources = mImpl->resources();
8911 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008912 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008913 VkPhysicalDevice local_physicalDevice;
8914 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008915 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
8916 local_pImageFormatInfo = nullptr;
8917 if (pImageFormatInfo)
8918 {
8919 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
8920 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
8921 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008922 countingStream->rewind();
8923 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008924 uint64_t cgen_var_685;
8925 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_685, 1);
8926 countingStream->write((uint64_t*)&cgen_var_685, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008927 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008928 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
8929 }
8930 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8931 countingStream->rewind();
8932 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2;
8933 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
8934 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008935 uint64_t cgen_var_686;
8936 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_686, 1);
8937 stream->write((uint64_t*)&cgen_var_686, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008938 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008939 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
8940 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
8941 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
8942 stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008943 countingStream->clearPool();
8944 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008945 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008946 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
8947}
8948
8949void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2(
8950 VkPhysicalDevice physicalDevice,
8951 uint32_t* pQueueFamilyPropertyCount,
8952 VkQueueFamilyProperties2* pQueueFamilyProperties)
8953{
8954 auto stream = mImpl->stream();
8955 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008956 auto resources = mImpl->resources();
8957 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008958 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008959 VkPhysicalDevice local_physicalDevice;
8960 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008961 countingStream->rewind();
8962 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008963 uint64_t cgen_var_687;
8964 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_687, 1);
8965 countingStream->write((uint64_t*)&cgen_var_687, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008966 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008967 uint64_t cgen_var_688 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
8968 countingStream->putBe64(cgen_var_688);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008969 if (pQueueFamilyPropertyCount)
8970 {
8971 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
8972 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008973 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008974 uint64_t cgen_var_689 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
8975 countingStream->putBe64(cgen_var_689);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008976 if (pQueueFamilyProperties)
8977 {
8978 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
8979 {
8980 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
8981 }
8982 }
8983 }
8984 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8985 countingStream->rewind();
8986 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2;
8987 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
8988 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008989 uint64_t cgen_var_690;
8990 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_690, 1);
8991 stream->write((uint64_t*)&cgen_var_690, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008992 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008993 uint64_t cgen_var_691 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
8994 stream->putBe64(cgen_var_691);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008995 if (pQueueFamilyPropertyCount)
8996 {
8997 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
8998 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008999 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009000 uint64_t cgen_var_692 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
9001 stream->putBe64(cgen_var_692);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009002 if (pQueueFamilyProperties)
9003 {
9004 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9005 {
9006 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9007 }
9008 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009009 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009010 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009011 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009012 if (pQueueFamilyPropertyCount)
9013 {
9014 if (!(check_pQueueFamilyPropertyCount))
9015 {
9016 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
9017 }
9018 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9019 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009020 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009021 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009022 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009023 if (pQueueFamilyProperties)
9024 {
9025 if (!(check_pQueueFamilyProperties))
9026 {
9027 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
9028 }
9029 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9030 {
9031 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9032 }
9033 }
9034}
9035
9036void VkEncoder::vkGetPhysicalDeviceMemoryProperties2(
9037 VkPhysicalDevice physicalDevice,
9038 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
9039{
9040 auto stream = mImpl->stream();
9041 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009042 auto resources = mImpl->resources();
9043 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009044 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009045 VkPhysicalDevice local_physicalDevice;
9046 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009047 countingStream->rewind();
9048 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009049 uint64_t cgen_var_695;
9050 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_695, 1);
9051 countingStream->write((uint64_t*)&cgen_var_695, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009052 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9053 }
9054 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9055 countingStream->rewind();
9056 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2;
9057 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
9058 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009059 uint64_t cgen_var_696;
9060 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_696, 1);
9061 stream->write((uint64_t*)&cgen_var_696, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009062 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9063 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9064}
9065
9066void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2(
9067 VkPhysicalDevice physicalDevice,
9068 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
9069 uint32_t* pPropertyCount,
9070 VkSparseImageFormatProperties2* pProperties)
9071{
9072 auto stream = mImpl->stream();
9073 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009074 auto resources = mImpl->resources();
9075 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009076 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009077 VkPhysicalDevice local_physicalDevice;
9078 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009079 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
9080 local_pFormatInfo = nullptr;
9081 if (pFormatInfo)
9082 {
9083 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
9084 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
9085 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009086 countingStream->rewind();
9087 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009088 uint64_t cgen_var_697;
9089 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_697, 1);
9090 countingStream->write((uint64_t*)&cgen_var_697, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009091 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009092 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009093 uint64_t cgen_var_698 = (uint64_t)(uintptr_t)pPropertyCount;
9094 countingStream->putBe64(cgen_var_698);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009095 if (pPropertyCount)
9096 {
9097 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
9098 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009099 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009100 uint64_t cgen_var_699 = (uint64_t)(uintptr_t)pProperties;
9101 countingStream->putBe64(cgen_var_699);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009102 if (pProperties)
9103 {
9104 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9105 {
9106 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
9107 }
9108 }
9109 }
9110 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9111 countingStream->rewind();
9112 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2;
9113 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
9114 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009115 uint64_t cgen_var_700;
9116 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_700, 1);
9117 stream->write((uint64_t*)&cgen_var_700, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009118 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009119 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009120 uint64_t cgen_var_701 = (uint64_t)(uintptr_t)pPropertyCount;
9121 stream->putBe64(cgen_var_701);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009122 if (pPropertyCount)
9123 {
9124 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
9125 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009126 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009127 uint64_t cgen_var_702 = (uint64_t)(uintptr_t)pProperties;
9128 stream->putBe64(cgen_var_702);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009129 if (pProperties)
9130 {
9131 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9132 {
9133 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
9134 }
9135 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009136 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009137 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009138 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009139 if (pPropertyCount)
9140 {
9141 if (!(check_pPropertyCount))
9142 {
9143 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
9144 }
9145 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
9146 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009147 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009148 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009149 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009150 if (pProperties)
9151 {
9152 if (!(check_pProperties))
9153 {
9154 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
9155 }
9156 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9157 {
9158 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
9159 }
9160 }
9161}
9162
9163void VkEncoder::vkTrimCommandPool(
9164 VkDevice device,
9165 VkCommandPool commandPool,
9166 VkCommandPoolTrimFlags flags)
9167{
9168 auto stream = mImpl->stream();
9169 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009170 auto resources = mImpl->resources();
9171 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009172 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009173 VkDevice local_device;
9174 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009175 VkCommandPool local_commandPool;
9176 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009177 VkCommandPoolTrimFlags local_flags;
9178 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009179 countingStream->rewind();
9180 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009181 uint64_t cgen_var_705;
9182 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_705, 1);
9183 countingStream->write((uint64_t*)&cgen_var_705, 1 * 8);
9184 uint64_t cgen_var_706;
9185 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_706, 1);
9186 countingStream->write((uint64_t*)&cgen_var_706, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009187 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009188 }
9189 uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9190 countingStream->rewind();
9191 uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool;
9192 stream->write(&opcode_vkTrimCommandPool, sizeof(uint32_t));
9193 stream->write(&packetSize_vkTrimCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009194 uint64_t cgen_var_707;
9195 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_707, 1);
9196 stream->write((uint64_t*)&cgen_var_707, 1 * 8);
9197 uint64_t cgen_var_708;
9198 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_708, 1);
9199 stream->write((uint64_t*)&cgen_var_708, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009200 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009201}
9202
9203void VkEncoder::vkGetDeviceQueue2(
9204 VkDevice device,
9205 const VkDeviceQueueInfo2* pQueueInfo,
9206 VkQueue* pQueue)
9207{
9208 auto stream = mImpl->stream();
9209 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009210 auto resources = mImpl->resources();
9211 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009212 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009213 VkDevice local_device;
9214 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009215 VkDeviceQueueInfo2* local_pQueueInfo;
9216 local_pQueueInfo = nullptr;
9217 if (pQueueInfo)
9218 {
9219 local_pQueueInfo = (VkDeviceQueueInfo2*)pool->alloc(sizeof(const VkDeviceQueueInfo2));
9220 deepcopy_VkDeviceQueueInfo2(pool, pQueueInfo, (VkDeviceQueueInfo2*)(local_pQueueInfo));
9221 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009222 countingStream->rewind();
9223 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009224 uint64_t cgen_var_709;
9225 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_709, 1);
9226 countingStream->write((uint64_t*)&cgen_var_709, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009227 marshal_VkDeviceQueueInfo2(countingStream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009228 uint64_t cgen_var_710;
9229 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_710, 1);
9230 countingStream->write((uint64_t*)&cgen_var_710, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009231 }
9232 uint32_t packetSize_vkGetDeviceQueue2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9233 countingStream->rewind();
9234 uint32_t opcode_vkGetDeviceQueue2 = OP_vkGetDeviceQueue2;
9235 stream->write(&opcode_vkGetDeviceQueue2, sizeof(uint32_t));
9236 stream->write(&packetSize_vkGetDeviceQueue2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009237 uint64_t cgen_var_711;
9238 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_711, 1);
9239 stream->write((uint64_t*)&cgen_var_711, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009240 marshal_VkDeviceQueueInfo2(stream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08009241 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009242 uint64_t cgen_var_712;
9243 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_712, 1);
9244 stream->write((uint64_t*)&cgen_var_712, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009245 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009246 uint64_t cgen_var_713;
9247 stream->read((uint64_t*)&cgen_var_713, 8);
9248 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_713, (VkQueue*)pQueue, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009249}
9250
9251VkResult VkEncoder::vkCreateSamplerYcbcrConversion(
9252 VkDevice device,
9253 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
9254 const VkAllocationCallbacks* pAllocator,
9255 VkSamplerYcbcrConversion* pYcbcrConversion)
9256{
9257 auto stream = mImpl->stream();
9258 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009259 auto resources = mImpl->resources();
9260 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009261 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009262 VkDevice local_device;
9263 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009264 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
9265 local_pCreateInfo = nullptr;
9266 if (pCreateInfo)
9267 {
9268 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
9269 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
9270 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009271 VkAllocationCallbacks* local_pAllocator;
9272 local_pAllocator = nullptr;
9273 if (pAllocator)
9274 {
9275 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9276 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9277 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009278 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009279 countingStream->rewind();
9280 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009281 uint64_t cgen_var_714;
9282 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_714, 1);
9283 countingStream->write((uint64_t*)&cgen_var_714, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009284 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009285 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009286 uint64_t cgen_var_715 = (uint64_t)(uintptr_t)local_pAllocator;
9287 countingStream->putBe64(cgen_var_715);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009288 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009289 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009290 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009291 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009292 uint64_t cgen_var_716;
9293 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_716, 1);
9294 countingStream->write((uint64_t*)&cgen_var_716, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009295 }
9296 uint32_t packetSize_vkCreateSamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9297 countingStream->rewind();
9298 uint32_t opcode_vkCreateSamplerYcbcrConversion = OP_vkCreateSamplerYcbcrConversion;
9299 stream->write(&opcode_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
9300 stream->write(&packetSize_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009301 uint64_t cgen_var_717;
9302 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_717, 1);
9303 stream->write((uint64_t*)&cgen_var_717, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009304 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009305 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009306 uint64_t cgen_var_718 = (uint64_t)(uintptr_t)local_pAllocator;
9307 stream->putBe64(cgen_var_718);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009308 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009309 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009310 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009311 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08009312 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009313 uint64_t cgen_var_719;
9314 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_719, 1);
9315 stream->write((uint64_t*)&cgen_var_719, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009316 stream->setHandleMapping(resources->unwrapMapping());
9317 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009318 uint64_t cgen_var_720;
9319 stream->read((uint64_t*)&cgen_var_720, 8);
9320 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_720, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009321 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009322 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
9323 stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009324 countingStream->clearPool();
9325 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009326 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009327 return vkCreateSamplerYcbcrConversion_VkResult_return;
9328}
9329
9330void VkEncoder::vkDestroySamplerYcbcrConversion(
9331 VkDevice device,
9332 VkSamplerYcbcrConversion ycbcrConversion,
9333 const VkAllocationCallbacks* pAllocator)
9334{
9335 auto stream = mImpl->stream();
9336 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009337 auto resources = mImpl->resources();
9338 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009339 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009340 VkDevice local_device;
9341 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009342 VkSamplerYcbcrConversion local_ycbcrConversion;
9343 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009344 VkAllocationCallbacks* local_pAllocator;
9345 local_pAllocator = nullptr;
9346 if (pAllocator)
9347 {
9348 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9349 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9350 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009351 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009352 countingStream->rewind();
9353 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009354 uint64_t cgen_var_721;
9355 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_721, 1);
9356 countingStream->write((uint64_t*)&cgen_var_721, 1 * 8);
9357 uint64_t cgen_var_722;
9358 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_722, 1);
9359 countingStream->write((uint64_t*)&cgen_var_722, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009360 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009361 uint64_t cgen_var_723 = (uint64_t)(uintptr_t)local_pAllocator;
9362 countingStream->putBe64(cgen_var_723);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009363 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009364 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009365 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009366 }
9367 }
9368 uint32_t packetSize_vkDestroySamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9369 countingStream->rewind();
9370 uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion;
9371 stream->write(&opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
9372 stream->write(&packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009373 uint64_t cgen_var_724;
9374 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_724, 1);
9375 stream->write((uint64_t*)&cgen_var_724, 1 * 8);
9376 uint64_t cgen_var_725;
9377 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_725, 1);
9378 stream->write((uint64_t*)&cgen_var_725, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009379 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009380 uint64_t cgen_var_726 = (uint64_t)(uintptr_t)local_pAllocator;
9381 stream->putBe64(cgen_var_726);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009382 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009383 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009384 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009385 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009386 resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009387}
9388
9389VkResult VkEncoder::vkCreateDescriptorUpdateTemplate(
9390 VkDevice device,
9391 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
9392 const VkAllocationCallbacks* pAllocator,
9393 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
9394{
9395 auto stream = mImpl->stream();
9396 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009397 auto resources = mImpl->resources();
9398 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009399 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009400 VkDevice local_device;
9401 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009402 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
9403 local_pCreateInfo = nullptr;
9404 if (pCreateInfo)
9405 {
9406 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
9407 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
9408 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009409 VkAllocationCallbacks* local_pAllocator;
9410 local_pAllocator = nullptr;
9411 if (pAllocator)
9412 {
9413 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9414 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9415 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009416 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009417 countingStream->rewind();
9418 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009419 uint64_t cgen_var_727;
9420 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_727, 1);
9421 countingStream->write((uint64_t*)&cgen_var_727, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009422 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009423 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009424 uint64_t cgen_var_728 = (uint64_t)(uintptr_t)local_pAllocator;
9425 countingStream->putBe64(cgen_var_728);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009426 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009427 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009428 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009429 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009430 uint64_t cgen_var_729;
9431 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_729, 1);
9432 countingStream->write((uint64_t*)&cgen_var_729, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009433 }
9434 uint32_t packetSize_vkCreateDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9435 countingStream->rewind();
9436 uint32_t opcode_vkCreateDescriptorUpdateTemplate = OP_vkCreateDescriptorUpdateTemplate;
9437 stream->write(&opcode_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
9438 stream->write(&packetSize_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009439 uint64_t cgen_var_730;
9440 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_730, 1);
9441 stream->write((uint64_t*)&cgen_var_730, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009442 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009443 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009444 uint64_t cgen_var_731 = (uint64_t)(uintptr_t)local_pAllocator;
9445 stream->putBe64(cgen_var_731);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009446 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009447 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009448 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009449 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08009450 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009451 uint64_t cgen_var_732;
9452 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_732, 1);
9453 stream->write((uint64_t*)&cgen_var_732, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009454 stream->setHandleMapping(resources->unwrapMapping());
9455 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009456 uint64_t cgen_var_733;
9457 stream->read((uint64_t*)&cgen_var_733, 8);
9458 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_733, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009459 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009460 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
9461 stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009462 countingStream->clearPool();
9463 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009464 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009465 return vkCreateDescriptorUpdateTemplate_VkResult_return;
9466}
9467
9468void VkEncoder::vkDestroyDescriptorUpdateTemplate(
9469 VkDevice device,
9470 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
9471 const VkAllocationCallbacks* pAllocator)
9472{
9473 auto stream = mImpl->stream();
9474 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009475 auto resources = mImpl->resources();
9476 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009477 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009478 VkDevice local_device;
9479 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009480 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
9481 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009482 VkAllocationCallbacks* local_pAllocator;
9483 local_pAllocator = nullptr;
9484 if (pAllocator)
9485 {
9486 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9487 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9488 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009489 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009490 countingStream->rewind();
9491 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009492 uint64_t cgen_var_734;
9493 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_734, 1);
9494 countingStream->write((uint64_t*)&cgen_var_734, 1 * 8);
9495 uint64_t cgen_var_735;
9496 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_735, 1);
9497 countingStream->write((uint64_t*)&cgen_var_735, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009498 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009499 uint64_t cgen_var_736 = (uint64_t)(uintptr_t)local_pAllocator;
9500 countingStream->putBe64(cgen_var_736);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009501 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009502 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009503 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009504 }
9505 }
9506 uint32_t packetSize_vkDestroyDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9507 countingStream->rewind();
9508 uint32_t opcode_vkDestroyDescriptorUpdateTemplate = OP_vkDestroyDescriptorUpdateTemplate;
9509 stream->write(&opcode_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
9510 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009511 uint64_t cgen_var_737;
9512 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_737, 1);
9513 stream->write((uint64_t*)&cgen_var_737, 1 * 8);
9514 uint64_t cgen_var_738;
9515 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_738, 1);
9516 stream->write((uint64_t*)&cgen_var_738, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009517 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009518 uint64_t cgen_var_739 = (uint64_t)(uintptr_t)local_pAllocator;
9519 stream->putBe64(cgen_var_739);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009520 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009521 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009522 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009523 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009524 resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009525}
9526
9527void VkEncoder::vkUpdateDescriptorSetWithTemplate(
9528 VkDevice device,
9529 VkDescriptorSet descriptorSet,
9530 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
9531 const void* pData)
9532{
9533 auto stream = mImpl->stream();
9534 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009535 auto resources = mImpl->resources();
9536 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009537 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009538 VkDevice local_device;
9539 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009540 VkDescriptorSet local_descriptorSet;
9541 local_descriptorSet = descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009542 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
9543 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009544 void* local_pData;
9545 local_pData = nullptr;
9546 if (pData)
9547 {
9548 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
9549 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009550 countingStream->rewind();
9551 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009552 uint64_t cgen_var_740;
9553 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_740, 1);
9554 countingStream->write((uint64_t*)&cgen_var_740, 1 * 8);
9555 uint64_t cgen_var_741;
9556 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_741, 1);
9557 countingStream->write((uint64_t*)&cgen_var_741, 1 * 8);
9558 uint64_t cgen_var_742;
9559 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_742, 1);
9560 countingStream->write((uint64_t*)&cgen_var_742, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009561 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009562 uint64_t cgen_var_743 = (uint64_t)(uintptr_t)local_pData;
9563 countingStream->putBe64(cgen_var_743);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009564 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009565 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009566 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009567 }
9568 }
9569 uint32_t packetSize_vkUpdateDescriptorSetWithTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9570 countingStream->rewind();
9571 uint32_t opcode_vkUpdateDescriptorSetWithTemplate = OP_vkUpdateDescriptorSetWithTemplate;
9572 stream->write(&opcode_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
9573 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009574 uint64_t cgen_var_744;
9575 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_744, 1);
9576 stream->write((uint64_t*)&cgen_var_744, 1 * 8);
9577 uint64_t cgen_var_745;
9578 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_745, 1);
9579 stream->write((uint64_t*)&cgen_var_745, 1 * 8);
9580 uint64_t cgen_var_746;
9581 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_746, 1);
9582 stream->write((uint64_t*)&cgen_var_746, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009583 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009584 uint64_t cgen_var_747 = (uint64_t)(uintptr_t)local_pData;
9585 stream->putBe64(cgen_var_747);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009586 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009587 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009588 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009589 }
9590}
9591
9592void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties(
9593 VkPhysicalDevice physicalDevice,
9594 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
9595 VkExternalBufferProperties* pExternalBufferProperties)
9596{
9597 auto stream = mImpl->stream();
9598 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009599 auto resources = mImpl->resources();
9600 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009601 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009602 VkPhysicalDevice local_physicalDevice;
9603 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009604 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
9605 local_pExternalBufferInfo = nullptr;
9606 if (pExternalBufferInfo)
9607 {
9608 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
9609 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
9610 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009611 countingStream->rewind();
9612 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009613 uint64_t cgen_var_748;
9614 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_748, 1);
9615 countingStream->write((uint64_t*)&cgen_var_748, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009616 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009617 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9618 }
9619 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9620 countingStream->rewind();
9621 uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties;
9622 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
9623 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009624 uint64_t cgen_var_749;
9625 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_749, 1);
9626 stream->write((uint64_t*)&cgen_var_749, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009627 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009628 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9629 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9630}
9631
9632void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties(
9633 VkPhysicalDevice physicalDevice,
9634 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
9635 VkExternalFenceProperties* pExternalFenceProperties)
9636{
9637 auto stream = mImpl->stream();
9638 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009639 auto resources = mImpl->resources();
9640 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009641 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009642 VkPhysicalDevice local_physicalDevice;
9643 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009644 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
9645 local_pExternalFenceInfo = nullptr;
9646 if (pExternalFenceInfo)
9647 {
9648 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
9649 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
9650 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009651 countingStream->rewind();
9652 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009653 uint64_t cgen_var_750;
9654 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_750, 1);
9655 countingStream->write((uint64_t*)&cgen_var_750, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009656 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009657 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9658 }
9659 uint32_t packetSize_vkGetPhysicalDeviceExternalFenceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9660 countingStream->rewind();
9661 uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties;
9662 stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
9663 stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009664 uint64_t cgen_var_751;
9665 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_751, 1);
9666 stream->write((uint64_t*)&cgen_var_751, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009667 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009668 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9669 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9670}
9671
9672void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties(
9673 VkPhysicalDevice physicalDevice,
9674 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
9675 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
9676{
9677 auto stream = mImpl->stream();
9678 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009679 auto resources = mImpl->resources();
9680 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009681 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009682 VkPhysicalDevice local_physicalDevice;
9683 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009684 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
9685 local_pExternalSemaphoreInfo = nullptr;
9686 if (pExternalSemaphoreInfo)
9687 {
9688 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
9689 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
9690 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009691 countingStream->rewind();
9692 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009693 uint64_t cgen_var_752;
9694 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_752, 1);
9695 countingStream->write((uint64_t*)&cgen_var_752, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009696 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009697 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9698 }
9699 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9700 countingStream->rewind();
9701 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
9702 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
9703 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009704 uint64_t cgen_var_753;
9705 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_753, 1);
9706 stream->write((uint64_t*)&cgen_var_753, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009707 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009708 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9709 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9710}
9711
9712void VkEncoder::vkGetDescriptorSetLayoutSupport(
9713 VkDevice device,
9714 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
9715 VkDescriptorSetLayoutSupport* pSupport)
9716{
9717 auto stream = mImpl->stream();
9718 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009719 auto resources = mImpl->resources();
9720 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009721 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009722 VkDevice local_device;
9723 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009724 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
9725 local_pCreateInfo = nullptr;
9726 if (pCreateInfo)
9727 {
9728 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
9729 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
9730 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009731 countingStream->rewind();
9732 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009733 uint64_t cgen_var_754;
9734 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_754, 1);
9735 countingStream->write((uint64_t*)&cgen_var_754, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009736 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009737 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
9738 }
9739 uint32_t packetSize_vkGetDescriptorSetLayoutSupport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9740 countingStream->rewind();
9741 uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport;
9742 stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
9743 stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009744 uint64_t cgen_var_755;
9745 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_755, 1);
9746 stream->write((uint64_t*)&cgen_var_755, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009747 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009748 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
9749 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
9750}
9751
9752#endif
9753#ifdef VK_KHR_surface
9754void VkEncoder::vkDestroySurfaceKHR(
9755 VkInstance instance,
9756 VkSurfaceKHR surface,
9757 const VkAllocationCallbacks* pAllocator)
9758{
9759 auto stream = mImpl->stream();
9760 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009761 auto resources = mImpl->resources();
9762 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009763 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009764 VkInstance local_instance;
9765 local_instance = instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009766 VkSurfaceKHR local_surface;
9767 local_surface = surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009768 VkAllocationCallbacks* local_pAllocator;
9769 local_pAllocator = nullptr;
9770 if (pAllocator)
9771 {
9772 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9773 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9774 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009775 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009776 countingStream->rewind();
9777 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009778 uint64_t cgen_var_756;
9779 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_756, 1);
9780 countingStream->write((uint64_t*)&cgen_var_756, 1 * 8);
9781 uint64_t cgen_var_757;
9782 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_757, 1);
9783 countingStream->write((uint64_t*)&cgen_var_757, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009784 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009785 uint64_t cgen_var_758 = (uint64_t)(uintptr_t)local_pAllocator;
9786 countingStream->putBe64(cgen_var_758);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009787 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009788 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009789 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009790 }
9791 }
9792 uint32_t packetSize_vkDestroySurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9793 countingStream->rewind();
9794 uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR;
9795 stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t));
9796 stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009797 uint64_t cgen_var_759;
9798 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_759, 1);
9799 stream->write((uint64_t*)&cgen_var_759, 1 * 8);
9800 uint64_t cgen_var_760;
9801 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_760, 1);
9802 stream->write((uint64_t*)&cgen_var_760, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009803 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009804 uint64_t cgen_var_761 = (uint64_t)(uintptr_t)local_pAllocator;
9805 stream->putBe64(cgen_var_761);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009806 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009807 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009808 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009809 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009810 resources->destroyMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&surface);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009811}
9812
9813VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR(
9814 VkPhysicalDevice physicalDevice,
9815 uint32_t queueFamilyIndex,
9816 VkSurfaceKHR surface,
9817 VkBool32* pSupported)
9818{
9819 auto stream = mImpl->stream();
9820 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009821 auto resources = mImpl->resources();
9822 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009823 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009824 VkPhysicalDevice local_physicalDevice;
9825 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009826 uint32_t local_queueFamilyIndex;
9827 local_queueFamilyIndex = queueFamilyIndex;
9828 VkSurfaceKHR local_surface;
9829 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009830 countingStream->rewind();
9831 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009832 uint64_t cgen_var_762;
9833 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_762, 1);
9834 countingStream->write((uint64_t*)&cgen_var_762, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009835 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009836 uint64_t cgen_var_763;
9837 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_763, 1);
9838 countingStream->write((uint64_t*)&cgen_var_763, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009839 countingStream->write((VkBool32*)pSupported, sizeof(VkBool32));
9840 }
9841 uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9842 countingStream->rewind();
9843 uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
9844 stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
9845 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009846 uint64_t cgen_var_764;
9847 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_764, 1);
9848 stream->write((uint64_t*)&cgen_var_764, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009849 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009850 uint64_t cgen_var_765;
9851 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_765, 1);
9852 stream->write((uint64_t*)&cgen_var_765, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009853 stream->write((VkBool32*)pSupported, sizeof(VkBool32));
9854 stream->read((VkBool32*)pSupported, sizeof(VkBool32));
9855 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
9856 stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009857 countingStream->clearPool();
9858 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009859 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009860 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
9861}
9862
9863VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
9864 VkPhysicalDevice physicalDevice,
9865 VkSurfaceKHR surface,
9866 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
9867{
9868 auto stream = mImpl->stream();
9869 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009870 auto resources = mImpl->resources();
9871 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009872 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009873 VkPhysicalDevice local_physicalDevice;
9874 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009875 VkSurfaceKHR local_surface;
9876 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009877 countingStream->rewind();
9878 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009879 uint64_t cgen_var_766;
9880 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_766, 1);
9881 countingStream->write((uint64_t*)&cgen_var_766, 1 * 8);
9882 uint64_t cgen_var_767;
9883 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_767, 1);
9884 countingStream->write((uint64_t*)&cgen_var_767, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009885 marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9886 }
9887 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9888 countingStream->rewind();
9889 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
9890 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
9891 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009892 uint64_t cgen_var_768;
9893 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_768, 1);
9894 stream->write((uint64_t*)&cgen_var_768, 1 * 8);
9895 uint64_t cgen_var_769;
9896 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_769, 1);
9897 stream->write((uint64_t*)&cgen_var_769, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009898 marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9899 unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9900 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
9901 stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009902 countingStream->clearPool();
9903 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009904 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009905 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
9906}
9907
9908VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR(
9909 VkPhysicalDevice physicalDevice,
9910 VkSurfaceKHR surface,
9911 uint32_t* pSurfaceFormatCount,
9912 VkSurfaceFormatKHR* pSurfaceFormats)
9913{
9914 auto stream = mImpl->stream();
9915 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009916 auto resources = mImpl->resources();
9917 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009918 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009919 VkPhysicalDevice local_physicalDevice;
9920 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009921 VkSurfaceKHR local_surface;
9922 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009923 countingStream->rewind();
9924 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009925 uint64_t cgen_var_770;
9926 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_770, 1);
9927 countingStream->write((uint64_t*)&cgen_var_770, 1 * 8);
9928 uint64_t cgen_var_771;
9929 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_771, 1);
9930 countingStream->write((uint64_t*)&cgen_var_771, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009931 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009932 uint64_t cgen_var_772 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
9933 countingStream->putBe64(cgen_var_772);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009934 if (pSurfaceFormatCount)
9935 {
9936 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
9937 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009938 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009939 uint64_t cgen_var_773 = (uint64_t)(uintptr_t)pSurfaceFormats;
9940 countingStream->putBe64(cgen_var_773);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009941 if (pSurfaceFormats)
9942 {
9943 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
9944 {
9945 marshal_VkSurfaceFormatKHR(countingStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
9946 }
9947 }
9948 }
9949 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9950 countingStream->rewind();
9951 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
9952 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
9953 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009954 uint64_t cgen_var_774;
9955 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_774, 1);
9956 stream->write((uint64_t*)&cgen_var_774, 1 * 8);
9957 uint64_t cgen_var_775;
9958 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_775, 1);
9959 stream->write((uint64_t*)&cgen_var_775, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009960 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009961 uint64_t cgen_var_776 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
9962 stream->putBe64(cgen_var_776);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009963 if (pSurfaceFormatCount)
9964 {
9965 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
9966 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009967 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009968 uint64_t cgen_var_777 = (uint64_t)(uintptr_t)pSurfaceFormats;
9969 stream->putBe64(cgen_var_777);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009970 if (pSurfaceFormats)
9971 {
9972 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
9973 {
9974 marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
9975 }
9976 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009977 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009978 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009979 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009980 if (pSurfaceFormatCount)
9981 {
9982 if (!(check_pSurfaceFormatCount))
9983 {
9984 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
9985 }
9986 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
9987 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009988 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009989 VkSurfaceFormatKHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009990 check_pSurfaceFormats = (VkSurfaceFormatKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009991 if (pSurfaceFormats)
9992 {
9993 if (!(check_pSurfaceFormats))
9994 {
9995 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
9996 }
9997 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
9998 {
9999 unmarshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
10000 }
10001 }
10002 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
10003 stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010004 countingStream->clearPool();
10005 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010006 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010007 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
10008}
10009
10010VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR(
10011 VkPhysicalDevice physicalDevice,
10012 VkSurfaceKHR surface,
10013 uint32_t* pPresentModeCount,
10014 VkPresentModeKHR* pPresentModes)
10015{
10016 auto stream = mImpl->stream();
10017 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010018 auto resources = mImpl->resources();
10019 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010020 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010021 VkPhysicalDevice local_physicalDevice;
10022 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010023 VkSurfaceKHR local_surface;
10024 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010025 countingStream->rewind();
10026 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010027 uint64_t cgen_var_780;
10028 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_780, 1);
10029 countingStream->write((uint64_t*)&cgen_var_780, 1 * 8);
10030 uint64_t cgen_var_781;
10031 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_781, 1);
10032 countingStream->write((uint64_t*)&cgen_var_781, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010033 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010034 uint64_t cgen_var_782 = (uint64_t)(uintptr_t)pPresentModeCount;
10035 countingStream->putBe64(cgen_var_782);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010036 if (pPresentModeCount)
10037 {
10038 countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10039 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010040 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010041 uint64_t cgen_var_783 = (uint64_t)(uintptr_t)pPresentModes;
10042 countingStream->putBe64(cgen_var_783);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010043 if (pPresentModes)
10044 {
10045 countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10046 }
10047 }
10048 uint32_t packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10049 countingStream->rewind();
10050 uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
10051 stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
10052 stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010053 uint64_t cgen_var_784;
10054 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_784, 1);
10055 stream->write((uint64_t*)&cgen_var_784, 1 * 8);
10056 uint64_t cgen_var_785;
10057 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_785, 1);
10058 stream->write((uint64_t*)&cgen_var_785, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010059 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010060 uint64_t cgen_var_786 = (uint64_t)(uintptr_t)pPresentModeCount;
10061 stream->putBe64(cgen_var_786);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010062 if (pPresentModeCount)
10063 {
10064 stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10065 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010066 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010067 uint64_t cgen_var_787 = (uint64_t)(uintptr_t)pPresentModes;
10068 stream->putBe64(cgen_var_787);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010069 if (pPresentModes)
10070 {
10071 stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10072 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010073 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010074 uint32_t* check_pPresentModeCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010075 check_pPresentModeCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010076 if (pPresentModeCount)
10077 {
10078 if (!(check_pPresentModeCount))
10079 {
10080 fprintf(stderr, "fatal: pPresentModeCount inconsistent between guest and host\n");
10081 }
10082 stream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10083 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010084 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010085 VkPresentModeKHR* check_pPresentModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010086 check_pPresentModes = (VkPresentModeKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010087 if (pPresentModes)
10088 {
10089 if (!(check_pPresentModes))
10090 {
10091 fprintf(stderr, "fatal: pPresentModes inconsistent between guest and host\n");
10092 }
10093 stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10094 }
10095 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
10096 stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010097 countingStream->clearPool();
10098 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010099 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010100 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
10101}
10102
10103#endif
10104#ifdef VK_KHR_swapchain
10105VkResult VkEncoder::vkCreateSwapchainKHR(
10106 VkDevice device,
10107 const VkSwapchainCreateInfoKHR* pCreateInfo,
10108 const VkAllocationCallbacks* pAllocator,
10109 VkSwapchainKHR* pSwapchain)
10110{
10111 auto stream = mImpl->stream();
10112 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010113 auto resources = mImpl->resources();
10114 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010115 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010116 VkDevice local_device;
10117 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010118 VkSwapchainCreateInfoKHR* local_pCreateInfo;
10119 local_pCreateInfo = nullptr;
10120 if (pCreateInfo)
10121 {
10122 local_pCreateInfo = (VkSwapchainCreateInfoKHR*)pool->alloc(sizeof(const VkSwapchainCreateInfoKHR));
10123 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfo, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
10124 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010125 VkAllocationCallbacks* local_pAllocator;
10126 local_pAllocator = nullptr;
10127 if (pAllocator)
10128 {
10129 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10130 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10131 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010132 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010133 countingStream->rewind();
10134 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010135 uint64_t cgen_var_790;
10136 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_790, 1);
10137 countingStream->write((uint64_t*)&cgen_var_790, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010138 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010139 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010140 uint64_t cgen_var_791 = (uint64_t)(uintptr_t)local_pAllocator;
10141 countingStream->putBe64(cgen_var_791);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010142 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010143 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010144 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010145 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010146 uint64_t cgen_var_792;
10147 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_792, 1);
10148 countingStream->write((uint64_t*)&cgen_var_792, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010149 }
10150 uint32_t packetSize_vkCreateSwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10151 countingStream->rewind();
10152 uint32_t opcode_vkCreateSwapchainKHR = OP_vkCreateSwapchainKHR;
10153 stream->write(&opcode_vkCreateSwapchainKHR, sizeof(uint32_t));
10154 stream->write(&packetSize_vkCreateSwapchainKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010155 uint64_t cgen_var_793;
10156 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_793, 1);
10157 stream->write((uint64_t*)&cgen_var_793, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010158 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010159 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010160 uint64_t cgen_var_794 = (uint64_t)(uintptr_t)local_pAllocator;
10161 stream->putBe64(cgen_var_794);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010162 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010163 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010164 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010165 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010166 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010167 uint64_t cgen_var_795;
10168 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_795, 1);
10169 stream->write((uint64_t*)&cgen_var_795, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010170 stream->setHandleMapping(resources->unwrapMapping());
10171 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010172 uint64_t cgen_var_796;
10173 stream->read((uint64_t*)&cgen_var_796, 8);
10174 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_796, (VkSwapchainKHR*)pSwapchain, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010175 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010176 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
10177 stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010178 countingStream->clearPool();
10179 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010180 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010181 return vkCreateSwapchainKHR_VkResult_return;
10182}
10183
10184void VkEncoder::vkDestroySwapchainKHR(
10185 VkDevice device,
10186 VkSwapchainKHR swapchain,
10187 const VkAllocationCallbacks* pAllocator)
10188{
10189 auto stream = mImpl->stream();
10190 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010191 auto resources = mImpl->resources();
10192 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010193 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010194 VkDevice local_device;
10195 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010196 VkSwapchainKHR local_swapchain;
10197 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010198 VkAllocationCallbacks* local_pAllocator;
10199 local_pAllocator = nullptr;
10200 if (pAllocator)
10201 {
10202 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10203 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10204 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010205 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010206 countingStream->rewind();
10207 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010208 uint64_t cgen_var_797;
10209 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_797, 1);
10210 countingStream->write((uint64_t*)&cgen_var_797, 1 * 8);
10211 uint64_t cgen_var_798;
10212 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_798, 1);
10213 countingStream->write((uint64_t*)&cgen_var_798, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010214 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010215 uint64_t cgen_var_799 = (uint64_t)(uintptr_t)local_pAllocator;
10216 countingStream->putBe64(cgen_var_799);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010217 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010218 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010219 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010220 }
10221 }
10222 uint32_t packetSize_vkDestroySwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10223 countingStream->rewind();
10224 uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR;
10225 stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t));
10226 stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010227 uint64_t cgen_var_800;
10228 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_800, 1);
10229 stream->write((uint64_t*)&cgen_var_800, 1 * 8);
10230 uint64_t cgen_var_801;
10231 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_801, 1);
10232 stream->write((uint64_t*)&cgen_var_801, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010233 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010234 uint64_t cgen_var_802 = (uint64_t)(uintptr_t)local_pAllocator;
10235 stream->putBe64(cgen_var_802);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010236 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010237 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010238 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010239 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010240 resources->destroyMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&swapchain);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010241}
10242
10243VkResult VkEncoder::vkGetSwapchainImagesKHR(
10244 VkDevice device,
10245 VkSwapchainKHR swapchain,
10246 uint32_t* pSwapchainImageCount,
10247 VkImage* pSwapchainImages)
10248{
10249 auto stream = mImpl->stream();
10250 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010251 auto resources = mImpl->resources();
10252 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010253 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010254 VkDevice local_device;
10255 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010256 VkSwapchainKHR local_swapchain;
10257 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010258 countingStream->rewind();
10259 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010260 uint64_t cgen_var_803;
10261 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_803, 1);
10262 countingStream->write((uint64_t*)&cgen_var_803, 1 * 8);
10263 uint64_t cgen_var_804;
10264 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_804, 1);
10265 countingStream->write((uint64_t*)&cgen_var_804, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010266 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010267 uint64_t cgen_var_805 = (uint64_t)(uintptr_t)pSwapchainImageCount;
10268 countingStream->putBe64(cgen_var_805);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010269 if (pSwapchainImageCount)
10270 {
10271 countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10272 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010273 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010274 uint64_t cgen_var_806 = (uint64_t)(uintptr_t)pSwapchainImages;
10275 countingStream->putBe64(cgen_var_806);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010276 if (pSwapchainImages)
10277 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010278 if ((*(pSwapchainImageCount)))
10279 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010280 uint64_t* cgen_var_807;
10281 countingStream->alloc((void**)&cgen_var_807, (*(pSwapchainImageCount)) * 8);
10282 countingStream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_807, (*(pSwapchainImageCount)));
10283 countingStream->write((uint64_t*)cgen_var_807, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010284 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010285 }
10286 }
10287 uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10288 countingStream->rewind();
10289 uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR;
10290 stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t));
10291 stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010292 uint64_t cgen_var_808;
10293 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_808, 1);
10294 stream->write((uint64_t*)&cgen_var_808, 1 * 8);
10295 uint64_t cgen_var_809;
10296 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_809, 1);
10297 stream->write((uint64_t*)&cgen_var_809, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010298 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010299 uint64_t cgen_var_810 = (uint64_t)(uintptr_t)pSwapchainImageCount;
10300 stream->putBe64(cgen_var_810);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010301 if (pSwapchainImageCount)
10302 {
10303 stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10304 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010305 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010306 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010307 uint64_t cgen_var_811 = (uint64_t)(uintptr_t)pSwapchainImages;
10308 stream->putBe64(cgen_var_811);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010309 if (pSwapchainImages)
10310 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010311 if ((*(pSwapchainImageCount)))
10312 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010313 uint64_t* cgen_var_812;
10314 stream->alloc((void**)&cgen_var_812, (*(pSwapchainImageCount)) * 8);
10315 stream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_812, (*(pSwapchainImageCount)));
10316 stream->write((uint64_t*)cgen_var_812, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010317 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010318 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010319 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010320 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010321 uint32_t* check_pSwapchainImageCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010322 check_pSwapchainImageCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010323 if (pSwapchainImageCount)
10324 {
10325 if (!(check_pSwapchainImageCount))
10326 {
10327 fprintf(stderr, "fatal: pSwapchainImageCount inconsistent between guest and host\n");
10328 }
10329 stream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10330 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010331 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010332 VkImage* check_pSwapchainImages;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010333 check_pSwapchainImages = (VkImage*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010334 if (pSwapchainImages)
10335 {
10336 if (!(check_pSwapchainImages))
10337 {
10338 fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n");
10339 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080010340 if ((*(pSwapchainImageCount)))
10341 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010342 uint64_t* cgen_var_815;
10343 stream->alloc((void**)&cgen_var_815, (*(pSwapchainImageCount)) * 8);
10344 stream->read((uint64_t*)cgen_var_815, (*(pSwapchainImageCount)) * 8);
10345 stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_815, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010346 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010347 }
10348 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
10349 stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010350 countingStream->clearPool();
10351 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010352 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010353 return vkGetSwapchainImagesKHR_VkResult_return;
10354}
10355
10356VkResult VkEncoder::vkAcquireNextImageKHR(
10357 VkDevice device,
10358 VkSwapchainKHR swapchain,
10359 uint64_t timeout,
10360 VkSemaphore semaphore,
10361 VkFence fence,
10362 uint32_t* pImageIndex)
10363{
10364 auto stream = mImpl->stream();
10365 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010366 auto resources = mImpl->resources();
10367 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010368 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010369 VkDevice local_device;
10370 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010371 VkSwapchainKHR local_swapchain;
10372 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010373 uint64_t local_timeout;
10374 local_timeout = timeout;
10375 VkSemaphore local_semaphore;
10376 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010377 VkFence local_fence;
10378 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010379 countingStream->rewind();
10380 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010381 uint64_t cgen_var_816;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010382 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_816, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010383 countingStream->write((uint64_t*)&cgen_var_816, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010384 uint64_t cgen_var_817;
10385 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_817, 1);
10386 countingStream->write((uint64_t*)&cgen_var_817, 1 * 8);
10387 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
10388 uint64_t cgen_var_818;
10389 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_818, 1);
10390 countingStream->write((uint64_t*)&cgen_var_818, 1 * 8);
10391 uint64_t cgen_var_819;
10392 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_819, 1);
10393 countingStream->write((uint64_t*)&cgen_var_819, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010394 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10395 }
10396 uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10397 countingStream->rewind();
10398 uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR;
10399 stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t));
10400 stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010401 uint64_t cgen_var_820;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010402 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_820, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010403 stream->write((uint64_t*)&cgen_var_820, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010404 uint64_t cgen_var_821;
10405 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_821, 1);
10406 stream->write((uint64_t*)&cgen_var_821, 1 * 8);
10407 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
10408 uint64_t cgen_var_822;
10409 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_822, 1);
10410 stream->write((uint64_t*)&cgen_var_822, 1 * 8);
10411 uint64_t cgen_var_823;
10412 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_823, 1);
10413 stream->write((uint64_t*)&cgen_var_823, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010414 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10415 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
10416 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
10417 stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010418 countingStream->clearPool();
10419 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010420 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010421 return vkAcquireNextImageKHR_VkResult_return;
10422}
10423
10424VkResult VkEncoder::vkQueuePresentKHR(
10425 VkQueue queue,
10426 const VkPresentInfoKHR* pPresentInfo)
10427{
10428 auto stream = mImpl->stream();
10429 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010430 auto resources = mImpl->resources();
10431 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010432 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010433 VkQueue local_queue;
10434 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010435 VkPresentInfoKHR* local_pPresentInfo;
10436 local_pPresentInfo = nullptr;
10437 if (pPresentInfo)
10438 {
10439 local_pPresentInfo = (VkPresentInfoKHR*)pool->alloc(sizeof(const VkPresentInfoKHR));
10440 deepcopy_VkPresentInfoKHR(pool, pPresentInfo, (VkPresentInfoKHR*)(local_pPresentInfo));
10441 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010442 countingStream->rewind();
10443 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010444 uint64_t cgen_var_824;
10445 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_824, 1);
10446 countingStream->write((uint64_t*)&cgen_var_824, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010447 marshal_VkPresentInfoKHR(countingStream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010448 }
10449 uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10450 countingStream->rewind();
10451 uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR;
10452 stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t));
10453 stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010454 uint64_t cgen_var_825;
10455 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_825, 1);
10456 stream->write((uint64_t*)&cgen_var_825, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010457 marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010458 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
10459 stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010460 countingStream->clearPool();
10461 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010462 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010463 return vkQueuePresentKHR_VkResult_return;
10464}
10465
10466VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR(
10467 VkDevice device,
10468 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
10469{
10470 auto stream = mImpl->stream();
10471 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010472 auto resources = mImpl->resources();
10473 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010474 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010475 VkDevice local_device;
10476 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010477 countingStream->rewind();
10478 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010479 uint64_t cgen_var_826;
10480 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_826, 1);
10481 countingStream->write((uint64_t*)&cgen_var_826, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010482 marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10483 }
10484 uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10485 countingStream->rewind();
10486 uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
10487 stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
10488 stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010489 uint64_t cgen_var_827;
10490 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_827, 1);
10491 stream->write((uint64_t*)&cgen_var_827, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010492 marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10493 unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10494 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
10495 stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010496 countingStream->clearPool();
10497 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010498 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010499 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
10500}
10501
10502VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR(
10503 VkDevice device,
10504 VkSurfaceKHR surface,
10505 VkDeviceGroupPresentModeFlagsKHR* pModes)
10506{
10507 auto stream = mImpl->stream();
10508 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010509 auto resources = mImpl->resources();
10510 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010511 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010512 VkDevice local_device;
10513 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010514 VkSurfaceKHR local_surface;
10515 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010516 countingStream->rewind();
10517 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010518 uint64_t cgen_var_828;
10519 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_828, 1);
10520 countingStream->write((uint64_t*)&cgen_var_828, 1 * 8);
10521 uint64_t cgen_var_829;
10522 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_829, 1);
10523 countingStream->write((uint64_t*)&cgen_var_829, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010524 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010525 uint64_t cgen_var_830 = (uint64_t)(uintptr_t)pModes;
10526 countingStream->putBe64(cgen_var_830);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010527 if (pModes)
10528 {
10529 countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10530 }
10531 }
10532 uint32_t packetSize_vkGetDeviceGroupSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10533 countingStream->rewind();
10534 uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR;
10535 stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
10536 stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010537 uint64_t cgen_var_831;
10538 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_831, 1);
10539 stream->write((uint64_t*)&cgen_var_831, 1 * 8);
10540 uint64_t cgen_var_832;
10541 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_832, 1);
10542 stream->write((uint64_t*)&cgen_var_832, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010543 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010544 uint64_t cgen_var_833 = (uint64_t)(uintptr_t)pModes;
10545 stream->putBe64(cgen_var_833);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010546 if (pModes)
10547 {
10548 stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10549 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010550 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010551 VkDeviceGroupPresentModeFlagsKHR* check_pModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010552 check_pModes = (VkDeviceGroupPresentModeFlagsKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010553 if (pModes)
10554 {
10555 if (!(check_pModes))
10556 {
10557 fprintf(stderr, "fatal: pModes inconsistent between guest and host\n");
10558 }
10559 stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10560 }
10561 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
10562 stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010563 countingStream->clearPool();
10564 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010565 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010566 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
10567}
10568
10569VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR(
10570 VkPhysicalDevice physicalDevice,
10571 VkSurfaceKHR surface,
10572 uint32_t* pRectCount,
10573 VkRect2D* pRects)
10574{
10575 auto stream = mImpl->stream();
10576 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010577 auto resources = mImpl->resources();
10578 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010579 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010580 VkPhysicalDevice local_physicalDevice;
10581 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010582 VkSurfaceKHR local_surface;
10583 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010584 countingStream->rewind();
10585 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010586 uint64_t cgen_var_835;
10587 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_835, 1);
10588 countingStream->write((uint64_t*)&cgen_var_835, 1 * 8);
10589 uint64_t cgen_var_836;
10590 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_836, 1);
10591 countingStream->write((uint64_t*)&cgen_var_836, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010592 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010593 uint64_t cgen_var_837 = (uint64_t)(uintptr_t)pRectCount;
10594 countingStream->putBe64(cgen_var_837);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010595 if (pRectCount)
10596 {
10597 countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
10598 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010599 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010600 uint64_t cgen_var_838 = (uint64_t)(uintptr_t)pRects;
10601 countingStream->putBe64(cgen_var_838);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010602 if (pRects)
10603 {
10604 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10605 {
10606 marshal_VkRect2D(countingStream, (VkRect2D*)(pRects + i));
10607 }
10608 }
10609 }
10610 uint32_t packetSize_vkGetPhysicalDevicePresentRectanglesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10611 countingStream->rewind();
10612 uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR;
10613 stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
10614 stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010615 uint64_t cgen_var_839;
10616 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_839, 1);
10617 stream->write((uint64_t*)&cgen_var_839, 1 * 8);
10618 uint64_t cgen_var_840;
10619 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_840, 1);
10620 stream->write((uint64_t*)&cgen_var_840, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010621 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010622 uint64_t cgen_var_841 = (uint64_t)(uintptr_t)pRectCount;
10623 stream->putBe64(cgen_var_841);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010624 if (pRectCount)
10625 {
10626 stream->write((uint32_t*)pRectCount, sizeof(uint32_t));
10627 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010628 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010629 uint64_t cgen_var_842 = (uint64_t)(uintptr_t)pRects;
10630 stream->putBe64(cgen_var_842);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010631 if (pRects)
10632 {
10633 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10634 {
10635 marshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
10636 }
10637 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010638 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010639 uint32_t* check_pRectCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010640 check_pRectCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010641 if (pRectCount)
10642 {
10643 if (!(check_pRectCount))
10644 {
10645 fprintf(stderr, "fatal: pRectCount inconsistent between guest and host\n");
10646 }
10647 stream->read((uint32_t*)pRectCount, sizeof(uint32_t));
10648 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010649 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010650 VkRect2D* check_pRects;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010651 check_pRects = (VkRect2D*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010652 if (pRects)
10653 {
10654 if (!(check_pRects))
10655 {
10656 fprintf(stderr, "fatal: pRects inconsistent between guest and host\n");
10657 }
10658 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10659 {
10660 unmarshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
10661 }
10662 }
10663 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
10664 stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010665 countingStream->clearPool();
10666 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010667 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010668 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
10669}
10670
10671VkResult VkEncoder::vkAcquireNextImage2KHR(
10672 VkDevice device,
10673 const VkAcquireNextImageInfoKHR* pAcquireInfo,
10674 uint32_t* pImageIndex)
10675{
10676 auto stream = mImpl->stream();
10677 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010678 auto resources = mImpl->resources();
10679 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010680 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010681 VkDevice local_device;
10682 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010683 VkAcquireNextImageInfoKHR* local_pAcquireInfo;
10684 local_pAcquireInfo = nullptr;
10685 if (pAcquireInfo)
10686 {
10687 local_pAcquireInfo = (VkAcquireNextImageInfoKHR*)pool->alloc(sizeof(const VkAcquireNextImageInfoKHR));
10688 deepcopy_VkAcquireNextImageInfoKHR(pool, pAcquireInfo, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
10689 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010690 countingStream->rewind();
10691 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010692 uint64_t cgen_var_845;
10693 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_845, 1);
10694 countingStream->write((uint64_t*)&cgen_var_845, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010695 marshal_VkAcquireNextImageInfoKHR(countingStream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010696 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10697 }
10698 uint32_t packetSize_vkAcquireNextImage2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10699 countingStream->rewind();
10700 uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR;
10701 stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t));
10702 stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010703 uint64_t cgen_var_846;
10704 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_846, 1);
10705 stream->write((uint64_t*)&cgen_var_846, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010706 marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010707 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10708 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
10709 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
10710 stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010711 countingStream->clearPool();
10712 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010713 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010714 return vkAcquireNextImage2KHR_VkResult_return;
10715}
10716
10717#endif
10718#ifdef VK_KHR_display
10719VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR(
10720 VkPhysicalDevice physicalDevice,
10721 uint32_t* pPropertyCount,
10722 VkDisplayPropertiesKHR* pProperties)
10723{
10724 auto stream = mImpl->stream();
10725 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010726 auto resources = mImpl->resources();
10727 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010728 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010729 VkPhysicalDevice local_physicalDevice;
10730 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010731 countingStream->rewind();
10732 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010733 uint64_t cgen_var_847;
10734 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_847, 1);
10735 countingStream->write((uint64_t*)&cgen_var_847, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010736 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010737 uint64_t cgen_var_848 = (uint64_t)(uintptr_t)pPropertyCount;
10738 countingStream->putBe64(cgen_var_848);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010739 if (pPropertyCount)
10740 {
10741 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10742 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010743 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010744 uint64_t cgen_var_849 = (uint64_t)(uintptr_t)pProperties;
10745 countingStream->putBe64(cgen_var_849);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010746 if (pProperties)
10747 {
10748 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10749 {
10750 marshal_VkDisplayPropertiesKHR(countingStream, (VkDisplayPropertiesKHR*)(pProperties + i));
10751 }
10752 }
10753 }
10754 uint32_t packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10755 countingStream->rewind();
10756 uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
10757 stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
10758 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010759 uint64_t cgen_var_850;
10760 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_850, 1);
10761 stream->write((uint64_t*)&cgen_var_850, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010762 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010763 uint64_t cgen_var_851 = (uint64_t)(uintptr_t)pPropertyCount;
10764 stream->putBe64(cgen_var_851);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010765 if (pPropertyCount)
10766 {
10767 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10768 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010769 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010770 uint64_t cgen_var_852 = (uint64_t)(uintptr_t)pProperties;
10771 stream->putBe64(cgen_var_852);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010772 if (pProperties)
10773 {
10774 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10775 {
10776 marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
10777 }
10778 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010779 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010780 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010781 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010782 if (pPropertyCount)
10783 {
10784 if (!(check_pPropertyCount))
10785 {
10786 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10787 }
10788 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10789 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010790 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010791 VkDisplayPropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010792 check_pProperties = (VkDisplayPropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010793 if (pProperties)
10794 {
10795 if (!(check_pProperties))
10796 {
10797 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10798 }
10799 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10800 {
10801 unmarshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
10802 }
10803 }
10804 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
10805 stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010806 countingStream->clearPool();
10807 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010808 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010809 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
10810}
10811
10812VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
10813 VkPhysicalDevice physicalDevice,
10814 uint32_t* pPropertyCount,
10815 VkDisplayPlanePropertiesKHR* pProperties)
10816{
10817 auto stream = mImpl->stream();
10818 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010819 auto resources = mImpl->resources();
10820 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010821 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010822 VkPhysicalDevice local_physicalDevice;
10823 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010824 countingStream->rewind();
10825 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010826 uint64_t cgen_var_855;
10827 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_855, 1);
10828 countingStream->write((uint64_t*)&cgen_var_855, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010829 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010830 uint64_t cgen_var_856 = (uint64_t)(uintptr_t)pPropertyCount;
10831 countingStream->putBe64(cgen_var_856);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010832 if (pPropertyCount)
10833 {
10834 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10835 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010836 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010837 uint64_t cgen_var_857 = (uint64_t)(uintptr_t)pProperties;
10838 countingStream->putBe64(cgen_var_857);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010839 if (pProperties)
10840 {
10841 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10842 {
10843 marshal_VkDisplayPlanePropertiesKHR(countingStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10844 }
10845 }
10846 }
10847 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10848 countingStream->rewind();
10849 uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
10850 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
10851 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010852 uint64_t cgen_var_858;
10853 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_858, 1);
10854 stream->write((uint64_t*)&cgen_var_858, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010855 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010856 uint64_t cgen_var_859 = (uint64_t)(uintptr_t)pPropertyCount;
10857 stream->putBe64(cgen_var_859);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010858 if (pPropertyCount)
10859 {
10860 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10861 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010862 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010863 uint64_t cgen_var_860 = (uint64_t)(uintptr_t)pProperties;
10864 stream->putBe64(cgen_var_860);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010865 if (pProperties)
10866 {
10867 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10868 {
10869 marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10870 }
10871 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010872 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010873 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010874 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010875 if (pPropertyCount)
10876 {
10877 if (!(check_pPropertyCount))
10878 {
10879 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10880 }
10881 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10882 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010883 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010884 VkDisplayPlanePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010885 check_pProperties = (VkDisplayPlanePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010886 if (pProperties)
10887 {
10888 if (!(check_pProperties))
10889 {
10890 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10891 }
10892 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10893 {
10894 unmarshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10895 }
10896 }
10897 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
10898 stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010899 countingStream->clearPool();
10900 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010901 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010902 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
10903}
10904
10905VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR(
10906 VkPhysicalDevice physicalDevice,
10907 uint32_t planeIndex,
10908 uint32_t* pDisplayCount,
10909 VkDisplayKHR* pDisplays)
10910{
10911 auto stream = mImpl->stream();
10912 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010913 auto resources = mImpl->resources();
10914 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010915 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010916 VkPhysicalDevice local_physicalDevice;
10917 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010918 uint32_t local_planeIndex;
10919 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010920 countingStream->rewind();
10921 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010922 uint64_t cgen_var_863;
10923 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_863, 1);
10924 countingStream->write((uint64_t*)&cgen_var_863, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010925 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010926 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010927 uint64_t cgen_var_864 = (uint64_t)(uintptr_t)pDisplayCount;
10928 countingStream->putBe64(cgen_var_864);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010929 if (pDisplayCount)
10930 {
10931 countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
10932 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010933 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010934 uint64_t cgen_var_865 = (uint64_t)(uintptr_t)pDisplays;
10935 countingStream->putBe64(cgen_var_865);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010936 if (pDisplays)
10937 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010938 if ((*(pDisplayCount)))
10939 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010940 uint64_t* cgen_var_866;
10941 countingStream->alloc((void**)&cgen_var_866, (*(pDisplayCount)) * 8);
10942 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_866, (*(pDisplayCount)));
10943 countingStream->write((uint64_t*)cgen_var_866, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010944 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010945 }
10946 }
10947 uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10948 countingStream->rewind();
10949 uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
10950 stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
10951 stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010952 uint64_t cgen_var_867;
10953 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_867, 1);
10954 stream->write((uint64_t*)&cgen_var_867, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010955 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010956 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010957 uint64_t cgen_var_868 = (uint64_t)(uintptr_t)pDisplayCount;
10958 stream->putBe64(cgen_var_868);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010959 if (pDisplayCount)
10960 {
10961 stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
10962 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010963 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010964 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010965 uint64_t cgen_var_869 = (uint64_t)(uintptr_t)pDisplays;
10966 stream->putBe64(cgen_var_869);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010967 if (pDisplays)
10968 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010969 if ((*(pDisplayCount)))
10970 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010971 uint64_t* cgen_var_870;
10972 stream->alloc((void**)&cgen_var_870, (*(pDisplayCount)) * 8);
10973 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_870, (*(pDisplayCount)));
10974 stream->write((uint64_t*)cgen_var_870, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010975 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010976 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010977 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010978 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010979 uint32_t* check_pDisplayCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010980 check_pDisplayCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010981 if (pDisplayCount)
10982 {
10983 if (!(check_pDisplayCount))
10984 {
10985 fprintf(stderr, "fatal: pDisplayCount inconsistent between guest and host\n");
10986 }
10987 stream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
10988 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010989 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010990 VkDisplayKHR* check_pDisplays;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010991 check_pDisplays = (VkDisplayKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010992 if (pDisplays)
10993 {
10994 if (!(check_pDisplays))
10995 {
10996 fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n");
10997 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080010998 if ((*(pDisplayCount)))
10999 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011000 uint64_t* cgen_var_873;
11001 stream->alloc((void**)&cgen_var_873, (*(pDisplayCount)) * 8);
11002 stream->read((uint64_t*)cgen_var_873, (*(pDisplayCount)) * 8);
11003 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_873, (VkDisplayKHR*)pDisplays, (*(pDisplayCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011004 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011005 }
11006 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
11007 stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011008 countingStream->clearPool();
11009 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011010 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011011 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
11012}
11013
11014VkResult VkEncoder::vkGetDisplayModePropertiesKHR(
11015 VkPhysicalDevice physicalDevice,
11016 VkDisplayKHR display,
11017 uint32_t* pPropertyCount,
11018 VkDisplayModePropertiesKHR* pProperties)
11019{
11020 auto stream = mImpl->stream();
11021 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011022 auto resources = mImpl->resources();
11023 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011024 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011025 VkPhysicalDevice local_physicalDevice;
11026 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011027 VkDisplayKHR local_display;
11028 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011029 countingStream->rewind();
11030 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011031 uint64_t cgen_var_874;
11032 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_874, 1);
11033 countingStream->write((uint64_t*)&cgen_var_874, 1 * 8);
11034 uint64_t cgen_var_875;
11035 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_875, 1);
11036 countingStream->write((uint64_t*)&cgen_var_875, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011037 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011038 uint64_t cgen_var_876 = (uint64_t)(uintptr_t)pPropertyCount;
11039 countingStream->putBe64(cgen_var_876);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011040 if (pPropertyCount)
11041 {
11042 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11043 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011044 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011045 uint64_t cgen_var_877 = (uint64_t)(uintptr_t)pProperties;
11046 countingStream->putBe64(cgen_var_877);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011047 if (pProperties)
11048 {
11049 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11050 {
11051 marshal_VkDisplayModePropertiesKHR(countingStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11052 }
11053 }
11054 }
11055 uint32_t packetSize_vkGetDisplayModePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11056 countingStream->rewind();
11057 uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR;
11058 stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
11059 stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011060 uint64_t cgen_var_878;
11061 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_878, 1);
11062 stream->write((uint64_t*)&cgen_var_878, 1 * 8);
11063 uint64_t cgen_var_879;
11064 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_879, 1);
11065 stream->write((uint64_t*)&cgen_var_879, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011066 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011067 uint64_t cgen_var_880 = (uint64_t)(uintptr_t)pPropertyCount;
11068 stream->putBe64(cgen_var_880);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011069 if (pPropertyCount)
11070 {
11071 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11072 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011073 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011074 uint64_t cgen_var_881 = (uint64_t)(uintptr_t)pProperties;
11075 stream->putBe64(cgen_var_881);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011076 if (pProperties)
11077 {
11078 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11079 {
11080 marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11081 }
11082 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011083 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011084 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011085 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011086 if (pPropertyCount)
11087 {
11088 if (!(check_pPropertyCount))
11089 {
11090 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
11091 }
11092 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
11093 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011094 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011095 VkDisplayModePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011096 check_pProperties = (VkDisplayModePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011097 if (pProperties)
11098 {
11099 if (!(check_pProperties))
11100 {
11101 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
11102 }
11103 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11104 {
11105 unmarshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11106 }
11107 }
11108 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
11109 stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011110 countingStream->clearPool();
11111 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011112 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011113 return vkGetDisplayModePropertiesKHR_VkResult_return;
11114}
11115
11116VkResult VkEncoder::vkCreateDisplayModeKHR(
11117 VkPhysicalDevice physicalDevice,
11118 VkDisplayKHR display,
11119 const VkDisplayModeCreateInfoKHR* pCreateInfo,
11120 const VkAllocationCallbacks* pAllocator,
11121 VkDisplayModeKHR* pMode)
11122{
11123 auto stream = mImpl->stream();
11124 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011125 auto resources = mImpl->resources();
11126 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011127 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011128 VkPhysicalDevice local_physicalDevice;
11129 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011130 VkDisplayKHR local_display;
11131 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011132 VkDisplayModeCreateInfoKHR* local_pCreateInfo;
11133 local_pCreateInfo = nullptr;
11134 if (pCreateInfo)
11135 {
11136 local_pCreateInfo = (VkDisplayModeCreateInfoKHR*)pool->alloc(sizeof(const VkDisplayModeCreateInfoKHR));
11137 deepcopy_VkDisplayModeCreateInfoKHR(pool, pCreateInfo, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
11138 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011139 VkAllocationCallbacks* local_pAllocator;
11140 local_pAllocator = nullptr;
11141 if (pAllocator)
11142 {
11143 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11144 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11145 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011146 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011147 countingStream->rewind();
11148 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011149 uint64_t cgen_var_884;
11150 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_884, 1);
11151 countingStream->write((uint64_t*)&cgen_var_884, 1 * 8);
11152 uint64_t cgen_var_885;
11153 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_885, 1);
11154 countingStream->write((uint64_t*)&cgen_var_885, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011155 marshal_VkDisplayModeCreateInfoKHR(countingStream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011156 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011157 uint64_t cgen_var_886 = (uint64_t)(uintptr_t)local_pAllocator;
11158 countingStream->putBe64(cgen_var_886);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011159 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011160 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011161 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011162 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011163 uint64_t cgen_var_887;
11164 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_887, 1);
11165 countingStream->write((uint64_t*)&cgen_var_887, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011166 }
11167 uint32_t packetSize_vkCreateDisplayModeKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11168 countingStream->rewind();
11169 uint32_t opcode_vkCreateDisplayModeKHR = OP_vkCreateDisplayModeKHR;
11170 stream->write(&opcode_vkCreateDisplayModeKHR, sizeof(uint32_t));
11171 stream->write(&packetSize_vkCreateDisplayModeKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011172 uint64_t cgen_var_888;
11173 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_888, 1);
11174 stream->write((uint64_t*)&cgen_var_888, 1 * 8);
11175 uint64_t cgen_var_889;
11176 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_889, 1);
11177 stream->write((uint64_t*)&cgen_var_889, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011178 marshal_VkDisplayModeCreateInfoKHR(stream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011179 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011180 uint64_t cgen_var_890 = (uint64_t)(uintptr_t)local_pAllocator;
11181 stream->putBe64(cgen_var_890);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011182 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011183 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011184 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011185 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011186 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011187 uint64_t cgen_var_891;
11188 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_891, 1);
11189 stream->write((uint64_t*)&cgen_var_891, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011190 stream->setHandleMapping(resources->unwrapMapping());
11191 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011192 uint64_t cgen_var_892;
11193 stream->read((uint64_t*)&cgen_var_892, 8);
11194 stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_892, (VkDisplayModeKHR*)pMode, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011195 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011196 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
11197 stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011198 countingStream->clearPool();
11199 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011200 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011201 return vkCreateDisplayModeKHR_VkResult_return;
11202}
11203
11204VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR(
11205 VkPhysicalDevice physicalDevice,
11206 VkDisplayModeKHR mode,
11207 uint32_t planeIndex,
11208 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
11209{
11210 auto stream = mImpl->stream();
11211 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011212 auto resources = mImpl->resources();
11213 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011214 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011215 VkPhysicalDevice local_physicalDevice;
11216 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011217 VkDisplayModeKHR local_mode;
11218 local_mode = mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011219 uint32_t local_planeIndex;
11220 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011221 countingStream->rewind();
11222 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011223 uint64_t cgen_var_893;
11224 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_893, 1);
11225 countingStream->write((uint64_t*)&cgen_var_893, 1 * 8);
11226 uint64_t cgen_var_894;
11227 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_894, 1);
11228 countingStream->write((uint64_t*)&cgen_var_894, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011229 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011230 marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11231 }
11232 uint32_t packetSize_vkGetDisplayPlaneCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11233 countingStream->rewind();
11234 uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR;
11235 stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
11236 stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011237 uint64_t cgen_var_895;
11238 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_895, 1);
11239 stream->write((uint64_t*)&cgen_var_895, 1 * 8);
11240 uint64_t cgen_var_896;
11241 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_896, 1);
11242 stream->write((uint64_t*)&cgen_var_896, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011243 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011244 marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11245 unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11246 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
11247 stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011248 countingStream->clearPool();
11249 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011250 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011251 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
11252}
11253
11254VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR(
11255 VkInstance instance,
11256 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
11257 const VkAllocationCallbacks* pAllocator,
11258 VkSurfaceKHR* pSurface)
11259{
11260 auto stream = mImpl->stream();
11261 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011262 auto resources = mImpl->resources();
11263 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011264 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011265 VkInstance local_instance;
11266 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011267 VkDisplaySurfaceCreateInfoKHR* local_pCreateInfo;
11268 local_pCreateInfo = nullptr;
11269 if (pCreateInfo)
11270 {
11271 local_pCreateInfo = (VkDisplaySurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkDisplaySurfaceCreateInfoKHR));
11272 deepcopy_VkDisplaySurfaceCreateInfoKHR(pool, pCreateInfo, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
11273 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011274 VkAllocationCallbacks* local_pAllocator;
11275 local_pAllocator = nullptr;
11276 if (pAllocator)
11277 {
11278 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11279 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11280 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011281 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011282 countingStream->rewind();
11283 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011284 uint64_t cgen_var_897;
11285 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_897, 1);
11286 countingStream->write((uint64_t*)&cgen_var_897, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011287 marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011288 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011289 uint64_t cgen_var_898 = (uint64_t)(uintptr_t)local_pAllocator;
11290 countingStream->putBe64(cgen_var_898);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011291 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011292 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011293 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011294 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011295 uint64_t cgen_var_899;
11296 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_899, 1);
11297 countingStream->write((uint64_t*)&cgen_var_899, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011298 }
11299 uint32_t packetSize_vkCreateDisplayPlaneSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11300 countingStream->rewind();
11301 uint32_t opcode_vkCreateDisplayPlaneSurfaceKHR = OP_vkCreateDisplayPlaneSurfaceKHR;
11302 stream->write(&opcode_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
11303 stream->write(&packetSize_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011304 uint64_t cgen_var_900;
11305 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_900, 1);
11306 stream->write((uint64_t*)&cgen_var_900, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011307 marshal_VkDisplaySurfaceCreateInfoKHR(stream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011308 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011309 uint64_t cgen_var_901 = (uint64_t)(uintptr_t)local_pAllocator;
11310 stream->putBe64(cgen_var_901);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011311 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011312 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011313 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011314 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011315 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011316 uint64_t cgen_var_902;
11317 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_902, 1);
11318 stream->write((uint64_t*)&cgen_var_902, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011319 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011320 uint64_t cgen_var_903;
11321 stream->read((uint64_t*)&cgen_var_903, 8);
11322 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_903, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011323 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
11324 stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011325 countingStream->clearPool();
11326 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011327 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011328 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
11329}
11330
11331#endif
11332#ifdef VK_KHR_display_swapchain
11333VkResult VkEncoder::vkCreateSharedSwapchainsKHR(
11334 VkDevice device,
11335 uint32_t swapchainCount,
11336 const VkSwapchainCreateInfoKHR* pCreateInfos,
11337 const VkAllocationCallbacks* pAllocator,
11338 VkSwapchainKHR* pSwapchains)
11339{
11340 auto stream = mImpl->stream();
11341 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011342 auto resources = mImpl->resources();
11343 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011344 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011345 VkDevice local_device;
11346 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011347 uint32_t local_swapchainCount;
11348 local_swapchainCount = swapchainCount;
11349 VkSwapchainCreateInfoKHR* local_pCreateInfos;
11350 local_pCreateInfos = nullptr;
11351 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011352 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011353 local_pCreateInfos = (VkSwapchainCreateInfoKHR*)pool->alloc(((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011354 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11355 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011356 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfos + i, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011357 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011358 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011359 VkAllocationCallbacks* local_pAllocator;
11360 local_pAllocator = nullptr;
11361 if (pAllocator)
11362 {
11363 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11364 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11365 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011366 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011367 countingStream->rewind();
11368 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011369 uint64_t cgen_var_904;
11370 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_904, 1);
11371 countingStream->write((uint64_t*)&cgen_var_904, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011372 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
11373 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11374 {
11375 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
11376 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011377 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011378 uint64_t cgen_var_905 = (uint64_t)(uintptr_t)local_pAllocator;
11379 countingStream->putBe64(cgen_var_905);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011380 if (local_pAllocator)
11381 {
11382 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011383 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080011384 if (((swapchainCount)))
11385 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011386 uint64_t* cgen_var_906;
11387 countingStream->alloc((void**)&cgen_var_906, ((swapchainCount)) * 8);
11388 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_906, ((swapchainCount)));
11389 countingStream->write((uint64_t*)cgen_var_906, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011390 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011391 }
11392 uint32_t packetSize_vkCreateSharedSwapchainsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11393 countingStream->rewind();
11394 uint32_t opcode_vkCreateSharedSwapchainsKHR = OP_vkCreateSharedSwapchainsKHR;
11395 stream->write(&opcode_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
11396 stream->write(&packetSize_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011397 uint64_t cgen_var_907;
11398 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_907, 1);
11399 stream->write((uint64_t*)&cgen_var_907, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011400 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011401 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11402 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011403 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011404 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011405 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011406 uint64_t cgen_var_908 = (uint64_t)(uintptr_t)local_pAllocator;
11407 stream->putBe64(cgen_var_908);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011408 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011409 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011410 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011411 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011412 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -080011413 if (((swapchainCount)))
11414 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011415 uint64_t* cgen_var_909;
11416 stream->alloc((void**)&cgen_var_909, ((swapchainCount)) * 8);
11417 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_909, ((swapchainCount)));
11418 stream->write((uint64_t*)cgen_var_909, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011419 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011420 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -080011421 if (((swapchainCount)))
11422 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011423 uint64_t* cgen_var_910;
11424 stream->alloc((void**)&cgen_var_910, ((swapchainCount)) * 8);
11425 stream->read((uint64_t*)cgen_var_910, ((swapchainCount)) * 8);
11426 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_910, (VkSwapchainKHR*)pSwapchains, ((swapchainCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011427 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011428 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
11429 stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011430 countingStream->clearPool();
11431 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011432 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011433 return vkCreateSharedSwapchainsKHR_VkResult_return;
11434}
11435
11436#endif
11437#ifdef VK_KHR_xlib_surface
11438VkResult VkEncoder::vkCreateXlibSurfaceKHR(
11439 VkInstance instance,
11440 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
11441 const VkAllocationCallbacks* pAllocator,
11442 VkSurfaceKHR* pSurface)
11443{
11444 auto stream = mImpl->stream();
11445 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011446 auto resources = mImpl->resources();
11447 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011448 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011449 VkInstance local_instance;
11450 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011451 VkXlibSurfaceCreateInfoKHR* local_pCreateInfo;
11452 local_pCreateInfo = nullptr;
11453 if (pCreateInfo)
11454 {
11455 local_pCreateInfo = (VkXlibSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXlibSurfaceCreateInfoKHR));
11456 deepcopy_VkXlibSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
11457 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011458 VkAllocationCallbacks* local_pAllocator;
11459 local_pAllocator = nullptr;
11460 if (pAllocator)
11461 {
11462 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11463 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11464 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011465 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011466 countingStream->rewind();
11467 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011468 uint64_t cgen_var_911;
11469 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_911, 1);
11470 countingStream->write((uint64_t*)&cgen_var_911, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011471 marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011472 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011473 uint64_t cgen_var_912 = (uint64_t)(uintptr_t)local_pAllocator;
11474 countingStream->putBe64(cgen_var_912);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011475 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011476 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011477 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011478 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011479 uint64_t cgen_var_913;
11480 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_913, 1);
11481 countingStream->write((uint64_t*)&cgen_var_913, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011482 }
11483 uint32_t packetSize_vkCreateXlibSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11484 countingStream->rewind();
11485 uint32_t opcode_vkCreateXlibSurfaceKHR = OP_vkCreateXlibSurfaceKHR;
11486 stream->write(&opcode_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
11487 stream->write(&packetSize_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011488 uint64_t cgen_var_914;
11489 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_914, 1);
11490 stream->write((uint64_t*)&cgen_var_914, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011491 marshal_VkXlibSurfaceCreateInfoKHR(stream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011492 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011493 uint64_t cgen_var_915 = (uint64_t)(uintptr_t)local_pAllocator;
11494 stream->putBe64(cgen_var_915);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011495 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011496 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011497 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011498 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011499 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011500 uint64_t cgen_var_916;
11501 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_916, 1);
11502 stream->write((uint64_t*)&cgen_var_916, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011503 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011504 uint64_t cgen_var_917;
11505 stream->read((uint64_t*)&cgen_var_917, 8);
11506 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_917, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011507 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
11508 stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011509 countingStream->clearPool();
11510 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011511 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011512 return vkCreateXlibSurfaceKHR_VkResult_return;
11513}
11514
11515VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR(
11516 VkPhysicalDevice physicalDevice,
11517 uint32_t queueFamilyIndex,
11518 Display* dpy,
11519 VisualID visualID)
11520{
11521 auto stream = mImpl->stream();
11522 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011523 auto resources = mImpl->resources();
11524 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011525 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011526 VkPhysicalDevice local_physicalDevice;
11527 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011528 uint32_t local_queueFamilyIndex;
11529 local_queueFamilyIndex = queueFamilyIndex;
11530 VisualID local_visualID;
11531 local_visualID = visualID;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011532 countingStream->rewind();
11533 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011534 uint64_t cgen_var_918;
11535 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_918, 1);
11536 countingStream->write((uint64_t*)&cgen_var_918, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011537 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011538 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011539 countingStream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011540 }
11541 uint32_t packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11542 countingStream->rewind();
11543 uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
11544 stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
11545 stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011546 uint64_t cgen_var_919;
11547 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_919, 1);
11548 stream->write((uint64_t*)&cgen_var_919, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011549 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011550 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011551 stream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011552 stream->read((Display*)dpy, sizeof(Display));
11553 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11554 stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011555 countingStream->clearPool();
11556 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011557 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011558 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
11559}
11560
11561#endif
11562#ifdef VK_KHR_xcb_surface
11563VkResult VkEncoder::vkCreateXcbSurfaceKHR(
11564 VkInstance instance,
11565 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
11566 const VkAllocationCallbacks* pAllocator,
11567 VkSurfaceKHR* pSurface)
11568{
11569 auto stream = mImpl->stream();
11570 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011571 auto resources = mImpl->resources();
11572 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011573 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011574 VkInstance local_instance;
11575 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011576 VkXcbSurfaceCreateInfoKHR* local_pCreateInfo;
11577 local_pCreateInfo = nullptr;
11578 if (pCreateInfo)
11579 {
11580 local_pCreateInfo = (VkXcbSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXcbSurfaceCreateInfoKHR));
11581 deepcopy_VkXcbSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
11582 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011583 VkAllocationCallbacks* local_pAllocator;
11584 local_pAllocator = nullptr;
11585 if (pAllocator)
11586 {
11587 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11588 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11589 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011590 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011591 countingStream->rewind();
11592 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011593 uint64_t cgen_var_920;
11594 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_920, 1);
11595 countingStream->write((uint64_t*)&cgen_var_920, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011596 marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011597 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011598 uint64_t cgen_var_921 = (uint64_t)(uintptr_t)local_pAllocator;
11599 countingStream->putBe64(cgen_var_921);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011600 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011601 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011602 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011603 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011604 uint64_t cgen_var_922;
11605 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_922, 1);
11606 countingStream->write((uint64_t*)&cgen_var_922, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011607 }
11608 uint32_t packetSize_vkCreateXcbSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11609 countingStream->rewind();
11610 uint32_t opcode_vkCreateXcbSurfaceKHR = OP_vkCreateXcbSurfaceKHR;
11611 stream->write(&opcode_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
11612 stream->write(&packetSize_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011613 uint64_t cgen_var_923;
11614 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_923, 1);
11615 stream->write((uint64_t*)&cgen_var_923, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011616 marshal_VkXcbSurfaceCreateInfoKHR(stream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011617 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011618 uint64_t cgen_var_924 = (uint64_t)(uintptr_t)local_pAllocator;
11619 stream->putBe64(cgen_var_924);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011620 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011621 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011622 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011623 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011624 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011625 uint64_t cgen_var_925;
11626 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_925, 1);
11627 stream->write((uint64_t*)&cgen_var_925, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011628 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011629 uint64_t cgen_var_926;
11630 stream->read((uint64_t*)&cgen_var_926, 8);
11631 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_926, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011632 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
11633 stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011634 countingStream->clearPool();
11635 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011636 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011637 return vkCreateXcbSurfaceKHR_VkResult_return;
11638}
11639
11640VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR(
11641 VkPhysicalDevice physicalDevice,
11642 uint32_t queueFamilyIndex,
11643 xcb_connection_t* connection,
11644 xcb_visualid_t visual_id)
11645{
11646 auto stream = mImpl->stream();
11647 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011648 auto resources = mImpl->resources();
11649 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011650 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011651 VkPhysicalDevice local_physicalDevice;
11652 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011653 uint32_t local_queueFamilyIndex;
11654 local_queueFamilyIndex = queueFamilyIndex;
11655 xcb_visualid_t local_visual_id;
11656 local_visual_id = visual_id;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011657 countingStream->rewind();
11658 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011659 uint64_t cgen_var_927;
11660 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_927, 1);
11661 countingStream->write((uint64_t*)&cgen_var_927, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011662 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011663 countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011664 countingStream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011665 }
11666 uint32_t packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11667 countingStream->rewind();
11668 uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
11669 stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
11670 stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011671 uint64_t cgen_var_928;
11672 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_928, 1);
11673 stream->write((uint64_t*)&cgen_var_928, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011674 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011675 stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011676 stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011677 stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
11678 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11679 stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011680 countingStream->clearPool();
11681 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011682 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011683 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
11684}
11685
11686#endif
11687#ifdef VK_KHR_wayland_surface
11688VkResult VkEncoder::vkCreateWaylandSurfaceKHR(
11689 VkInstance instance,
11690 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
11691 const VkAllocationCallbacks* pAllocator,
11692 VkSurfaceKHR* pSurface)
11693{
11694 auto stream = mImpl->stream();
11695 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011696 auto resources = mImpl->resources();
11697 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011698 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011699 VkInstance local_instance;
11700 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011701 VkWaylandSurfaceCreateInfoKHR* local_pCreateInfo;
11702 local_pCreateInfo = nullptr;
11703 if (pCreateInfo)
11704 {
11705 local_pCreateInfo = (VkWaylandSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWaylandSurfaceCreateInfoKHR));
11706 deepcopy_VkWaylandSurfaceCreateInfoKHR(pool, pCreateInfo, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
11707 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011708 VkAllocationCallbacks* local_pAllocator;
11709 local_pAllocator = nullptr;
11710 if (pAllocator)
11711 {
11712 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11713 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11714 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011715 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011716 countingStream->rewind();
11717 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011718 uint64_t cgen_var_929;
11719 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_929, 1);
11720 countingStream->write((uint64_t*)&cgen_var_929, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011721 marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011722 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011723 uint64_t cgen_var_930 = (uint64_t)(uintptr_t)local_pAllocator;
11724 countingStream->putBe64(cgen_var_930);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011725 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011726 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011727 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011728 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011729 uint64_t cgen_var_931;
11730 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_931, 1);
11731 countingStream->write((uint64_t*)&cgen_var_931, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011732 }
11733 uint32_t packetSize_vkCreateWaylandSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11734 countingStream->rewind();
11735 uint32_t opcode_vkCreateWaylandSurfaceKHR = OP_vkCreateWaylandSurfaceKHR;
11736 stream->write(&opcode_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
11737 stream->write(&packetSize_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011738 uint64_t cgen_var_932;
11739 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_932, 1);
11740 stream->write((uint64_t*)&cgen_var_932, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011741 marshal_VkWaylandSurfaceCreateInfoKHR(stream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011742 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011743 uint64_t cgen_var_933 = (uint64_t)(uintptr_t)local_pAllocator;
11744 stream->putBe64(cgen_var_933);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011745 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011746 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011747 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011748 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011749 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011750 uint64_t cgen_var_934;
11751 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_934, 1);
11752 stream->write((uint64_t*)&cgen_var_934, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011753 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011754 uint64_t cgen_var_935;
11755 stream->read((uint64_t*)&cgen_var_935, 8);
11756 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_935, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011757 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
11758 stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011759 countingStream->clearPool();
11760 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011761 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011762 return vkCreateWaylandSurfaceKHR_VkResult_return;
11763}
11764
11765VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR(
11766 VkPhysicalDevice physicalDevice,
11767 uint32_t queueFamilyIndex,
11768 wl_display* display)
11769{
11770 auto stream = mImpl->stream();
11771 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011772 auto resources = mImpl->resources();
11773 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011774 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011775 VkPhysicalDevice local_physicalDevice;
11776 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011777 uint32_t local_queueFamilyIndex;
11778 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011779 countingStream->rewind();
11780 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011781 uint64_t cgen_var_936;
11782 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_936, 1);
11783 countingStream->write((uint64_t*)&cgen_var_936, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011784 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011785 countingStream->write((wl_display*)display, sizeof(wl_display));
11786 }
11787 uint32_t packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11788 countingStream->rewind();
11789 uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
11790 stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
11791 stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011792 uint64_t cgen_var_937;
11793 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_937, 1);
11794 stream->write((uint64_t*)&cgen_var_937, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011795 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011796 stream->write((wl_display*)display, sizeof(wl_display));
11797 stream->read((wl_display*)display, sizeof(wl_display));
11798 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11799 stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011800 countingStream->clearPool();
11801 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011802 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011803 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
11804}
11805
11806#endif
11807#ifdef VK_KHR_mir_surface
11808VkResult VkEncoder::vkCreateMirSurfaceKHR(
11809 VkInstance instance,
11810 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
11811 const VkAllocationCallbacks* pAllocator,
11812 VkSurfaceKHR* pSurface)
11813{
11814 auto stream = mImpl->stream();
11815 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011816 auto resources = mImpl->resources();
11817 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011818 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011819 VkInstance local_instance;
11820 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011821 VkMirSurfaceCreateInfoKHR* local_pCreateInfo;
11822 local_pCreateInfo = nullptr;
11823 if (pCreateInfo)
11824 {
11825 local_pCreateInfo = (VkMirSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkMirSurfaceCreateInfoKHR));
11826 deepcopy_VkMirSurfaceCreateInfoKHR(pool, pCreateInfo, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
11827 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011828 VkAllocationCallbacks* local_pAllocator;
11829 local_pAllocator = nullptr;
11830 if (pAllocator)
11831 {
11832 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11833 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11834 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011835 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011836 countingStream->rewind();
11837 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011838 uint64_t cgen_var_938;
11839 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_938, 1);
11840 countingStream->write((uint64_t*)&cgen_var_938, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011841 marshal_VkMirSurfaceCreateInfoKHR(countingStream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011842 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011843 uint64_t cgen_var_939 = (uint64_t)(uintptr_t)local_pAllocator;
11844 countingStream->putBe64(cgen_var_939);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011845 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011846 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011847 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011848 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011849 uint64_t cgen_var_940;
11850 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_940, 1);
11851 countingStream->write((uint64_t*)&cgen_var_940, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011852 }
11853 uint32_t packetSize_vkCreateMirSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11854 countingStream->rewind();
11855 uint32_t opcode_vkCreateMirSurfaceKHR = OP_vkCreateMirSurfaceKHR;
11856 stream->write(&opcode_vkCreateMirSurfaceKHR, sizeof(uint32_t));
11857 stream->write(&packetSize_vkCreateMirSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011858 uint64_t cgen_var_941;
11859 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_941, 1);
11860 stream->write((uint64_t*)&cgen_var_941, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011861 marshal_VkMirSurfaceCreateInfoKHR(stream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011862 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011863 uint64_t cgen_var_942 = (uint64_t)(uintptr_t)local_pAllocator;
11864 stream->putBe64(cgen_var_942);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011865 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011866 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011867 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011868 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011869 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011870 uint64_t cgen_var_943;
11871 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_943, 1);
11872 stream->write((uint64_t*)&cgen_var_943, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011873 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011874 uint64_t cgen_var_944;
11875 stream->read((uint64_t*)&cgen_var_944, 8);
11876 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_944, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011877 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
11878 stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011879 countingStream->clearPool();
11880 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011881 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011882 return vkCreateMirSurfaceKHR_VkResult_return;
11883}
11884
11885VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR(
11886 VkPhysicalDevice physicalDevice,
11887 uint32_t queueFamilyIndex,
11888 MirConnection* connection)
11889{
11890 auto stream = mImpl->stream();
11891 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011892 auto resources = mImpl->resources();
11893 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011894 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011895 VkPhysicalDevice local_physicalDevice;
11896 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011897 uint32_t local_queueFamilyIndex;
11898 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011899 countingStream->rewind();
11900 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011901 uint64_t cgen_var_945;
11902 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_945, 1);
11903 countingStream->write((uint64_t*)&cgen_var_945, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011904 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011905 countingStream->write((MirConnection*)connection, sizeof(MirConnection));
11906 }
11907 uint32_t packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11908 countingStream->rewind();
11909 uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
11910 stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
11911 stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011912 uint64_t cgen_var_946;
11913 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_946, 1);
11914 stream->write((uint64_t*)&cgen_var_946, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011915 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011916 stream->write((MirConnection*)connection, sizeof(MirConnection));
11917 stream->read((MirConnection*)connection, sizeof(MirConnection));
11918 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11919 stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011920 countingStream->clearPool();
11921 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011922 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011923 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
11924}
11925
11926#endif
11927#ifdef VK_KHR_android_surface
11928VkResult VkEncoder::vkCreateAndroidSurfaceKHR(
11929 VkInstance instance,
11930 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
11931 const VkAllocationCallbacks* pAllocator,
11932 VkSurfaceKHR* pSurface)
11933{
11934 auto stream = mImpl->stream();
11935 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011936 auto resources = mImpl->resources();
11937 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011938 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011939 VkInstance local_instance;
11940 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011941 VkAndroidSurfaceCreateInfoKHR* local_pCreateInfo;
11942 local_pCreateInfo = nullptr;
11943 if (pCreateInfo)
11944 {
11945 local_pCreateInfo = (VkAndroidSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkAndroidSurfaceCreateInfoKHR));
11946 deepcopy_VkAndroidSurfaceCreateInfoKHR(pool, pCreateInfo, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
11947 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011948 VkAllocationCallbacks* local_pAllocator;
11949 local_pAllocator = nullptr;
11950 if (pAllocator)
11951 {
11952 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11953 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11954 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011955 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011956 countingStream->rewind();
11957 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011958 uint64_t cgen_var_947;
11959 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_947, 1);
11960 countingStream->write((uint64_t*)&cgen_var_947, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011961 marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011962 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011963 uint64_t cgen_var_948 = (uint64_t)(uintptr_t)local_pAllocator;
11964 countingStream->putBe64(cgen_var_948);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011965 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011966 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011967 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011968 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011969 uint64_t cgen_var_949;
11970 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_949, 1);
11971 countingStream->write((uint64_t*)&cgen_var_949, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011972 }
11973 uint32_t packetSize_vkCreateAndroidSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11974 countingStream->rewind();
11975 uint32_t opcode_vkCreateAndroidSurfaceKHR = OP_vkCreateAndroidSurfaceKHR;
11976 stream->write(&opcode_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
11977 stream->write(&packetSize_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011978 uint64_t cgen_var_950;
11979 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_950, 1);
11980 stream->write((uint64_t*)&cgen_var_950, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011981 marshal_VkAndroidSurfaceCreateInfoKHR(stream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011982 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011983 uint64_t cgen_var_951 = (uint64_t)(uintptr_t)local_pAllocator;
11984 stream->putBe64(cgen_var_951);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011985 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011986 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011987 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011988 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011989 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011990 uint64_t cgen_var_952;
11991 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_952, 1);
11992 stream->write((uint64_t*)&cgen_var_952, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011993 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011994 uint64_t cgen_var_953;
11995 stream->read((uint64_t*)&cgen_var_953, 8);
11996 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_953, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011997 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
11998 stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011999 countingStream->clearPool();
12000 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012001 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012002 return vkCreateAndroidSurfaceKHR_VkResult_return;
12003}
12004
12005#endif
12006#ifdef VK_KHR_win32_surface
12007VkResult VkEncoder::vkCreateWin32SurfaceKHR(
12008 VkInstance instance,
12009 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
12010 const VkAllocationCallbacks* pAllocator,
12011 VkSurfaceKHR* pSurface)
12012{
12013 auto stream = mImpl->stream();
12014 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012015 auto resources = mImpl->resources();
12016 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012017 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012018 VkInstance local_instance;
12019 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012020 VkWin32SurfaceCreateInfoKHR* local_pCreateInfo;
12021 local_pCreateInfo = nullptr;
12022 if (pCreateInfo)
12023 {
12024 local_pCreateInfo = (VkWin32SurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWin32SurfaceCreateInfoKHR));
12025 deepcopy_VkWin32SurfaceCreateInfoKHR(pool, pCreateInfo, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
12026 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012027 VkAllocationCallbacks* local_pAllocator;
12028 local_pAllocator = nullptr;
12029 if (pAllocator)
12030 {
12031 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12032 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12033 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012034 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012035 countingStream->rewind();
12036 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012037 uint64_t cgen_var_954;
12038 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_954, 1);
12039 countingStream->write((uint64_t*)&cgen_var_954, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012040 marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012041 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012042 uint64_t cgen_var_955 = (uint64_t)(uintptr_t)local_pAllocator;
12043 countingStream->putBe64(cgen_var_955);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012044 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012045 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012046 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012047 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012048 uint64_t cgen_var_956;
12049 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_956, 1);
12050 countingStream->write((uint64_t*)&cgen_var_956, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012051 }
12052 uint32_t packetSize_vkCreateWin32SurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12053 countingStream->rewind();
12054 uint32_t opcode_vkCreateWin32SurfaceKHR = OP_vkCreateWin32SurfaceKHR;
12055 stream->write(&opcode_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
12056 stream->write(&packetSize_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012057 uint64_t cgen_var_957;
12058 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_957, 1);
12059 stream->write((uint64_t*)&cgen_var_957, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012060 marshal_VkWin32SurfaceCreateInfoKHR(stream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012061 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012062 uint64_t cgen_var_958 = (uint64_t)(uintptr_t)local_pAllocator;
12063 stream->putBe64(cgen_var_958);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012064 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012065 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012066 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012067 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012068 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012069 uint64_t cgen_var_959;
12070 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_959, 1);
12071 stream->write((uint64_t*)&cgen_var_959, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012072 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012073 uint64_t cgen_var_960;
12074 stream->read((uint64_t*)&cgen_var_960, 8);
12075 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_960, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012076 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
12077 stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012078 countingStream->clearPool();
12079 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012080 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012081 return vkCreateWin32SurfaceKHR_VkResult_return;
12082}
12083
12084VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR(
12085 VkPhysicalDevice physicalDevice,
12086 uint32_t queueFamilyIndex)
12087{
12088 auto stream = mImpl->stream();
12089 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012090 auto resources = mImpl->resources();
12091 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012092 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012093 VkPhysicalDevice local_physicalDevice;
12094 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012095 uint32_t local_queueFamilyIndex;
12096 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012097 countingStream->rewind();
12098 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012099 uint64_t cgen_var_961;
12100 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_961, 1);
12101 countingStream->write((uint64_t*)&cgen_var_961, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012102 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012103 }
12104 uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12105 countingStream->rewind();
12106 uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
12107 stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
12108 stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012109 uint64_t cgen_var_962;
12110 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_962, 1);
12111 stream->write((uint64_t*)&cgen_var_962, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012112 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012113 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
12114 stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012115 countingStream->clearPool();
12116 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012117 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012118 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
12119}
12120
12121#endif
12122#ifdef VK_KHR_sampler_mirror_clamp_to_edge
12123#endif
12124#ifdef VK_KHR_multiview
12125#endif
12126#ifdef VK_KHR_get_physical_device_properties2
12127void VkEncoder::vkGetPhysicalDeviceFeatures2KHR(
12128 VkPhysicalDevice physicalDevice,
12129 VkPhysicalDeviceFeatures2* pFeatures)
12130{
12131 auto stream = mImpl->stream();
12132 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012133 auto resources = mImpl->resources();
12134 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012135 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012136 VkPhysicalDevice local_physicalDevice;
12137 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012138 countingStream->rewind();
12139 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012140 uint64_t cgen_var_963;
12141 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_963, 1);
12142 countingStream->write((uint64_t*)&cgen_var_963, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012143 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12144 }
12145 uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12146 countingStream->rewind();
12147 uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR;
12148 stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
12149 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012150 uint64_t cgen_var_964;
12151 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_964, 1);
12152 stream->write((uint64_t*)&cgen_var_964, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012153 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12154 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12155}
12156
12157void VkEncoder::vkGetPhysicalDeviceProperties2KHR(
12158 VkPhysicalDevice physicalDevice,
12159 VkPhysicalDeviceProperties2* pProperties)
12160{
12161 auto stream = mImpl->stream();
12162 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012163 auto resources = mImpl->resources();
12164 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012165 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012166 VkPhysicalDevice local_physicalDevice;
12167 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012168 countingStream->rewind();
12169 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012170 uint64_t cgen_var_965;
12171 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_965, 1);
12172 countingStream->write((uint64_t*)&cgen_var_965, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012173 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
12174 }
12175 uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12176 countingStream->rewind();
12177 uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR;
12178 stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
12179 stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012180 uint64_t cgen_var_966;
12181 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_966, 1);
12182 stream->write((uint64_t*)&cgen_var_966, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012183 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
12184 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
12185}
12186
12187void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR(
12188 VkPhysicalDevice physicalDevice,
12189 VkFormat format,
12190 VkFormatProperties2* pFormatProperties)
12191{
12192 auto stream = mImpl->stream();
12193 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012194 auto resources = mImpl->resources();
12195 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012196 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012197 VkPhysicalDevice local_physicalDevice;
12198 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012199 VkFormat local_format;
12200 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012201 countingStream->rewind();
12202 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012203 uint64_t cgen_var_967;
12204 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_967, 1);
12205 countingStream->write((uint64_t*)&cgen_var_967, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012206 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012207 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
12208 }
12209 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12210 countingStream->rewind();
12211 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR;
12212 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
12213 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012214 uint64_t cgen_var_968;
12215 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_968, 1);
12216 stream->write((uint64_t*)&cgen_var_968, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012217 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012218 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
12219 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
12220}
12221
12222VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR(
12223 VkPhysicalDevice physicalDevice,
12224 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
12225 VkImageFormatProperties2* pImageFormatProperties)
12226{
12227 auto stream = mImpl->stream();
12228 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012229 auto resources = mImpl->resources();
12230 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012231 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012232 VkPhysicalDevice local_physicalDevice;
12233 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012234 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
12235 local_pImageFormatInfo = nullptr;
12236 if (pImageFormatInfo)
12237 {
12238 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
12239 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
12240 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012241 countingStream->rewind();
12242 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012243 uint64_t cgen_var_969;
12244 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_969, 1);
12245 countingStream->write((uint64_t*)&cgen_var_969, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012246 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012247 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
12248 }
12249 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12250 countingStream->rewind();
12251 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
12252 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
12253 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012254 uint64_t cgen_var_970;
12255 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_970, 1);
12256 stream->write((uint64_t*)&cgen_var_970, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012257 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012258 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
12259 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
12260 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
12261 stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012262 countingStream->clearPool();
12263 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012264 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012265 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
12266}
12267
12268void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR(
12269 VkPhysicalDevice physicalDevice,
12270 uint32_t* pQueueFamilyPropertyCount,
12271 VkQueueFamilyProperties2* pQueueFamilyProperties)
12272{
12273 auto stream = mImpl->stream();
12274 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012275 auto resources = mImpl->resources();
12276 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012277 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012278 VkPhysicalDevice local_physicalDevice;
12279 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012280 countingStream->rewind();
12281 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012282 uint64_t cgen_var_971;
12283 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_971, 1);
12284 countingStream->write((uint64_t*)&cgen_var_971, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012285 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012286 uint64_t cgen_var_972 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
12287 countingStream->putBe64(cgen_var_972);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012288 if (pQueueFamilyPropertyCount)
12289 {
12290 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12291 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012292 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012293 uint64_t cgen_var_973 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
12294 countingStream->putBe64(cgen_var_973);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012295 if (pQueueFamilyProperties)
12296 {
12297 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12298 {
12299 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12300 }
12301 }
12302 }
12303 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12304 countingStream->rewind();
12305 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
12306 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
12307 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012308 uint64_t cgen_var_974;
12309 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_974, 1);
12310 stream->write((uint64_t*)&cgen_var_974, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012311 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012312 uint64_t cgen_var_975 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
12313 stream->putBe64(cgen_var_975);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012314 if (pQueueFamilyPropertyCount)
12315 {
12316 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12317 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012318 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012319 uint64_t cgen_var_976 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
12320 stream->putBe64(cgen_var_976);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012321 if (pQueueFamilyProperties)
12322 {
12323 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12324 {
12325 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12326 }
12327 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012328 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012329 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012330 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012331 if (pQueueFamilyPropertyCount)
12332 {
12333 if (!(check_pQueueFamilyPropertyCount))
12334 {
12335 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
12336 }
12337 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12338 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012339 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012340 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012341 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012342 if (pQueueFamilyProperties)
12343 {
12344 if (!(check_pQueueFamilyProperties))
12345 {
12346 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
12347 }
12348 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12349 {
12350 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12351 }
12352 }
12353}
12354
12355void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR(
12356 VkPhysicalDevice physicalDevice,
12357 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
12358{
12359 auto stream = mImpl->stream();
12360 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012361 auto resources = mImpl->resources();
12362 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012363 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012364 VkPhysicalDevice local_physicalDevice;
12365 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012366 countingStream->rewind();
12367 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012368 uint64_t cgen_var_979;
12369 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_979, 1);
12370 countingStream->write((uint64_t*)&cgen_var_979, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012371 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12372 }
12373 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12374 countingStream->rewind();
12375 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
12376 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
12377 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012378 uint64_t cgen_var_980;
12379 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_980, 1);
12380 stream->write((uint64_t*)&cgen_var_980, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012381 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12382 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12383}
12384
12385void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
12386 VkPhysicalDevice physicalDevice,
12387 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
12388 uint32_t* pPropertyCount,
12389 VkSparseImageFormatProperties2* pProperties)
12390{
12391 auto stream = mImpl->stream();
12392 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012393 auto resources = mImpl->resources();
12394 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012395 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012396 VkPhysicalDevice local_physicalDevice;
12397 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012398 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
12399 local_pFormatInfo = nullptr;
12400 if (pFormatInfo)
12401 {
12402 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
12403 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
12404 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012405 countingStream->rewind();
12406 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012407 uint64_t cgen_var_981;
12408 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_981, 1);
12409 countingStream->write((uint64_t*)&cgen_var_981, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012410 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012411 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012412 uint64_t cgen_var_982 = (uint64_t)(uintptr_t)pPropertyCount;
12413 countingStream->putBe64(cgen_var_982);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012414 if (pPropertyCount)
12415 {
12416 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12417 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012418 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012419 uint64_t cgen_var_983 = (uint64_t)(uintptr_t)pProperties;
12420 countingStream->putBe64(cgen_var_983);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012421 if (pProperties)
12422 {
12423 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12424 {
12425 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
12426 }
12427 }
12428 }
12429 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12430 countingStream->rewind();
12431 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
12432 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
12433 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012434 uint64_t cgen_var_984;
12435 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_984, 1);
12436 stream->write((uint64_t*)&cgen_var_984, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012437 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012438 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012439 uint64_t cgen_var_985 = (uint64_t)(uintptr_t)pPropertyCount;
12440 stream->putBe64(cgen_var_985);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012441 if (pPropertyCount)
12442 {
12443 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12444 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012445 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012446 uint64_t cgen_var_986 = (uint64_t)(uintptr_t)pProperties;
12447 stream->putBe64(cgen_var_986);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012448 if (pProperties)
12449 {
12450 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12451 {
12452 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
12453 }
12454 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012455 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012456 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012457 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012458 if (pPropertyCount)
12459 {
12460 if (!(check_pPropertyCount))
12461 {
12462 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12463 }
12464 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12465 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012466 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012467 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012468 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012469 if (pProperties)
12470 {
12471 if (!(check_pProperties))
12472 {
12473 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12474 }
12475 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12476 {
12477 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
12478 }
12479 }
12480}
12481
12482#endif
12483#ifdef VK_KHR_device_group
12484void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR(
12485 VkDevice device,
12486 uint32_t heapIndex,
12487 uint32_t localDeviceIndex,
12488 uint32_t remoteDeviceIndex,
12489 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
12490{
12491 auto stream = mImpl->stream();
12492 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012493 auto resources = mImpl->resources();
12494 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012495 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012496 VkDevice local_device;
12497 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012498 uint32_t local_heapIndex;
12499 local_heapIndex = heapIndex;
12500 uint32_t local_localDeviceIndex;
12501 local_localDeviceIndex = localDeviceIndex;
12502 uint32_t local_remoteDeviceIndex;
12503 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012504 countingStream->rewind();
12505 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012506 uint64_t cgen_var_989;
12507 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_989, 1);
12508 countingStream->write((uint64_t*)&cgen_var_989, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012509 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
12510 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
12511 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012512 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12513 }
12514 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12515 countingStream->rewind();
12516 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
12517 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
12518 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012519 uint64_t cgen_var_990;
12520 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_990, 1);
12521 stream->write((uint64_t*)&cgen_var_990, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012522 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
12523 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
12524 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012525 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12526 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12527}
12528
12529void VkEncoder::vkCmdSetDeviceMaskKHR(
12530 VkCommandBuffer commandBuffer,
12531 uint32_t deviceMask)
12532{
12533 auto stream = mImpl->stream();
12534 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012535 auto resources = mImpl->resources();
12536 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012537 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012538 VkCommandBuffer local_commandBuffer;
12539 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012540 uint32_t local_deviceMask;
12541 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012542 countingStream->rewind();
12543 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012544 uint64_t cgen_var_991;
12545 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_991, 1);
12546 countingStream->write((uint64_t*)&cgen_var_991, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012547 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012548 }
12549 uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12550 countingStream->rewind();
12551 uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR;
12552 stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
12553 stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012554 uint64_t cgen_var_992;
12555 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_992, 1);
12556 stream->write((uint64_t*)&cgen_var_992, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012557 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012558}
12559
12560void VkEncoder::vkCmdDispatchBaseKHR(
12561 VkCommandBuffer commandBuffer,
12562 uint32_t baseGroupX,
12563 uint32_t baseGroupY,
12564 uint32_t baseGroupZ,
12565 uint32_t groupCountX,
12566 uint32_t groupCountY,
12567 uint32_t groupCountZ)
12568{
12569 auto stream = mImpl->stream();
12570 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012571 auto resources = mImpl->resources();
12572 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012573 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012574 VkCommandBuffer local_commandBuffer;
12575 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012576 uint32_t local_baseGroupX;
12577 local_baseGroupX = baseGroupX;
12578 uint32_t local_baseGroupY;
12579 local_baseGroupY = baseGroupY;
12580 uint32_t local_baseGroupZ;
12581 local_baseGroupZ = baseGroupZ;
12582 uint32_t local_groupCountX;
12583 local_groupCountX = groupCountX;
12584 uint32_t local_groupCountY;
12585 local_groupCountY = groupCountY;
12586 uint32_t local_groupCountZ;
12587 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012588 countingStream->rewind();
12589 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012590 uint64_t cgen_var_993;
12591 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_993, 1);
12592 countingStream->write((uint64_t*)&cgen_var_993, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012593 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
12594 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
12595 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
12596 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
12597 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
12598 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012599 }
12600 uint32_t packetSize_vkCmdDispatchBaseKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12601 countingStream->rewind();
12602 uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR;
12603 stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t));
12604 stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012605 uint64_t cgen_var_994;
12606 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_994, 1);
12607 stream->write((uint64_t*)&cgen_var_994, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012608 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
12609 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
12610 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
12611 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
12612 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
12613 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012614}
12615
12616#endif
12617#ifdef VK_KHR_shader_draw_parameters
12618#endif
12619#ifdef VK_KHR_maintenance1
12620void VkEncoder::vkTrimCommandPoolKHR(
12621 VkDevice device,
12622 VkCommandPool commandPool,
12623 VkCommandPoolTrimFlags flags)
12624{
12625 auto stream = mImpl->stream();
12626 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012627 auto resources = mImpl->resources();
12628 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012629 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012630 VkDevice local_device;
12631 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012632 VkCommandPool local_commandPool;
12633 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012634 VkCommandPoolTrimFlags local_flags;
12635 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012636 countingStream->rewind();
12637 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012638 uint64_t cgen_var_995;
12639 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_995, 1);
12640 countingStream->write((uint64_t*)&cgen_var_995, 1 * 8);
12641 uint64_t cgen_var_996;
12642 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_996, 1);
12643 countingStream->write((uint64_t*)&cgen_var_996, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012644 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012645 }
12646 uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12647 countingStream->rewind();
12648 uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR;
12649 stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t));
12650 stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012651 uint64_t cgen_var_997;
12652 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_997, 1);
12653 stream->write((uint64_t*)&cgen_var_997, 1 * 8);
12654 uint64_t cgen_var_998;
12655 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_998, 1);
12656 stream->write((uint64_t*)&cgen_var_998, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012657 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012658}
12659
12660#endif
12661#ifdef VK_KHR_device_group_creation
12662VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR(
12663 VkInstance instance,
12664 uint32_t* pPhysicalDeviceGroupCount,
12665 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
12666{
12667 auto stream = mImpl->stream();
12668 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012669 auto resources = mImpl->resources();
12670 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012671 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012672 VkInstance local_instance;
12673 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012674 countingStream->rewind();
12675 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012676 uint64_t cgen_var_999;
12677 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_999, 1);
12678 countingStream->write((uint64_t*)&cgen_var_999, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012679 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012680 uint64_t cgen_var_1000 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
12681 countingStream->putBe64(cgen_var_1000);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012682 if (pPhysicalDeviceGroupCount)
12683 {
12684 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12685 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012686 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012687 uint64_t cgen_var_1001 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
12688 countingStream->putBe64(cgen_var_1001);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012689 if (pPhysicalDeviceGroupProperties)
12690 {
12691 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12692 {
12693 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12694 }
12695 }
12696 }
12697 uint32_t packetSize_vkEnumeratePhysicalDeviceGroupsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12698 countingStream->rewind();
12699 uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR;
12700 stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
12701 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012702 uint64_t cgen_var_1002;
12703 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1002, 1);
12704 stream->write((uint64_t*)&cgen_var_1002, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012705 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012706 uint64_t cgen_var_1003 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
12707 stream->putBe64(cgen_var_1003);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012708 if (pPhysicalDeviceGroupCount)
12709 {
12710 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12711 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012712 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012713 uint64_t cgen_var_1004 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
12714 stream->putBe64(cgen_var_1004);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012715 if (pPhysicalDeviceGroupProperties)
12716 {
12717 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12718 {
12719 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12720 }
12721 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012722 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012723 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012724 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012725 if (pPhysicalDeviceGroupCount)
12726 {
12727 if (!(check_pPhysicalDeviceGroupCount))
12728 {
12729 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
12730 }
12731 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12732 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012733 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012734 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012735 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012736 if (pPhysicalDeviceGroupProperties)
12737 {
12738 if (!(check_pPhysicalDeviceGroupProperties))
12739 {
12740 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
12741 }
12742 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12743 {
12744 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12745 }
12746 }
12747 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
12748 stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012749 countingStream->clearPool();
12750 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012751 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012752 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
12753}
12754
12755#endif
12756#ifdef VK_KHR_external_memory_capabilities
12757void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR(
12758 VkPhysicalDevice physicalDevice,
12759 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
12760 VkExternalBufferProperties* pExternalBufferProperties)
12761{
12762 auto stream = mImpl->stream();
12763 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012764 auto resources = mImpl->resources();
12765 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012766 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012767 VkPhysicalDevice local_physicalDevice;
12768 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012769 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
12770 local_pExternalBufferInfo = nullptr;
12771 if (pExternalBufferInfo)
12772 {
12773 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
12774 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
12775 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012776 countingStream->rewind();
12777 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012778 uint64_t cgen_var_1007;
12779 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1007, 1);
12780 countingStream->write((uint64_t*)&cgen_var_1007, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012781 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012782 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12783 }
12784 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12785 countingStream->rewind();
12786 uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
12787 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
12788 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012789 uint64_t cgen_var_1008;
12790 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1008, 1);
12791 stream->write((uint64_t*)&cgen_var_1008, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012792 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012793 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12794 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12795}
12796
12797#endif
12798#ifdef VK_KHR_external_memory
12799#endif
12800#ifdef VK_KHR_external_memory_win32
12801VkResult VkEncoder::vkGetMemoryWin32HandleKHR(
12802 VkDevice device,
12803 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
12804 HANDLE* pHandle)
12805{
12806 auto stream = mImpl->stream();
12807 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012808 auto resources = mImpl->resources();
12809 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012810 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012811 VkDevice local_device;
12812 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012813 VkMemoryGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
12814 local_pGetWin32HandleInfo = nullptr;
12815 if (pGetWin32HandleInfo)
12816 {
12817 local_pGetWin32HandleInfo = (VkMemoryGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkMemoryGetWin32HandleInfoKHR));
12818 deepcopy_VkMemoryGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
12819 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012820 countingStream->rewind();
12821 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012822 uint64_t cgen_var_1009;
12823 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1009, 1);
12824 countingStream->write((uint64_t*)&cgen_var_1009, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012825 marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012826 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
12827 }
12828 uint32_t packetSize_vkGetMemoryWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12829 countingStream->rewind();
12830 uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR;
12831 stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
12832 stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012833 uint64_t cgen_var_1010;
12834 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1010, 1);
12835 stream->write((uint64_t*)&cgen_var_1010, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012836 marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012837 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
12838 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
12839 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
12840 stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012841 countingStream->clearPool();
12842 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012843 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012844 return vkGetMemoryWin32HandleKHR_VkResult_return;
12845}
12846
12847VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR(
12848 VkDevice device,
12849 VkExternalMemoryHandleTypeFlagBits handleType,
12850 HANDLE handle,
12851 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
12852{
12853 auto stream = mImpl->stream();
12854 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012855 auto resources = mImpl->resources();
12856 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012857 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012858 VkDevice local_device;
12859 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012860 VkExternalMemoryHandleTypeFlagBits local_handleType;
12861 local_handleType = handleType;
12862 HANDLE local_handle;
12863 local_handle = handle;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012864 countingStream->rewind();
12865 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012866 uint64_t cgen_var_1011;
12867 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1011, 1);
12868 countingStream->write((uint64_t*)&cgen_var_1011, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012869 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12870 countingStream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012871 marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12872 }
12873 uint32_t packetSize_vkGetMemoryWin32HandlePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12874 countingStream->rewind();
12875 uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR;
12876 stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
12877 stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012878 uint64_t cgen_var_1012;
12879 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1012, 1);
12880 stream->write((uint64_t*)&cgen_var_1012, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012881 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12882 stream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012883 marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12884 unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12885 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
12886 stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012887 countingStream->clearPool();
12888 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012889 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012890 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
12891}
12892
12893#endif
12894#ifdef VK_KHR_external_memory_fd
12895VkResult VkEncoder::vkGetMemoryFdKHR(
12896 VkDevice device,
12897 const VkMemoryGetFdInfoKHR* pGetFdInfo,
12898 int* pFd)
12899{
12900 auto stream = mImpl->stream();
12901 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012902 auto resources = mImpl->resources();
12903 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012904 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012905 VkDevice local_device;
12906 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012907 VkMemoryGetFdInfoKHR* local_pGetFdInfo;
12908 local_pGetFdInfo = nullptr;
12909 if (pGetFdInfo)
12910 {
12911 local_pGetFdInfo = (VkMemoryGetFdInfoKHR*)pool->alloc(sizeof(const VkMemoryGetFdInfoKHR));
12912 deepcopy_VkMemoryGetFdInfoKHR(pool, pGetFdInfo, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
12913 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012914 countingStream->rewind();
12915 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012916 uint64_t cgen_var_1013;
12917 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1013, 1);
12918 countingStream->write((uint64_t*)&cgen_var_1013, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012919 marshal_VkMemoryGetFdInfoKHR(countingStream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012920 countingStream->write((int*)pFd, sizeof(int));
12921 }
12922 uint32_t packetSize_vkGetMemoryFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12923 countingStream->rewind();
12924 uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR;
12925 stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t));
12926 stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012927 uint64_t cgen_var_1014;
12928 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1014, 1);
12929 stream->write((uint64_t*)&cgen_var_1014, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012930 marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012931 stream->write((int*)pFd, sizeof(int));
12932 stream->read((int*)pFd, sizeof(int));
12933 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
12934 stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012935 countingStream->clearPool();
12936 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012937 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012938 return vkGetMemoryFdKHR_VkResult_return;
12939}
12940
12941VkResult VkEncoder::vkGetMemoryFdPropertiesKHR(
12942 VkDevice device,
12943 VkExternalMemoryHandleTypeFlagBits handleType,
12944 int fd,
12945 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
12946{
12947 auto stream = mImpl->stream();
12948 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012949 auto resources = mImpl->resources();
12950 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012951 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012952 VkDevice local_device;
12953 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012954 VkExternalMemoryHandleTypeFlagBits local_handleType;
12955 local_handleType = handleType;
12956 int local_fd;
12957 local_fd = fd;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012958 countingStream->rewind();
12959 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012960 uint64_t cgen_var_1015;
12961 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1015, 1);
12962 countingStream->write((uint64_t*)&cgen_var_1015, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012963 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12964 countingStream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012965 marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
12966 }
12967 uint32_t packetSize_vkGetMemoryFdPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12968 countingStream->rewind();
12969 uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR;
12970 stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
12971 stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012972 uint64_t cgen_var_1016;
12973 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1016, 1);
12974 stream->write((uint64_t*)&cgen_var_1016, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012975 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12976 stream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012977 marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
12978 unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
12979 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
12980 stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012981 countingStream->clearPool();
12982 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012983 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012984 return vkGetMemoryFdPropertiesKHR_VkResult_return;
12985}
12986
12987#endif
12988#ifdef VK_KHR_win32_keyed_mutex
12989#endif
12990#ifdef VK_KHR_external_semaphore_capabilities
12991void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
12992 VkPhysicalDevice physicalDevice,
12993 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
12994 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
12995{
12996 auto stream = mImpl->stream();
12997 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012998 auto resources = mImpl->resources();
12999 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013000 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013001 VkPhysicalDevice local_physicalDevice;
13002 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013003 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
13004 local_pExternalSemaphoreInfo = nullptr;
13005 if (pExternalSemaphoreInfo)
13006 {
13007 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
13008 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
13009 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013010 countingStream->rewind();
13011 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013012 uint64_t cgen_var_1017;
13013 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1017, 1);
13014 countingStream->write((uint64_t*)&cgen_var_1017, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013015 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013016 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13017 }
13018 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13019 countingStream->rewind();
13020 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
13021 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
13022 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013023 uint64_t cgen_var_1018;
13024 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1018, 1);
13025 stream->write((uint64_t*)&cgen_var_1018, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013026 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013027 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13028 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13029}
13030
13031#endif
13032#ifdef VK_KHR_external_semaphore
13033#endif
13034#ifdef VK_KHR_external_semaphore_win32
13035VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR(
13036 VkDevice device,
13037 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
13038{
13039 auto stream = mImpl->stream();
13040 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013041 auto resources = mImpl->resources();
13042 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013043 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013044 VkDevice local_device;
13045 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013046 VkImportSemaphoreWin32HandleInfoKHR* local_pImportSemaphoreWin32HandleInfo;
13047 local_pImportSemaphoreWin32HandleInfo = nullptr;
13048 if (pImportSemaphoreWin32HandleInfo)
13049 {
13050 local_pImportSemaphoreWin32HandleInfo = (VkImportSemaphoreWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreWin32HandleInfoKHR));
13051 deepcopy_VkImportSemaphoreWin32HandleInfoKHR(pool, pImportSemaphoreWin32HandleInfo, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
13052 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013053 countingStream->rewind();
13054 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013055 uint64_t cgen_var_1019;
13056 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1019, 1);
13057 countingStream->write((uint64_t*)&cgen_var_1019, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013058 marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013059 }
13060 uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13061 countingStream->rewind();
13062 uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR;
13063 stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
13064 stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013065 uint64_t cgen_var_1020;
13066 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1020, 1);
13067 stream->write((uint64_t*)&cgen_var_1020, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013068 marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013069 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
13070 stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013071 countingStream->clearPool();
13072 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013073 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013074 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
13075}
13076
13077VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR(
13078 VkDevice device,
13079 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
13080 HANDLE* pHandle)
13081{
13082 auto stream = mImpl->stream();
13083 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013084 auto resources = mImpl->resources();
13085 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013086 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013087 VkDevice local_device;
13088 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013089 VkSemaphoreGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
13090 local_pGetWin32HandleInfo = nullptr;
13091 if (pGetWin32HandleInfo)
13092 {
13093 local_pGetWin32HandleInfo = (VkSemaphoreGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetWin32HandleInfoKHR));
13094 deepcopy_VkSemaphoreGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
13095 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013096 countingStream->rewind();
13097 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013098 uint64_t cgen_var_1021;
13099 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1021, 1);
13100 countingStream->write((uint64_t*)&cgen_var_1021, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013101 marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013102 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
13103 }
13104 uint32_t packetSize_vkGetSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13105 countingStream->rewind();
13106 uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR;
13107 stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
13108 stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013109 uint64_t cgen_var_1022;
13110 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1022, 1);
13111 stream->write((uint64_t*)&cgen_var_1022, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013112 marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013113 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
13114 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
13115 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
13116 stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013117 countingStream->clearPool();
13118 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013119 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013120 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
13121}
13122
13123#endif
13124#ifdef VK_KHR_external_semaphore_fd
13125VkResult VkEncoder::vkImportSemaphoreFdKHR(
13126 VkDevice device,
13127 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
13128{
13129 auto stream = mImpl->stream();
13130 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013131 auto resources = mImpl->resources();
13132 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013133 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013134 VkDevice local_device;
13135 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013136 VkImportSemaphoreFdInfoKHR* local_pImportSemaphoreFdInfo;
13137 local_pImportSemaphoreFdInfo = nullptr;
13138 if (pImportSemaphoreFdInfo)
13139 {
13140 local_pImportSemaphoreFdInfo = (VkImportSemaphoreFdInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreFdInfoKHR));
13141 deepcopy_VkImportSemaphoreFdInfoKHR(pool, pImportSemaphoreFdInfo, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
13142 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013143 countingStream->rewind();
13144 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013145 uint64_t cgen_var_1023;
13146 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1023, 1);
13147 countingStream->write((uint64_t*)&cgen_var_1023, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013148 marshal_VkImportSemaphoreFdInfoKHR(countingStream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013149 }
13150 uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13151 countingStream->rewind();
13152 uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR;
13153 stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t));
13154 stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013155 uint64_t cgen_var_1024;
13156 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1024, 1);
13157 stream->write((uint64_t*)&cgen_var_1024, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013158 marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013159 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
13160 stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013161 countingStream->clearPool();
13162 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013163 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013164 return vkImportSemaphoreFdKHR_VkResult_return;
13165}
13166
13167VkResult VkEncoder::vkGetSemaphoreFdKHR(
13168 VkDevice device,
13169 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
13170 int* pFd)
13171{
13172 auto stream = mImpl->stream();
13173 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013174 auto resources = mImpl->resources();
13175 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013176 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013177 VkDevice local_device;
13178 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013179 VkSemaphoreGetFdInfoKHR* local_pGetFdInfo;
13180 local_pGetFdInfo = nullptr;
13181 if (pGetFdInfo)
13182 {
13183 local_pGetFdInfo = (VkSemaphoreGetFdInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetFdInfoKHR));
13184 deepcopy_VkSemaphoreGetFdInfoKHR(pool, pGetFdInfo, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
13185 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013186 countingStream->rewind();
13187 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013188 uint64_t cgen_var_1025;
13189 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1025, 1);
13190 countingStream->write((uint64_t*)&cgen_var_1025, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013191 marshal_VkSemaphoreGetFdInfoKHR(countingStream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013192 countingStream->write((int*)pFd, sizeof(int));
13193 }
13194 uint32_t packetSize_vkGetSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13195 countingStream->rewind();
13196 uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR;
13197 stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t));
13198 stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013199 uint64_t cgen_var_1026;
13200 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1026, 1);
13201 stream->write((uint64_t*)&cgen_var_1026, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013202 marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013203 stream->write((int*)pFd, sizeof(int));
13204 stream->read((int*)pFd, sizeof(int));
13205 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
13206 stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013207 countingStream->clearPool();
13208 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013209 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013210 return vkGetSemaphoreFdKHR_VkResult_return;
13211}
13212
13213#endif
13214#ifdef VK_KHR_push_descriptor
13215void VkEncoder::vkCmdPushDescriptorSetKHR(
13216 VkCommandBuffer commandBuffer,
13217 VkPipelineBindPoint pipelineBindPoint,
13218 VkPipelineLayout layout,
13219 uint32_t set,
13220 uint32_t descriptorWriteCount,
13221 const VkWriteDescriptorSet* pDescriptorWrites)
13222{
13223 auto stream = mImpl->stream();
13224 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013225 auto resources = mImpl->resources();
13226 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013227 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013228 VkCommandBuffer local_commandBuffer;
13229 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013230 VkPipelineBindPoint local_pipelineBindPoint;
13231 local_pipelineBindPoint = pipelineBindPoint;
13232 VkPipelineLayout local_layout;
13233 local_layout = layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013234 uint32_t local_set;
13235 local_set = set;
13236 uint32_t local_descriptorWriteCount;
13237 local_descriptorWriteCount = descriptorWriteCount;
13238 VkWriteDescriptorSet* local_pDescriptorWrites;
13239 local_pDescriptorWrites = nullptr;
13240 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013241 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013242 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013243 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13244 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013245 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
13246 }
13247 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013248 countingStream->rewind();
13249 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013250 uint64_t cgen_var_1027;
13251 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1027, 1);
13252 countingStream->write((uint64_t*)&cgen_var_1027, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013253 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013254 uint64_t cgen_var_1028;
13255 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1028, 1);
13256 countingStream->write((uint64_t*)&cgen_var_1028, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013257 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
13258 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
13259 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13260 {
13261 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013262 }
13263 }
13264 uint32_t packetSize_vkCmdPushDescriptorSetKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13265 countingStream->rewind();
13266 uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR;
13267 stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
13268 stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013269 uint64_t cgen_var_1029;
13270 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1029, 1);
13271 stream->write((uint64_t*)&cgen_var_1029, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013272 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013273 uint64_t cgen_var_1030;
13274 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1030, 1);
13275 stream->write((uint64_t*)&cgen_var_1030, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013276 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
13277 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013278 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13279 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013280 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013281 }
13282}
13283
13284void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR(
13285 VkCommandBuffer commandBuffer,
13286 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13287 VkPipelineLayout layout,
13288 uint32_t set,
13289 const void* pData)
13290{
13291 auto stream = mImpl->stream();
13292 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013293 auto resources = mImpl->resources();
13294 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013295 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013296 VkCommandBuffer local_commandBuffer;
13297 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013298 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
13299 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013300 VkPipelineLayout local_layout;
13301 local_layout = layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013302 uint32_t local_set;
13303 local_set = set;
13304 void* local_pData;
13305 local_pData = nullptr;
13306 if (pData)
13307 {
13308 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
13309 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013310 countingStream->rewind();
13311 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013312 uint64_t cgen_var_1031;
13313 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1031, 1);
13314 countingStream->write((uint64_t*)&cgen_var_1031, 1 * 8);
13315 uint64_t cgen_var_1032;
13316 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1032, 1);
13317 countingStream->write((uint64_t*)&cgen_var_1032, 1 * 8);
13318 uint64_t cgen_var_1033;
13319 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1033, 1);
13320 countingStream->write((uint64_t*)&cgen_var_1033, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013321 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013322 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013323 uint64_t cgen_var_1034 = (uint64_t)(uintptr_t)local_pData;
13324 countingStream->putBe64(cgen_var_1034);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013325 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013326 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013327 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013328 }
13329 }
13330 uint32_t packetSize_vkCmdPushDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13331 countingStream->rewind();
13332 uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR;
13333 stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
13334 stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013335 uint64_t cgen_var_1035;
13336 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1035, 1);
13337 stream->write((uint64_t*)&cgen_var_1035, 1 * 8);
13338 uint64_t cgen_var_1036;
13339 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1036, 1);
13340 stream->write((uint64_t*)&cgen_var_1036, 1 * 8);
13341 uint64_t cgen_var_1037;
13342 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1037, 1);
13343 stream->write((uint64_t*)&cgen_var_1037, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013344 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013345 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013346 uint64_t cgen_var_1038 = (uint64_t)(uintptr_t)local_pData;
13347 stream->putBe64(cgen_var_1038);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013348 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013349 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013350 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013351 }
13352}
13353
13354#endif
13355#ifdef VK_KHR_16bit_storage
13356#endif
13357#ifdef VK_KHR_incremental_present
13358#endif
13359#ifdef VK_KHR_descriptor_update_template
13360VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR(
13361 VkDevice device,
13362 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
13363 const VkAllocationCallbacks* pAllocator,
13364 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
13365{
13366 auto stream = mImpl->stream();
13367 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013368 auto resources = mImpl->resources();
13369 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013370 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013371 VkDevice local_device;
13372 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013373 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
13374 local_pCreateInfo = nullptr;
13375 if (pCreateInfo)
13376 {
13377 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
13378 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
13379 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013380 VkAllocationCallbacks* local_pAllocator;
13381 local_pAllocator = nullptr;
13382 if (pAllocator)
13383 {
13384 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13385 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13386 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013387 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013388 countingStream->rewind();
13389 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013390 uint64_t cgen_var_1039;
13391 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1039, 1);
13392 countingStream->write((uint64_t*)&cgen_var_1039, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013393 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013394 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013395 uint64_t cgen_var_1040 = (uint64_t)(uintptr_t)local_pAllocator;
13396 countingStream->putBe64(cgen_var_1040);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013397 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013398 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013399 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013400 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013401 uint64_t cgen_var_1041;
13402 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1041, 1);
13403 countingStream->write((uint64_t*)&cgen_var_1041, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013404 }
13405 uint32_t packetSize_vkCreateDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13406 countingStream->rewind();
13407 uint32_t opcode_vkCreateDescriptorUpdateTemplateKHR = OP_vkCreateDescriptorUpdateTemplateKHR;
13408 stream->write(&opcode_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
13409 stream->write(&packetSize_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013410 uint64_t cgen_var_1042;
13411 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1042, 1);
13412 stream->write((uint64_t*)&cgen_var_1042, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013413 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013414 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013415 uint64_t cgen_var_1043 = (uint64_t)(uintptr_t)local_pAllocator;
13416 stream->putBe64(cgen_var_1043);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013417 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013418 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013419 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013420 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013421 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013422 uint64_t cgen_var_1044;
13423 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1044, 1);
13424 stream->write((uint64_t*)&cgen_var_1044, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013425 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013426 uint64_t cgen_var_1045;
13427 stream->read((uint64_t*)&cgen_var_1045, 8);
13428 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1045, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013429 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
13430 stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013431 countingStream->clearPool();
13432 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013433 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013434 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
13435}
13436
13437void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR(
13438 VkDevice device,
13439 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13440 const VkAllocationCallbacks* pAllocator)
13441{
13442 auto stream = mImpl->stream();
13443 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013444 auto resources = mImpl->resources();
13445 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013446 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013447 VkDevice local_device;
13448 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013449 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
13450 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013451 VkAllocationCallbacks* local_pAllocator;
13452 local_pAllocator = nullptr;
13453 if (pAllocator)
13454 {
13455 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13456 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13457 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013458 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013459 countingStream->rewind();
13460 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013461 uint64_t cgen_var_1046;
13462 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1046, 1);
13463 countingStream->write((uint64_t*)&cgen_var_1046, 1 * 8);
13464 uint64_t cgen_var_1047;
13465 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1047, 1);
13466 countingStream->write((uint64_t*)&cgen_var_1047, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013467 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013468 uint64_t cgen_var_1048 = (uint64_t)(uintptr_t)local_pAllocator;
13469 countingStream->putBe64(cgen_var_1048);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013470 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013471 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013472 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013473 }
13474 }
13475 uint32_t packetSize_vkDestroyDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13476 countingStream->rewind();
13477 uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR;
13478 stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
13479 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013480 uint64_t cgen_var_1049;
13481 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1049, 1);
13482 stream->write((uint64_t*)&cgen_var_1049, 1 * 8);
13483 uint64_t cgen_var_1050;
13484 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1050, 1);
13485 stream->write((uint64_t*)&cgen_var_1050, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013486 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013487 uint64_t cgen_var_1051 = (uint64_t)(uintptr_t)local_pAllocator;
13488 stream->putBe64(cgen_var_1051);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013489 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013490 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013491 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013492 }
13493}
13494
13495void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR(
13496 VkDevice device,
13497 VkDescriptorSet descriptorSet,
13498 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13499 const void* pData)
13500{
13501 auto stream = mImpl->stream();
13502 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013503 auto resources = mImpl->resources();
13504 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013505 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013506 VkDevice local_device;
13507 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013508 VkDescriptorSet local_descriptorSet;
13509 local_descriptorSet = descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013510 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
13511 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013512 void* local_pData;
13513 local_pData = nullptr;
13514 if (pData)
13515 {
13516 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
13517 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013518 countingStream->rewind();
13519 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013520 uint64_t cgen_var_1052;
13521 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1052, 1);
13522 countingStream->write((uint64_t*)&cgen_var_1052, 1 * 8);
13523 uint64_t cgen_var_1053;
13524 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1053, 1);
13525 countingStream->write((uint64_t*)&cgen_var_1053, 1 * 8);
13526 uint64_t cgen_var_1054;
13527 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1054, 1);
13528 countingStream->write((uint64_t*)&cgen_var_1054, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013529 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013530 uint64_t cgen_var_1055 = (uint64_t)(uintptr_t)local_pData;
13531 countingStream->putBe64(cgen_var_1055);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013532 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013533 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013534 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013535 }
13536 }
13537 uint32_t packetSize_vkUpdateDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13538 countingStream->rewind();
13539 uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR;
13540 stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
13541 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013542 uint64_t cgen_var_1056;
13543 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1056, 1);
13544 stream->write((uint64_t*)&cgen_var_1056, 1 * 8);
13545 uint64_t cgen_var_1057;
13546 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1057, 1);
13547 stream->write((uint64_t*)&cgen_var_1057, 1 * 8);
13548 uint64_t cgen_var_1058;
13549 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1058, 1);
13550 stream->write((uint64_t*)&cgen_var_1058, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013551 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013552 uint64_t cgen_var_1059 = (uint64_t)(uintptr_t)local_pData;
13553 stream->putBe64(cgen_var_1059);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013554 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013555 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013556 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013557 }
13558}
13559
13560#endif
13561#ifdef VK_KHR_create_renderpass2
13562VkResult VkEncoder::vkCreateRenderPass2KHR(
13563 VkDevice device,
13564 const VkRenderPassCreateInfo2KHR* pCreateInfo,
13565 const VkAllocationCallbacks* pAllocator,
13566 VkRenderPass* pRenderPass)
13567{
13568 auto stream = mImpl->stream();
13569 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013570 auto resources = mImpl->resources();
13571 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013572 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013573 VkDevice local_device;
13574 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013575 VkRenderPassCreateInfo2KHR* local_pCreateInfo;
13576 local_pCreateInfo = nullptr;
13577 if (pCreateInfo)
13578 {
13579 local_pCreateInfo = (VkRenderPassCreateInfo2KHR*)pool->alloc(sizeof(const VkRenderPassCreateInfo2KHR));
13580 deepcopy_VkRenderPassCreateInfo2KHR(pool, pCreateInfo, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
13581 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013582 VkAllocationCallbacks* local_pAllocator;
13583 local_pAllocator = nullptr;
13584 if (pAllocator)
13585 {
13586 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13587 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13588 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013589 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013590 countingStream->rewind();
13591 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013592 uint64_t cgen_var_1060;
13593 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1060, 1);
13594 countingStream->write((uint64_t*)&cgen_var_1060, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013595 marshal_VkRenderPassCreateInfo2KHR(countingStream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013596 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013597 uint64_t cgen_var_1061 = (uint64_t)(uintptr_t)local_pAllocator;
13598 countingStream->putBe64(cgen_var_1061);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013599 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013600 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013601 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013602 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013603 uint64_t cgen_var_1062;
13604 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1062, 1);
13605 countingStream->write((uint64_t*)&cgen_var_1062, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013606 }
13607 uint32_t packetSize_vkCreateRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13608 countingStream->rewind();
13609 uint32_t opcode_vkCreateRenderPass2KHR = OP_vkCreateRenderPass2KHR;
13610 stream->write(&opcode_vkCreateRenderPass2KHR, sizeof(uint32_t));
13611 stream->write(&packetSize_vkCreateRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013612 uint64_t cgen_var_1063;
13613 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1063, 1);
13614 stream->write((uint64_t*)&cgen_var_1063, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013615 marshal_VkRenderPassCreateInfo2KHR(stream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013616 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013617 uint64_t cgen_var_1064 = (uint64_t)(uintptr_t)local_pAllocator;
13618 stream->putBe64(cgen_var_1064);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013619 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013620 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013621 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013622 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013623 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013624 uint64_t cgen_var_1065;
13625 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1065, 1);
13626 stream->write((uint64_t*)&cgen_var_1065, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013627 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013628 uint64_t cgen_var_1066;
13629 stream->read((uint64_t*)&cgen_var_1066, 8);
13630 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1066, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013631 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
13632 stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013633 countingStream->clearPool();
13634 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013635 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013636 return vkCreateRenderPass2KHR_VkResult_return;
13637}
13638
13639void VkEncoder::vkCmdBeginRenderPass2KHR(
13640 VkCommandBuffer commandBuffer,
13641 const VkRenderPassBeginInfo* pRenderPassBegin,
13642 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
13643{
13644 auto stream = mImpl->stream();
13645 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013646 auto resources = mImpl->resources();
13647 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013648 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013649 VkCommandBuffer local_commandBuffer;
13650 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013651 VkRenderPassBeginInfo* local_pRenderPassBegin;
13652 local_pRenderPassBegin = nullptr;
13653 if (pRenderPassBegin)
13654 {
13655 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
13656 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13657 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013658 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
13659 local_pSubpassBeginInfo = nullptr;
13660 if (pSubpassBeginInfo)
13661 {
13662 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
13663 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13664 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013665 countingStream->rewind();
13666 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013667 uint64_t cgen_var_1067;
13668 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1067, 1);
13669 countingStream->write((uint64_t*)&cgen_var_1067, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013670 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13671 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013672 }
13673 uint32_t packetSize_vkCmdBeginRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13674 countingStream->rewind();
13675 uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR;
13676 stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
13677 stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013678 uint64_t cgen_var_1068;
13679 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1068, 1);
13680 stream->write((uint64_t*)&cgen_var_1068, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013681 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13682 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013683}
13684
13685void VkEncoder::vkCmdNextSubpass2KHR(
13686 VkCommandBuffer commandBuffer,
13687 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
13688 const VkSubpassEndInfoKHR* pSubpassEndInfo)
13689{
13690 auto stream = mImpl->stream();
13691 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013692 auto resources = mImpl->resources();
13693 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013694 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013695 VkCommandBuffer local_commandBuffer;
13696 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013697 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
13698 local_pSubpassBeginInfo = nullptr;
13699 if (pSubpassBeginInfo)
13700 {
13701 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
13702 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13703 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013704 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
13705 local_pSubpassEndInfo = nullptr;
13706 if (pSubpassEndInfo)
13707 {
13708 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
13709 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
13710 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013711 countingStream->rewind();
13712 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013713 uint64_t cgen_var_1069;
13714 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1069, 1);
13715 countingStream->write((uint64_t*)&cgen_var_1069, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013716 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13717 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013718 }
13719 uint32_t packetSize_vkCmdNextSubpass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13720 countingStream->rewind();
13721 uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR;
13722 stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t));
13723 stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013724 uint64_t cgen_var_1070;
13725 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1070, 1);
13726 stream->write((uint64_t*)&cgen_var_1070, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013727 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13728 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013729}
13730
13731void VkEncoder::vkCmdEndRenderPass2KHR(
13732 VkCommandBuffer commandBuffer,
13733 const VkSubpassEndInfoKHR* pSubpassEndInfo)
13734{
13735 auto stream = mImpl->stream();
13736 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013737 auto resources = mImpl->resources();
13738 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013739 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013740 VkCommandBuffer local_commandBuffer;
13741 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013742 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
13743 local_pSubpassEndInfo = nullptr;
13744 if (pSubpassEndInfo)
13745 {
13746 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
13747 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
13748 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013749 countingStream->rewind();
13750 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013751 uint64_t cgen_var_1071;
13752 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1071, 1);
13753 countingStream->write((uint64_t*)&cgen_var_1071, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013754 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013755 }
13756 uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13757 countingStream->rewind();
13758 uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR;
13759 stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
13760 stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013761 uint64_t cgen_var_1072;
13762 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1072, 1);
13763 stream->write((uint64_t*)&cgen_var_1072, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013764 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013765}
13766
13767#endif
13768#ifdef VK_KHR_shared_presentable_image
13769VkResult VkEncoder::vkGetSwapchainStatusKHR(
13770 VkDevice device,
13771 VkSwapchainKHR swapchain)
13772{
13773 auto stream = mImpl->stream();
13774 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013775 auto resources = mImpl->resources();
13776 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013777 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013778 VkDevice local_device;
13779 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013780 VkSwapchainKHR local_swapchain;
13781 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013782 countingStream->rewind();
13783 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013784 uint64_t cgen_var_1073;
13785 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1073, 1);
13786 countingStream->write((uint64_t*)&cgen_var_1073, 1 * 8);
13787 uint64_t cgen_var_1074;
13788 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1074, 1);
13789 countingStream->write((uint64_t*)&cgen_var_1074, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013790 }
13791 uint32_t packetSize_vkGetSwapchainStatusKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13792 countingStream->rewind();
13793 uint32_t opcode_vkGetSwapchainStatusKHR = OP_vkGetSwapchainStatusKHR;
13794 stream->write(&opcode_vkGetSwapchainStatusKHR, sizeof(uint32_t));
13795 stream->write(&packetSize_vkGetSwapchainStatusKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013796 uint64_t cgen_var_1075;
13797 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1075, 1);
13798 stream->write((uint64_t*)&cgen_var_1075, 1 * 8);
13799 uint64_t cgen_var_1076;
13800 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1076, 1);
13801 stream->write((uint64_t*)&cgen_var_1076, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013802 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
13803 stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013804 countingStream->clearPool();
13805 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013806 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013807 return vkGetSwapchainStatusKHR_VkResult_return;
13808}
13809
13810#endif
13811#ifdef VK_KHR_external_fence_capabilities
13812void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR(
13813 VkPhysicalDevice physicalDevice,
13814 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
13815 VkExternalFenceProperties* pExternalFenceProperties)
13816{
13817 auto stream = mImpl->stream();
13818 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013819 auto resources = mImpl->resources();
13820 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013821 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013822 VkPhysicalDevice local_physicalDevice;
13823 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013824 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
13825 local_pExternalFenceInfo = nullptr;
13826 if (pExternalFenceInfo)
13827 {
13828 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
13829 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
13830 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013831 countingStream->rewind();
13832 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013833 uint64_t cgen_var_1077;
13834 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1077, 1);
13835 countingStream->write((uint64_t*)&cgen_var_1077, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013836 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013837 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13838 }
13839 uint32_t packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13840 countingStream->rewind();
13841 uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
13842 stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
13843 stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013844 uint64_t cgen_var_1078;
13845 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1078, 1);
13846 stream->write((uint64_t*)&cgen_var_1078, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013847 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013848 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13849 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13850}
13851
13852#endif
13853#ifdef VK_KHR_external_fence
13854#endif
13855#ifdef VK_KHR_external_fence_win32
13856VkResult VkEncoder::vkImportFenceWin32HandleKHR(
13857 VkDevice device,
13858 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
13859{
13860 auto stream = mImpl->stream();
13861 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013862 auto resources = mImpl->resources();
13863 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013864 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013865 VkDevice local_device;
13866 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013867 VkImportFenceWin32HandleInfoKHR* local_pImportFenceWin32HandleInfo;
13868 local_pImportFenceWin32HandleInfo = nullptr;
13869 if (pImportFenceWin32HandleInfo)
13870 {
13871 local_pImportFenceWin32HandleInfo = (VkImportFenceWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportFenceWin32HandleInfoKHR));
13872 deepcopy_VkImportFenceWin32HandleInfoKHR(pool, pImportFenceWin32HandleInfo, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
13873 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013874 countingStream->rewind();
13875 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013876 uint64_t cgen_var_1079;
13877 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1079, 1);
13878 countingStream->write((uint64_t*)&cgen_var_1079, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013879 marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013880 }
13881 uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13882 countingStream->rewind();
13883 uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR;
13884 stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
13885 stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013886 uint64_t cgen_var_1080;
13887 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1080, 1);
13888 stream->write((uint64_t*)&cgen_var_1080, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013889 marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013890 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
13891 stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013892 countingStream->clearPool();
13893 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013894 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013895 return vkImportFenceWin32HandleKHR_VkResult_return;
13896}
13897
13898VkResult VkEncoder::vkGetFenceWin32HandleKHR(
13899 VkDevice device,
13900 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
13901 HANDLE* pHandle)
13902{
13903 auto stream = mImpl->stream();
13904 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013905 auto resources = mImpl->resources();
13906 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013907 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013908 VkDevice local_device;
13909 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013910 VkFenceGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
13911 local_pGetWin32HandleInfo = nullptr;
13912 if (pGetWin32HandleInfo)
13913 {
13914 local_pGetWin32HandleInfo = (VkFenceGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkFenceGetWin32HandleInfoKHR));
13915 deepcopy_VkFenceGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
13916 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013917 countingStream->rewind();
13918 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013919 uint64_t cgen_var_1081;
13920 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1081, 1);
13921 countingStream->write((uint64_t*)&cgen_var_1081, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013922 marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013923 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
13924 }
13925 uint32_t packetSize_vkGetFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13926 countingStream->rewind();
13927 uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR;
13928 stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
13929 stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013930 uint64_t cgen_var_1082;
13931 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1082, 1);
13932 stream->write((uint64_t*)&cgen_var_1082, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013933 marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013934 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
13935 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
13936 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
13937 stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013938 countingStream->clearPool();
13939 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013940 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013941 return vkGetFenceWin32HandleKHR_VkResult_return;
13942}
13943
13944#endif
13945#ifdef VK_KHR_external_fence_fd
13946VkResult VkEncoder::vkImportFenceFdKHR(
13947 VkDevice device,
13948 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
13949{
13950 auto stream = mImpl->stream();
13951 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013952 auto resources = mImpl->resources();
13953 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013954 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013955 VkDevice local_device;
13956 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013957 VkImportFenceFdInfoKHR* local_pImportFenceFdInfo;
13958 local_pImportFenceFdInfo = nullptr;
13959 if (pImportFenceFdInfo)
13960 {
13961 local_pImportFenceFdInfo = (VkImportFenceFdInfoKHR*)pool->alloc(sizeof(const VkImportFenceFdInfoKHR));
13962 deepcopy_VkImportFenceFdInfoKHR(pool, pImportFenceFdInfo, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
13963 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013964 countingStream->rewind();
13965 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013966 uint64_t cgen_var_1083;
13967 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1083, 1);
13968 countingStream->write((uint64_t*)&cgen_var_1083, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013969 marshal_VkImportFenceFdInfoKHR(countingStream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013970 }
13971 uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13972 countingStream->rewind();
13973 uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR;
13974 stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t));
13975 stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013976 uint64_t cgen_var_1084;
13977 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1084, 1);
13978 stream->write((uint64_t*)&cgen_var_1084, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013979 marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013980 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
13981 stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013982 countingStream->clearPool();
13983 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013984 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013985 return vkImportFenceFdKHR_VkResult_return;
13986}
13987
13988VkResult VkEncoder::vkGetFenceFdKHR(
13989 VkDevice device,
13990 const VkFenceGetFdInfoKHR* pGetFdInfo,
13991 int* pFd)
13992{
13993 auto stream = mImpl->stream();
13994 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013995 auto resources = mImpl->resources();
13996 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013997 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013998 VkDevice local_device;
13999 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014000 VkFenceGetFdInfoKHR* local_pGetFdInfo;
14001 local_pGetFdInfo = nullptr;
14002 if (pGetFdInfo)
14003 {
14004 local_pGetFdInfo = (VkFenceGetFdInfoKHR*)pool->alloc(sizeof(const VkFenceGetFdInfoKHR));
14005 deepcopy_VkFenceGetFdInfoKHR(pool, pGetFdInfo, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
14006 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014007 countingStream->rewind();
14008 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014009 uint64_t cgen_var_1085;
14010 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1085, 1);
14011 countingStream->write((uint64_t*)&cgen_var_1085, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014012 marshal_VkFenceGetFdInfoKHR(countingStream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014013 countingStream->write((int*)pFd, sizeof(int));
14014 }
14015 uint32_t packetSize_vkGetFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14016 countingStream->rewind();
14017 uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR;
14018 stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t));
14019 stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014020 uint64_t cgen_var_1086;
14021 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1086, 1);
14022 stream->write((uint64_t*)&cgen_var_1086, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014023 marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014024 stream->write((int*)pFd, sizeof(int));
14025 stream->read((int*)pFd, sizeof(int));
14026 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
14027 stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014028 countingStream->clearPool();
14029 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014030 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014031 return vkGetFenceFdKHR_VkResult_return;
14032}
14033
14034#endif
14035#ifdef VK_KHR_maintenance2
14036#endif
14037#ifdef VK_KHR_get_surface_capabilities2
14038VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR(
14039 VkPhysicalDevice physicalDevice,
14040 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
14041 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
14042{
14043 auto stream = mImpl->stream();
14044 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014045 auto resources = mImpl->resources();
14046 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014047 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014048 VkPhysicalDevice local_physicalDevice;
14049 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014050 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
14051 local_pSurfaceInfo = nullptr;
14052 if (pSurfaceInfo)
14053 {
14054 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
14055 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
14056 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014057 countingStream->rewind();
14058 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014059 uint64_t cgen_var_1087;
14060 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1087, 1);
14061 countingStream->write((uint64_t*)&cgen_var_1087, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014062 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014063 marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14064 }
14065 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14066 countingStream->rewind();
14067 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
14068 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
14069 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014070 uint64_t cgen_var_1088;
14071 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1088, 1);
14072 stream->write((uint64_t*)&cgen_var_1088, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014073 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014074 marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14075 unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14076 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
14077 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014078 countingStream->clearPool();
14079 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014080 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014081 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
14082}
14083
14084VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR(
14085 VkPhysicalDevice physicalDevice,
14086 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
14087 uint32_t* pSurfaceFormatCount,
14088 VkSurfaceFormat2KHR* pSurfaceFormats)
14089{
14090 auto stream = mImpl->stream();
14091 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014092 auto resources = mImpl->resources();
14093 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014094 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014095 VkPhysicalDevice local_physicalDevice;
14096 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014097 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
14098 local_pSurfaceInfo = nullptr;
14099 if (pSurfaceInfo)
14100 {
14101 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
14102 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
14103 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014104 countingStream->rewind();
14105 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014106 uint64_t cgen_var_1089;
14107 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1089, 1);
14108 countingStream->write((uint64_t*)&cgen_var_1089, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014109 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014110 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014111 uint64_t cgen_var_1090 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
14112 countingStream->putBe64(cgen_var_1090);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014113 if (pSurfaceFormatCount)
14114 {
14115 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14116 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014117 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014118 uint64_t cgen_var_1091 = (uint64_t)(uintptr_t)pSurfaceFormats;
14119 countingStream->putBe64(cgen_var_1091);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014120 if (pSurfaceFormats)
14121 {
14122 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14123 {
14124 marshal_VkSurfaceFormat2KHR(countingStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14125 }
14126 }
14127 }
14128 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14129 countingStream->rewind();
14130 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
14131 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
14132 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014133 uint64_t cgen_var_1092;
14134 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1092, 1);
14135 stream->write((uint64_t*)&cgen_var_1092, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014136 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014137 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014138 uint64_t cgen_var_1093 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
14139 stream->putBe64(cgen_var_1093);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014140 if (pSurfaceFormatCount)
14141 {
14142 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14143 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014144 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014145 uint64_t cgen_var_1094 = (uint64_t)(uintptr_t)pSurfaceFormats;
14146 stream->putBe64(cgen_var_1094);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014147 if (pSurfaceFormats)
14148 {
14149 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14150 {
14151 marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14152 }
14153 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014154 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014155 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014156 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014157 if (pSurfaceFormatCount)
14158 {
14159 if (!(check_pSurfaceFormatCount))
14160 {
14161 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
14162 }
14163 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14164 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014165 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014166 VkSurfaceFormat2KHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014167 check_pSurfaceFormats = (VkSurfaceFormat2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014168 if (pSurfaceFormats)
14169 {
14170 if (!(check_pSurfaceFormats))
14171 {
14172 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
14173 }
14174 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14175 {
14176 unmarshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14177 }
14178 }
14179 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
14180 stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014181 countingStream->clearPool();
14182 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014183 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014184 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
14185}
14186
14187#endif
14188#ifdef VK_KHR_variable_pointers
14189#endif
14190#ifdef VK_KHR_get_display_properties2
14191VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR(
14192 VkPhysicalDevice physicalDevice,
14193 uint32_t* pPropertyCount,
14194 VkDisplayProperties2KHR* pProperties)
14195{
14196 auto stream = mImpl->stream();
14197 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014198 auto resources = mImpl->resources();
14199 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014200 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014201 VkPhysicalDevice local_physicalDevice;
14202 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014203 countingStream->rewind();
14204 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014205 uint64_t cgen_var_1097;
14206 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1097, 1);
14207 countingStream->write((uint64_t*)&cgen_var_1097, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014208 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014209 uint64_t cgen_var_1098 = (uint64_t)(uintptr_t)pPropertyCount;
14210 countingStream->putBe64(cgen_var_1098);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014211 if (pPropertyCount)
14212 {
14213 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14214 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014215 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014216 uint64_t cgen_var_1099 = (uint64_t)(uintptr_t)pProperties;
14217 countingStream->putBe64(cgen_var_1099);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014218 if (pProperties)
14219 {
14220 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14221 {
14222 marshal_VkDisplayProperties2KHR(countingStream, (VkDisplayProperties2KHR*)(pProperties + i));
14223 }
14224 }
14225 }
14226 uint32_t packetSize_vkGetPhysicalDeviceDisplayProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14227 countingStream->rewind();
14228 uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
14229 stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
14230 stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014231 uint64_t cgen_var_1100;
14232 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1100, 1);
14233 stream->write((uint64_t*)&cgen_var_1100, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014234 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014235 uint64_t cgen_var_1101 = (uint64_t)(uintptr_t)pPropertyCount;
14236 stream->putBe64(cgen_var_1101);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014237 if (pPropertyCount)
14238 {
14239 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14240 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014241 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014242 uint64_t cgen_var_1102 = (uint64_t)(uintptr_t)pProperties;
14243 stream->putBe64(cgen_var_1102);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014244 if (pProperties)
14245 {
14246 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14247 {
14248 marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
14249 }
14250 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014251 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014252 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014253 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014254 if (pPropertyCount)
14255 {
14256 if (!(check_pPropertyCount))
14257 {
14258 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14259 }
14260 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14261 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014262 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014263 VkDisplayProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014264 check_pProperties = (VkDisplayProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014265 if (pProperties)
14266 {
14267 if (!(check_pProperties))
14268 {
14269 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14270 }
14271 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14272 {
14273 unmarshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
14274 }
14275 }
14276 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
14277 stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014278 countingStream->clearPool();
14279 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014280 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014281 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
14282}
14283
14284VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
14285 VkPhysicalDevice physicalDevice,
14286 uint32_t* pPropertyCount,
14287 VkDisplayPlaneProperties2KHR* pProperties)
14288{
14289 auto stream = mImpl->stream();
14290 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014291 auto resources = mImpl->resources();
14292 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014293 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014294 VkPhysicalDevice local_physicalDevice;
14295 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014296 countingStream->rewind();
14297 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014298 uint64_t cgen_var_1105;
14299 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1105, 1);
14300 countingStream->write((uint64_t*)&cgen_var_1105, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014301 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014302 uint64_t cgen_var_1106 = (uint64_t)(uintptr_t)pPropertyCount;
14303 countingStream->putBe64(cgen_var_1106);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014304 if (pPropertyCount)
14305 {
14306 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14307 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014308 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014309 uint64_t cgen_var_1107 = (uint64_t)(uintptr_t)pProperties;
14310 countingStream->putBe64(cgen_var_1107);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014311 if (pProperties)
14312 {
14313 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14314 {
14315 marshal_VkDisplayPlaneProperties2KHR(countingStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14316 }
14317 }
14318 }
14319 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14320 countingStream->rewind();
14321 uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
14322 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
14323 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014324 uint64_t cgen_var_1108;
14325 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1108, 1);
14326 stream->write((uint64_t*)&cgen_var_1108, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014327 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014328 uint64_t cgen_var_1109 = (uint64_t)(uintptr_t)pPropertyCount;
14329 stream->putBe64(cgen_var_1109);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014330 if (pPropertyCount)
14331 {
14332 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14333 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014334 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014335 uint64_t cgen_var_1110 = (uint64_t)(uintptr_t)pProperties;
14336 stream->putBe64(cgen_var_1110);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014337 if (pProperties)
14338 {
14339 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14340 {
14341 marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14342 }
14343 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014344 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014345 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014346 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014347 if (pPropertyCount)
14348 {
14349 if (!(check_pPropertyCount))
14350 {
14351 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14352 }
14353 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14354 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014355 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014356 VkDisplayPlaneProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014357 check_pProperties = (VkDisplayPlaneProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014358 if (pProperties)
14359 {
14360 if (!(check_pProperties))
14361 {
14362 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14363 }
14364 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14365 {
14366 unmarshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14367 }
14368 }
14369 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
14370 stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014371 countingStream->clearPool();
14372 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014373 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014374 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
14375}
14376
14377VkResult VkEncoder::vkGetDisplayModeProperties2KHR(
14378 VkPhysicalDevice physicalDevice,
14379 VkDisplayKHR display,
14380 uint32_t* pPropertyCount,
14381 VkDisplayModeProperties2KHR* pProperties)
14382{
14383 auto stream = mImpl->stream();
14384 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014385 auto resources = mImpl->resources();
14386 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014387 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014388 VkPhysicalDevice local_physicalDevice;
14389 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014390 VkDisplayKHR local_display;
14391 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014392 countingStream->rewind();
14393 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014394 uint64_t cgen_var_1113;
14395 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1113, 1);
14396 countingStream->write((uint64_t*)&cgen_var_1113, 1 * 8);
14397 uint64_t cgen_var_1114;
14398 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1114, 1);
14399 countingStream->write((uint64_t*)&cgen_var_1114, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014400 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014401 uint64_t cgen_var_1115 = (uint64_t)(uintptr_t)pPropertyCount;
14402 countingStream->putBe64(cgen_var_1115);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014403 if (pPropertyCount)
14404 {
14405 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14406 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014407 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014408 uint64_t cgen_var_1116 = (uint64_t)(uintptr_t)pProperties;
14409 countingStream->putBe64(cgen_var_1116);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014410 if (pProperties)
14411 {
14412 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14413 {
14414 marshal_VkDisplayModeProperties2KHR(countingStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14415 }
14416 }
14417 }
14418 uint32_t packetSize_vkGetDisplayModeProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14419 countingStream->rewind();
14420 uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR;
14421 stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
14422 stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014423 uint64_t cgen_var_1117;
14424 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1117, 1);
14425 stream->write((uint64_t*)&cgen_var_1117, 1 * 8);
14426 uint64_t cgen_var_1118;
14427 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1118, 1);
14428 stream->write((uint64_t*)&cgen_var_1118, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014429 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014430 uint64_t cgen_var_1119 = (uint64_t)(uintptr_t)pPropertyCount;
14431 stream->putBe64(cgen_var_1119);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014432 if (pPropertyCount)
14433 {
14434 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14435 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014436 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014437 uint64_t cgen_var_1120 = (uint64_t)(uintptr_t)pProperties;
14438 stream->putBe64(cgen_var_1120);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014439 if (pProperties)
14440 {
14441 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14442 {
14443 marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14444 }
14445 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014446 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014447 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014448 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014449 if (pPropertyCount)
14450 {
14451 if (!(check_pPropertyCount))
14452 {
14453 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14454 }
14455 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14456 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014457 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014458 VkDisplayModeProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014459 check_pProperties = (VkDisplayModeProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014460 if (pProperties)
14461 {
14462 if (!(check_pProperties))
14463 {
14464 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14465 }
14466 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14467 {
14468 unmarshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14469 }
14470 }
14471 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
14472 stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014473 countingStream->clearPool();
14474 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014475 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014476 return vkGetDisplayModeProperties2KHR_VkResult_return;
14477}
14478
14479VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR(
14480 VkPhysicalDevice physicalDevice,
14481 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
14482 VkDisplayPlaneCapabilities2KHR* pCapabilities)
14483{
14484 auto stream = mImpl->stream();
14485 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014486 auto resources = mImpl->resources();
14487 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014488 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014489 VkPhysicalDevice local_physicalDevice;
14490 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014491 VkDisplayPlaneInfo2KHR* local_pDisplayPlaneInfo;
14492 local_pDisplayPlaneInfo = nullptr;
14493 if (pDisplayPlaneInfo)
14494 {
14495 local_pDisplayPlaneInfo = (VkDisplayPlaneInfo2KHR*)pool->alloc(sizeof(const VkDisplayPlaneInfo2KHR));
14496 deepcopy_VkDisplayPlaneInfo2KHR(pool, pDisplayPlaneInfo, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
14497 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014498 countingStream->rewind();
14499 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014500 uint64_t cgen_var_1123;
14501 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1123, 1);
14502 countingStream->write((uint64_t*)&cgen_var_1123, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014503 marshal_VkDisplayPlaneInfo2KHR(countingStream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014504 marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14505 }
14506 uint32_t packetSize_vkGetDisplayPlaneCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14507 countingStream->rewind();
14508 uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR;
14509 stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
14510 stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014511 uint64_t cgen_var_1124;
14512 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1124, 1);
14513 stream->write((uint64_t*)&cgen_var_1124, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014514 marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014515 marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14516 unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14517 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
14518 stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014519 countingStream->clearPool();
14520 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014521 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014522 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
14523}
14524
14525#endif
14526#ifdef VK_KHR_dedicated_allocation
14527#endif
14528#ifdef VK_KHR_storage_buffer_storage_class
14529#endif
14530#ifdef VK_KHR_relaxed_block_layout
14531#endif
14532#ifdef VK_KHR_get_memory_requirements2
14533void VkEncoder::vkGetImageMemoryRequirements2KHR(
14534 VkDevice device,
14535 const VkImageMemoryRequirementsInfo2* pInfo,
14536 VkMemoryRequirements2* pMemoryRequirements)
14537{
14538 auto stream = mImpl->stream();
14539 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014540 auto resources = mImpl->resources();
14541 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014542 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014543 VkDevice local_device;
14544 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014545 VkImageMemoryRequirementsInfo2* local_pInfo;
14546 local_pInfo = nullptr;
14547 if (pInfo)
14548 {
14549 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
14550 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
14551 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014552 countingStream->rewind();
14553 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014554 uint64_t cgen_var_1125;
14555 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1125, 1);
14556 countingStream->write((uint64_t*)&cgen_var_1125, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014557 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014558 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
14559 }
14560 uint32_t packetSize_vkGetImageMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14561 countingStream->rewind();
14562 uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR;
14563 stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
14564 stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014565 uint64_t cgen_var_1126;
14566 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1126, 1);
14567 stream->write((uint64_t*)&cgen_var_1126, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014568 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014569 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14570 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14571}
14572
14573void VkEncoder::vkGetBufferMemoryRequirements2KHR(
14574 VkDevice device,
14575 const VkBufferMemoryRequirementsInfo2* pInfo,
14576 VkMemoryRequirements2* pMemoryRequirements)
14577{
14578 auto stream = mImpl->stream();
14579 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014580 auto resources = mImpl->resources();
14581 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014582 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014583 VkDevice local_device;
14584 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014585 VkBufferMemoryRequirementsInfo2* local_pInfo;
14586 local_pInfo = nullptr;
14587 if (pInfo)
14588 {
14589 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
14590 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
14591 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014592 countingStream->rewind();
14593 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014594 uint64_t cgen_var_1127;
14595 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1127, 1);
14596 countingStream->write((uint64_t*)&cgen_var_1127, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014597 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014598 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
14599 }
14600 uint32_t packetSize_vkGetBufferMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14601 countingStream->rewind();
14602 uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR;
14603 stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
14604 stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014605 uint64_t cgen_var_1128;
14606 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1128, 1);
14607 stream->write((uint64_t*)&cgen_var_1128, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014608 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014609 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14610 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14611}
14612
14613void VkEncoder::vkGetImageSparseMemoryRequirements2KHR(
14614 VkDevice device,
14615 const VkImageSparseMemoryRequirementsInfo2* pInfo,
14616 uint32_t* pSparseMemoryRequirementCount,
14617 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
14618{
14619 auto stream = mImpl->stream();
14620 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014621 auto resources = mImpl->resources();
14622 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014623 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014624 VkDevice local_device;
14625 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014626 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
14627 local_pInfo = nullptr;
14628 if (pInfo)
14629 {
14630 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
14631 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
14632 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014633 countingStream->rewind();
14634 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014635 uint64_t cgen_var_1129;
14636 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1129, 1);
14637 countingStream->write((uint64_t*)&cgen_var_1129, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014638 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014639 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014640 uint64_t cgen_var_1130 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
14641 countingStream->putBe64(cgen_var_1130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014642 if (pSparseMemoryRequirementCount)
14643 {
14644 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14645 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014646 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014647 uint64_t cgen_var_1131 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
14648 countingStream->putBe64(cgen_var_1131);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014649 if (pSparseMemoryRequirements)
14650 {
14651 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14652 {
14653 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14654 }
14655 }
14656 }
14657 uint32_t packetSize_vkGetImageSparseMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14658 countingStream->rewind();
14659 uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR;
14660 stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
14661 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014662 uint64_t cgen_var_1132;
14663 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1132, 1);
14664 stream->write((uint64_t*)&cgen_var_1132, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014665 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014666 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014667 uint64_t cgen_var_1133 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
14668 stream->putBe64(cgen_var_1133);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014669 if (pSparseMemoryRequirementCount)
14670 {
14671 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14672 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014673 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014674 uint64_t cgen_var_1134 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
14675 stream->putBe64(cgen_var_1134);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014676 if (pSparseMemoryRequirements)
14677 {
14678 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14679 {
14680 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14681 }
14682 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014683 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014684 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014685 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014686 if (pSparseMemoryRequirementCount)
14687 {
14688 if (!(check_pSparseMemoryRequirementCount))
14689 {
14690 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
14691 }
14692 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14693 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014694 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014695 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014696 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014697 if (pSparseMemoryRequirements)
14698 {
14699 if (!(check_pSparseMemoryRequirements))
14700 {
14701 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
14702 }
14703 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14704 {
14705 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14706 }
14707 }
14708}
14709
14710#endif
14711#ifdef VK_KHR_image_format_list
14712#endif
14713#ifdef VK_KHR_sampler_ycbcr_conversion
14714VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR(
14715 VkDevice device,
14716 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
14717 const VkAllocationCallbacks* pAllocator,
14718 VkSamplerYcbcrConversion* pYcbcrConversion)
14719{
14720 auto stream = mImpl->stream();
14721 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014722 auto resources = mImpl->resources();
14723 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014724 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014725 VkDevice local_device;
14726 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014727 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
14728 local_pCreateInfo = nullptr;
14729 if (pCreateInfo)
14730 {
14731 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
14732 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
14733 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014734 VkAllocationCallbacks* local_pAllocator;
14735 local_pAllocator = nullptr;
14736 if (pAllocator)
14737 {
14738 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14739 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14740 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014741 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014742 countingStream->rewind();
14743 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014744 uint64_t cgen_var_1137;
14745 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1137, 1);
14746 countingStream->write((uint64_t*)&cgen_var_1137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014747 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014748 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014749 uint64_t cgen_var_1138 = (uint64_t)(uintptr_t)local_pAllocator;
14750 countingStream->putBe64(cgen_var_1138);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014751 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014752 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014753 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014754 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014755 uint64_t cgen_var_1139;
14756 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1139, 1);
14757 countingStream->write((uint64_t*)&cgen_var_1139, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014758 }
14759 uint32_t packetSize_vkCreateSamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14760 countingStream->rewind();
14761 uint32_t opcode_vkCreateSamplerYcbcrConversionKHR = OP_vkCreateSamplerYcbcrConversionKHR;
14762 stream->write(&opcode_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
14763 stream->write(&packetSize_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014764 uint64_t cgen_var_1140;
14765 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1140, 1);
14766 stream->write((uint64_t*)&cgen_var_1140, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014767 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014768 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014769 uint64_t cgen_var_1141 = (uint64_t)(uintptr_t)local_pAllocator;
14770 stream->putBe64(cgen_var_1141);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014771 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014772 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014773 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014774 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080014775 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014776 uint64_t cgen_var_1142;
14777 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1142, 1);
14778 stream->write((uint64_t*)&cgen_var_1142, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080014779 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014780 uint64_t cgen_var_1143;
14781 stream->read((uint64_t*)&cgen_var_1143, 8);
14782 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1143, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014783 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
14784 stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014785 countingStream->clearPool();
14786 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014787 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014788 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
14789}
14790
14791void VkEncoder::vkDestroySamplerYcbcrConversionKHR(
14792 VkDevice device,
14793 VkSamplerYcbcrConversion ycbcrConversion,
14794 const VkAllocationCallbacks* pAllocator)
14795{
14796 auto stream = mImpl->stream();
14797 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014798 auto resources = mImpl->resources();
14799 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014800 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014801 VkDevice local_device;
14802 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014803 VkSamplerYcbcrConversion local_ycbcrConversion;
14804 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014805 VkAllocationCallbacks* local_pAllocator;
14806 local_pAllocator = nullptr;
14807 if (pAllocator)
14808 {
14809 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14810 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14811 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014812 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014813 countingStream->rewind();
14814 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014815 uint64_t cgen_var_1144;
14816 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1144, 1);
14817 countingStream->write((uint64_t*)&cgen_var_1144, 1 * 8);
14818 uint64_t cgen_var_1145;
14819 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1145, 1);
14820 countingStream->write((uint64_t*)&cgen_var_1145, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014821 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014822 uint64_t cgen_var_1146 = (uint64_t)(uintptr_t)local_pAllocator;
14823 countingStream->putBe64(cgen_var_1146);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014824 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014825 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014826 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014827 }
14828 }
14829 uint32_t packetSize_vkDestroySamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14830 countingStream->rewind();
14831 uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR;
14832 stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
14833 stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014834 uint64_t cgen_var_1147;
14835 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1147, 1);
14836 stream->write((uint64_t*)&cgen_var_1147, 1 * 8);
14837 uint64_t cgen_var_1148;
14838 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1148, 1);
14839 stream->write((uint64_t*)&cgen_var_1148, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014840 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014841 uint64_t cgen_var_1149 = (uint64_t)(uintptr_t)local_pAllocator;
14842 stream->putBe64(cgen_var_1149);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014843 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014844 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014845 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014846 }
14847}
14848
14849#endif
14850#ifdef VK_KHR_bind_memory2
14851VkResult VkEncoder::vkBindBufferMemory2KHR(
14852 VkDevice device,
14853 uint32_t bindInfoCount,
14854 const VkBindBufferMemoryInfo* pBindInfos)
14855{
14856 auto stream = mImpl->stream();
14857 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014858 auto resources = mImpl->resources();
14859 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014860 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014861 VkDevice local_device;
14862 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014863 uint32_t local_bindInfoCount;
14864 local_bindInfoCount = bindInfoCount;
14865 VkBindBufferMemoryInfo* local_pBindInfos;
14866 local_pBindInfos = nullptr;
14867 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014868 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014869 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014870 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14871 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014872 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
14873 }
14874 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014875 countingStream->rewind();
14876 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014877 uint64_t cgen_var_1150;
14878 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1150, 1);
14879 countingStream->write((uint64_t*)&cgen_var_1150, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014880 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
14881 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14882 {
14883 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014884 }
14885 }
14886 uint32_t packetSize_vkBindBufferMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14887 countingStream->rewind();
14888 uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR;
14889 stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t));
14890 stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014891 uint64_t cgen_var_1151;
14892 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1151, 1);
14893 stream->write((uint64_t*)&cgen_var_1151, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014894 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014895 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14896 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014897 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014898 }
14899 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
14900 stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014901 countingStream->clearPool();
14902 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014903 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014904 return vkBindBufferMemory2KHR_VkResult_return;
14905}
14906
14907VkResult VkEncoder::vkBindImageMemory2KHR(
14908 VkDevice device,
14909 uint32_t bindInfoCount,
14910 const VkBindImageMemoryInfo* pBindInfos)
14911{
14912 auto stream = mImpl->stream();
14913 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014914 auto resources = mImpl->resources();
14915 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014916 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014917 VkDevice local_device;
14918 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014919 uint32_t local_bindInfoCount;
14920 local_bindInfoCount = bindInfoCount;
14921 VkBindImageMemoryInfo* local_pBindInfos;
14922 local_pBindInfos = nullptr;
14923 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014924 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014925 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014926 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14927 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014928 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
14929 }
14930 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014931 countingStream->rewind();
14932 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014933 uint64_t cgen_var_1152;
14934 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1152, 1);
14935 countingStream->write((uint64_t*)&cgen_var_1152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014936 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
14937 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14938 {
14939 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014940 }
14941 }
14942 uint32_t packetSize_vkBindImageMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14943 countingStream->rewind();
14944 uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR;
14945 stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t));
14946 stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014947 uint64_t cgen_var_1153;
14948 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1153, 1);
14949 stream->write((uint64_t*)&cgen_var_1153, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014950 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014951 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14952 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014953 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014954 }
14955 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
14956 stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014957 countingStream->clearPool();
14958 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014959 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014960 return vkBindImageMemory2KHR_VkResult_return;
14961}
14962
14963#endif
14964#ifdef VK_KHR_maintenance3
14965void VkEncoder::vkGetDescriptorSetLayoutSupportKHR(
14966 VkDevice device,
14967 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
14968 VkDescriptorSetLayoutSupport* pSupport)
14969{
14970 auto stream = mImpl->stream();
14971 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014972 auto resources = mImpl->resources();
14973 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014974 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014975 VkDevice local_device;
14976 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014977 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
14978 local_pCreateInfo = nullptr;
14979 if (pCreateInfo)
14980 {
14981 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
14982 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
14983 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014984 countingStream->rewind();
14985 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014986 uint64_t cgen_var_1154;
14987 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1154, 1);
14988 countingStream->write((uint64_t*)&cgen_var_1154, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014989 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014990 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
14991 }
14992 uint32_t packetSize_vkGetDescriptorSetLayoutSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14993 countingStream->rewind();
14994 uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR;
14995 stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
14996 stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014997 uint64_t cgen_var_1155;
14998 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1155, 1);
14999 stream->write((uint64_t*)&cgen_var_1155, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015000 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015001 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
15002 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
15003}
15004
15005#endif
15006#ifdef VK_KHR_draw_indirect_count
15007void VkEncoder::vkCmdDrawIndirectCountKHR(
15008 VkCommandBuffer commandBuffer,
15009 VkBuffer buffer,
15010 VkDeviceSize offset,
15011 VkBuffer countBuffer,
15012 VkDeviceSize countBufferOffset,
15013 uint32_t maxDrawCount,
15014 uint32_t stride)
15015{
15016 auto stream = mImpl->stream();
15017 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015018 auto resources = mImpl->resources();
15019 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015020 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015021 VkCommandBuffer local_commandBuffer;
15022 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015023 VkBuffer local_buffer;
15024 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015025 VkDeviceSize local_offset;
15026 local_offset = offset;
15027 VkBuffer local_countBuffer;
15028 local_countBuffer = countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015029 VkDeviceSize local_countBufferOffset;
15030 local_countBufferOffset = countBufferOffset;
15031 uint32_t local_maxDrawCount;
15032 local_maxDrawCount = maxDrawCount;
15033 uint32_t local_stride;
15034 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015035 countingStream->rewind();
15036 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015037 uint64_t cgen_var_1156;
15038 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1156, 1);
15039 countingStream->write((uint64_t*)&cgen_var_1156, 1 * 8);
15040 uint64_t cgen_var_1157;
15041 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1157, 1);
15042 countingStream->write((uint64_t*)&cgen_var_1157, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015043 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015044 uint64_t cgen_var_1158;
15045 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1158, 1);
15046 countingStream->write((uint64_t*)&cgen_var_1158, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015047 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15048 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15049 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015050 }
15051 uint32_t packetSize_vkCmdDrawIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15052 countingStream->rewind();
15053 uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR;
15054 stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
15055 stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015056 uint64_t cgen_var_1159;
15057 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1159, 1);
15058 stream->write((uint64_t*)&cgen_var_1159, 1 * 8);
15059 uint64_t cgen_var_1160;
15060 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1160, 1);
15061 stream->write((uint64_t*)&cgen_var_1160, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015062 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015063 uint64_t cgen_var_1161;
15064 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1161, 1);
15065 stream->write((uint64_t*)&cgen_var_1161, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015066 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15067 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15068 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015069}
15070
15071void VkEncoder::vkCmdDrawIndexedIndirectCountKHR(
15072 VkCommandBuffer commandBuffer,
15073 VkBuffer buffer,
15074 VkDeviceSize offset,
15075 VkBuffer countBuffer,
15076 VkDeviceSize countBufferOffset,
15077 uint32_t maxDrawCount,
15078 uint32_t stride)
15079{
15080 auto stream = mImpl->stream();
15081 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015082 auto resources = mImpl->resources();
15083 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015084 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015085 VkCommandBuffer local_commandBuffer;
15086 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015087 VkBuffer local_buffer;
15088 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015089 VkDeviceSize local_offset;
15090 local_offset = offset;
15091 VkBuffer local_countBuffer;
15092 local_countBuffer = countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015093 VkDeviceSize local_countBufferOffset;
15094 local_countBufferOffset = countBufferOffset;
15095 uint32_t local_maxDrawCount;
15096 local_maxDrawCount = maxDrawCount;
15097 uint32_t local_stride;
15098 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015099 countingStream->rewind();
15100 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015101 uint64_t cgen_var_1162;
15102 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1162, 1);
15103 countingStream->write((uint64_t*)&cgen_var_1162, 1 * 8);
15104 uint64_t cgen_var_1163;
15105 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1163, 1);
15106 countingStream->write((uint64_t*)&cgen_var_1163, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015107 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015108 uint64_t cgen_var_1164;
15109 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1164, 1);
15110 countingStream->write((uint64_t*)&cgen_var_1164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015111 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15112 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15113 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015114 }
15115 uint32_t packetSize_vkCmdDrawIndexedIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15116 countingStream->rewind();
15117 uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR;
15118 stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
15119 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015120 uint64_t cgen_var_1165;
15121 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1165, 1);
15122 stream->write((uint64_t*)&cgen_var_1165, 1 * 8);
15123 uint64_t cgen_var_1166;
15124 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1166, 1);
15125 stream->write((uint64_t*)&cgen_var_1166, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015126 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015127 uint64_t cgen_var_1167;
15128 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1167, 1);
15129 stream->write((uint64_t*)&cgen_var_1167, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015130 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15131 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15132 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015133}
15134
15135#endif
15136#ifdef VK_KHR_8bit_storage
15137#endif
15138#ifdef VK_EXT_debug_report
15139VkResult VkEncoder::vkCreateDebugReportCallbackEXT(
15140 VkInstance instance,
15141 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
15142 const VkAllocationCallbacks* pAllocator,
15143 VkDebugReportCallbackEXT* pCallback)
15144{
15145 auto stream = mImpl->stream();
15146 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015147 auto resources = mImpl->resources();
15148 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015149 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015150 VkInstance local_instance;
15151 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015152 VkDebugReportCallbackCreateInfoEXT* local_pCreateInfo;
15153 local_pCreateInfo = nullptr;
15154 if (pCreateInfo)
15155 {
15156 local_pCreateInfo = (VkDebugReportCallbackCreateInfoEXT*)pool->alloc(sizeof(const VkDebugReportCallbackCreateInfoEXT));
15157 deepcopy_VkDebugReportCallbackCreateInfoEXT(pool, pCreateInfo, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
15158 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015159 VkAllocationCallbacks* local_pAllocator;
15160 local_pAllocator = nullptr;
15161 if (pAllocator)
15162 {
15163 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15164 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15165 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015166 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015167 countingStream->rewind();
15168 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015169 uint64_t cgen_var_1168;
15170 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1168, 1);
15171 countingStream->write((uint64_t*)&cgen_var_1168, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015172 marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015173 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015174 uint64_t cgen_var_1169 = (uint64_t)(uintptr_t)local_pAllocator;
15175 countingStream->putBe64(cgen_var_1169);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015176 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015177 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015178 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015179 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015180 uint64_t cgen_var_1170;
15181 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1170, 1);
15182 countingStream->write((uint64_t*)&cgen_var_1170, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015183 }
15184 uint32_t packetSize_vkCreateDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15185 countingStream->rewind();
15186 uint32_t opcode_vkCreateDebugReportCallbackEXT = OP_vkCreateDebugReportCallbackEXT;
15187 stream->write(&opcode_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
15188 stream->write(&packetSize_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015189 uint64_t cgen_var_1171;
15190 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1171, 1);
15191 stream->write((uint64_t*)&cgen_var_1171, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015192 marshal_VkDebugReportCallbackCreateInfoEXT(stream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015193 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015194 uint64_t cgen_var_1172 = (uint64_t)(uintptr_t)local_pAllocator;
15195 stream->putBe64(cgen_var_1172);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015196 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015197 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015198 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015199 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015200 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015201 uint64_t cgen_var_1173;
15202 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1173, 1);
15203 stream->write((uint64_t*)&cgen_var_1173, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015204 stream->setHandleMapping(resources->unwrapMapping());
15205 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015206 uint64_t cgen_var_1174;
15207 stream->read((uint64_t*)&cgen_var_1174, 8);
15208 stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1174, (VkDebugReportCallbackEXT*)pCallback, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015209 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015210 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
15211 stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015212 countingStream->clearPool();
15213 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015214 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015215 return vkCreateDebugReportCallbackEXT_VkResult_return;
15216}
15217
15218void VkEncoder::vkDestroyDebugReportCallbackEXT(
15219 VkInstance instance,
15220 VkDebugReportCallbackEXT callback,
15221 const VkAllocationCallbacks* pAllocator)
15222{
15223 auto stream = mImpl->stream();
15224 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015225 auto resources = mImpl->resources();
15226 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015227 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015228 VkInstance local_instance;
15229 local_instance = instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015230 VkDebugReportCallbackEXT local_callback;
15231 local_callback = callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015232 VkAllocationCallbacks* local_pAllocator;
15233 local_pAllocator = nullptr;
15234 if (pAllocator)
15235 {
15236 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15237 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15238 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015239 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015240 countingStream->rewind();
15241 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015242 uint64_t cgen_var_1175;
15243 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1175, 1);
15244 countingStream->write((uint64_t*)&cgen_var_1175, 1 * 8);
15245 uint64_t cgen_var_1176;
15246 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1176, 1);
15247 countingStream->write((uint64_t*)&cgen_var_1176, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015248 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015249 uint64_t cgen_var_1177 = (uint64_t)(uintptr_t)local_pAllocator;
15250 countingStream->putBe64(cgen_var_1177);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015251 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015252 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015253 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015254 }
15255 }
15256 uint32_t packetSize_vkDestroyDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15257 countingStream->rewind();
15258 uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT;
15259 stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
15260 stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015261 uint64_t cgen_var_1178;
15262 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1178, 1);
15263 stream->write((uint64_t*)&cgen_var_1178, 1 * 8);
15264 uint64_t cgen_var_1179;
15265 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1179, 1);
15266 stream->write((uint64_t*)&cgen_var_1179, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015267 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015268 uint64_t cgen_var_1180 = (uint64_t)(uintptr_t)local_pAllocator;
15269 stream->putBe64(cgen_var_1180);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015270 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015271 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015272 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015273 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015274 resources->destroyMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)&callback);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015275}
15276
15277void VkEncoder::vkDebugReportMessageEXT(
15278 VkInstance instance,
15279 VkDebugReportFlagsEXT flags,
15280 VkDebugReportObjectTypeEXT objectType,
15281 uint64_t object,
15282 size_t location,
15283 int32_t messageCode,
15284 const char* pLayerPrefix,
15285 const char* pMessage)
15286{
15287 auto stream = mImpl->stream();
15288 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015289 auto resources = mImpl->resources();
15290 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015291 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015292 VkInstance local_instance;
15293 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015294 VkDebugReportFlagsEXT local_flags;
15295 local_flags = flags;
15296 VkDebugReportObjectTypeEXT local_objectType;
15297 local_objectType = objectType;
15298 uint64_t local_object;
15299 local_object = object;
15300 size_t local_location;
15301 local_location = location;
15302 int32_t local_messageCode;
15303 local_messageCode = messageCode;
15304 char* local_pLayerPrefix;
15305 local_pLayerPrefix = nullptr;
15306 if (pLayerPrefix)
15307 {
15308 local_pLayerPrefix = pool->strDup(pLayerPrefix);
15309 }
15310 char* local_pMessage;
15311 local_pMessage = nullptr;
15312 if (pMessage)
15313 {
15314 local_pMessage = pool->strDup(pMessage);
15315 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015316 countingStream->rewind();
15317 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015318 uint64_t cgen_var_1181;
15319 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1181, 1);
15320 countingStream->write((uint64_t*)&cgen_var_1181, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015321 countingStream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
15322 countingStream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
15323 countingStream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015324 uint64_t cgen_var_1182 = (uint64_t)local_location;
15325 countingStream->putBe64(cgen_var_1182);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015326 countingStream->write((int32_t*)&local_messageCode, sizeof(int32_t));
15327 countingStream->putString(local_pLayerPrefix);
15328 countingStream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015329 }
15330 uint32_t packetSize_vkDebugReportMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15331 countingStream->rewind();
15332 uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT;
15333 stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t));
15334 stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015335 uint64_t cgen_var_1183;
15336 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1183, 1);
15337 stream->write((uint64_t*)&cgen_var_1183, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015338 stream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
15339 stream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
15340 stream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015341 uint64_t cgen_var_1184 = (uint64_t)local_location;
15342 stream->putBe64(cgen_var_1184);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015343 stream->write((int32_t*)&local_messageCode, sizeof(int32_t));
15344 stream->putString(local_pLayerPrefix);
15345 stream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015346}
15347
15348#endif
15349#ifdef VK_NV_glsl_shader
15350#endif
15351#ifdef VK_EXT_depth_range_unrestricted
15352#endif
15353#ifdef VK_IMG_filter_cubic
15354#endif
15355#ifdef VK_AMD_rasterization_order
15356#endif
15357#ifdef VK_AMD_shader_trinary_minmax
15358#endif
15359#ifdef VK_AMD_shader_explicit_vertex_parameter
15360#endif
15361#ifdef VK_EXT_debug_marker
15362VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT(
15363 VkDevice device,
15364 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
15365{
15366 auto stream = mImpl->stream();
15367 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015368 auto resources = mImpl->resources();
15369 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015370 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015371 VkDevice local_device;
15372 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015373 VkDebugMarkerObjectTagInfoEXT* local_pTagInfo;
15374 local_pTagInfo = nullptr;
15375 if (pTagInfo)
15376 {
15377 local_pTagInfo = (VkDebugMarkerObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectTagInfoEXT));
15378 deepcopy_VkDebugMarkerObjectTagInfoEXT(pool, pTagInfo, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
15379 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015380 countingStream->rewind();
15381 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015382 uint64_t cgen_var_1185;
15383 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1185, 1);
15384 countingStream->write((uint64_t*)&cgen_var_1185, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015385 marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015386 }
15387 uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15388 countingStream->rewind();
15389 uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT;
15390 stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
15391 stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015392 uint64_t cgen_var_1186;
15393 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1186, 1);
15394 stream->write((uint64_t*)&cgen_var_1186, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015395 marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015396 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
15397 stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015398 countingStream->clearPool();
15399 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015400 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015401 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
15402}
15403
15404VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT(
15405 VkDevice device,
15406 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
15407{
15408 auto stream = mImpl->stream();
15409 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015410 auto resources = mImpl->resources();
15411 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015412 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015413 VkDevice local_device;
15414 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015415 VkDebugMarkerObjectNameInfoEXT* local_pNameInfo;
15416 local_pNameInfo = nullptr;
15417 if (pNameInfo)
15418 {
15419 local_pNameInfo = (VkDebugMarkerObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectNameInfoEXT));
15420 deepcopy_VkDebugMarkerObjectNameInfoEXT(pool, pNameInfo, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
15421 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015422 countingStream->rewind();
15423 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015424 uint64_t cgen_var_1187;
15425 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1187, 1);
15426 countingStream->write((uint64_t*)&cgen_var_1187, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015427 marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015428 }
15429 uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15430 countingStream->rewind();
15431 uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT;
15432 stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
15433 stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015434 uint64_t cgen_var_1188;
15435 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1188, 1);
15436 stream->write((uint64_t*)&cgen_var_1188, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015437 marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015438 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
15439 stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015440 countingStream->clearPool();
15441 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015442 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015443 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
15444}
15445
15446void VkEncoder::vkCmdDebugMarkerBeginEXT(
15447 VkCommandBuffer commandBuffer,
15448 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
15449{
15450 auto stream = mImpl->stream();
15451 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015452 auto resources = mImpl->resources();
15453 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015454 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015455 VkCommandBuffer local_commandBuffer;
15456 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015457 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
15458 local_pMarkerInfo = nullptr;
15459 if (pMarkerInfo)
15460 {
15461 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
15462 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
15463 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015464 countingStream->rewind();
15465 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015466 uint64_t cgen_var_1189;
15467 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1189, 1);
15468 countingStream->write((uint64_t*)&cgen_var_1189, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015469 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015470 }
15471 uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15472 countingStream->rewind();
15473 uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT;
15474 stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
15475 stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015476 uint64_t cgen_var_1190;
15477 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1190, 1);
15478 stream->write((uint64_t*)&cgen_var_1190, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015479 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015480}
15481
15482void VkEncoder::vkCmdDebugMarkerEndEXT(
15483 VkCommandBuffer commandBuffer)
15484{
15485 auto stream = mImpl->stream();
15486 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015487 auto resources = mImpl->resources();
15488 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015489 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015490 VkCommandBuffer local_commandBuffer;
15491 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015492 countingStream->rewind();
15493 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015494 uint64_t cgen_var_1191;
15495 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1191, 1);
15496 countingStream->write((uint64_t*)&cgen_var_1191, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015497 }
15498 uint32_t packetSize_vkCmdDebugMarkerEndEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15499 countingStream->rewind();
15500 uint32_t opcode_vkCmdDebugMarkerEndEXT = OP_vkCmdDebugMarkerEndEXT;
15501 stream->write(&opcode_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
15502 stream->write(&packetSize_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015503 uint64_t cgen_var_1192;
15504 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1192, 1);
15505 stream->write((uint64_t*)&cgen_var_1192, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015506}
15507
15508void VkEncoder::vkCmdDebugMarkerInsertEXT(
15509 VkCommandBuffer commandBuffer,
15510 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
15511{
15512 auto stream = mImpl->stream();
15513 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015514 auto resources = mImpl->resources();
15515 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015516 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015517 VkCommandBuffer local_commandBuffer;
15518 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015519 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
15520 local_pMarkerInfo = nullptr;
15521 if (pMarkerInfo)
15522 {
15523 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
15524 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
15525 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015526 countingStream->rewind();
15527 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015528 uint64_t cgen_var_1193;
15529 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1193, 1);
15530 countingStream->write((uint64_t*)&cgen_var_1193, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015531 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015532 }
15533 uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15534 countingStream->rewind();
15535 uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT;
15536 stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
15537 stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015538 uint64_t cgen_var_1194;
15539 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1194, 1);
15540 stream->write((uint64_t*)&cgen_var_1194, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015541 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015542}
15543
15544#endif
15545#ifdef VK_AMD_gcn_shader
15546#endif
15547#ifdef VK_NV_dedicated_allocation
15548#endif
15549#ifdef VK_AMD_draw_indirect_count
15550void VkEncoder::vkCmdDrawIndirectCountAMD(
15551 VkCommandBuffer commandBuffer,
15552 VkBuffer buffer,
15553 VkDeviceSize offset,
15554 VkBuffer countBuffer,
15555 VkDeviceSize countBufferOffset,
15556 uint32_t maxDrawCount,
15557 uint32_t stride)
15558{
15559 auto stream = mImpl->stream();
15560 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015561 auto resources = mImpl->resources();
15562 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015563 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015564 VkCommandBuffer local_commandBuffer;
15565 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015566 VkBuffer local_buffer;
15567 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015568 VkDeviceSize local_offset;
15569 local_offset = offset;
15570 VkBuffer local_countBuffer;
15571 local_countBuffer = countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015572 VkDeviceSize local_countBufferOffset;
15573 local_countBufferOffset = countBufferOffset;
15574 uint32_t local_maxDrawCount;
15575 local_maxDrawCount = maxDrawCount;
15576 uint32_t local_stride;
15577 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015578 countingStream->rewind();
15579 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015580 uint64_t cgen_var_1195;
15581 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1195, 1);
15582 countingStream->write((uint64_t*)&cgen_var_1195, 1 * 8);
15583 uint64_t cgen_var_1196;
15584 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1196, 1);
15585 countingStream->write((uint64_t*)&cgen_var_1196, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015586 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015587 uint64_t cgen_var_1197;
15588 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1197, 1);
15589 countingStream->write((uint64_t*)&cgen_var_1197, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015590 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15591 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15592 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015593 }
15594 uint32_t packetSize_vkCmdDrawIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15595 countingStream->rewind();
15596 uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD;
15597 stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
15598 stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015599 uint64_t cgen_var_1198;
15600 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1198, 1);
15601 stream->write((uint64_t*)&cgen_var_1198, 1 * 8);
15602 uint64_t cgen_var_1199;
15603 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1199, 1);
15604 stream->write((uint64_t*)&cgen_var_1199, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015605 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015606 uint64_t cgen_var_1200;
15607 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1200, 1);
15608 stream->write((uint64_t*)&cgen_var_1200, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015609 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15610 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15611 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015612}
15613
15614void VkEncoder::vkCmdDrawIndexedIndirectCountAMD(
15615 VkCommandBuffer commandBuffer,
15616 VkBuffer buffer,
15617 VkDeviceSize offset,
15618 VkBuffer countBuffer,
15619 VkDeviceSize countBufferOffset,
15620 uint32_t maxDrawCount,
15621 uint32_t stride)
15622{
15623 auto stream = mImpl->stream();
15624 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015625 auto resources = mImpl->resources();
15626 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015627 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015628 VkCommandBuffer local_commandBuffer;
15629 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015630 VkBuffer local_buffer;
15631 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015632 VkDeviceSize local_offset;
15633 local_offset = offset;
15634 VkBuffer local_countBuffer;
15635 local_countBuffer = countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015636 VkDeviceSize local_countBufferOffset;
15637 local_countBufferOffset = countBufferOffset;
15638 uint32_t local_maxDrawCount;
15639 local_maxDrawCount = maxDrawCount;
15640 uint32_t local_stride;
15641 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015642 countingStream->rewind();
15643 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015644 uint64_t cgen_var_1201;
15645 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1201, 1);
15646 countingStream->write((uint64_t*)&cgen_var_1201, 1 * 8);
15647 uint64_t cgen_var_1202;
15648 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1202, 1);
15649 countingStream->write((uint64_t*)&cgen_var_1202, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015650 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015651 uint64_t cgen_var_1203;
15652 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1203, 1);
15653 countingStream->write((uint64_t*)&cgen_var_1203, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015654 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15655 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15656 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015657 }
15658 uint32_t packetSize_vkCmdDrawIndexedIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15659 countingStream->rewind();
15660 uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD;
15661 stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
15662 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015663 uint64_t cgen_var_1204;
15664 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1204, 1);
15665 stream->write((uint64_t*)&cgen_var_1204, 1 * 8);
15666 uint64_t cgen_var_1205;
15667 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1205, 1);
15668 stream->write((uint64_t*)&cgen_var_1205, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015669 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015670 uint64_t cgen_var_1206;
15671 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1206, 1);
15672 stream->write((uint64_t*)&cgen_var_1206, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015673 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15674 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15675 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015676}
15677
15678#endif
15679#ifdef VK_AMD_negative_viewport_height
15680#endif
15681#ifdef VK_AMD_gpu_shader_half_float
15682#endif
15683#ifdef VK_AMD_shader_ballot
15684#endif
15685#ifdef VK_AMD_texture_gather_bias_lod
15686#endif
15687#ifdef VK_AMD_shader_info
15688VkResult VkEncoder::vkGetShaderInfoAMD(
15689 VkDevice device,
15690 VkPipeline pipeline,
15691 VkShaderStageFlagBits shaderStage,
15692 VkShaderInfoTypeAMD infoType,
15693 size_t* pInfoSize,
15694 void* pInfo)
15695{
15696 auto stream = mImpl->stream();
15697 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015698 auto resources = mImpl->resources();
15699 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015700 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015701 VkDevice local_device;
15702 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015703 VkPipeline local_pipeline;
15704 local_pipeline = pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015705 VkShaderStageFlagBits local_shaderStage;
15706 local_shaderStage = shaderStage;
15707 VkShaderInfoTypeAMD local_infoType;
15708 local_infoType = infoType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015709 countingStream->rewind();
15710 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015711 uint64_t cgen_var_1207;
15712 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1207, 1);
15713 countingStream->write((uint64_t*)&cgen_var_1207, 1 * 8);
15714 uint64_t cgen_var_1208;
15715 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1208, 1);
15716 countingStream->write((uint64_t*)&cgen_var_1208, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015717 countingStream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
15718 countingStream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015719 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015720 uint64_t cgen_var_1209 = (uint64_t)(uintptr_t)pInfoSize;
15721 countingStream->putBe64(cgen_var_1209);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015722 if (pInfoSize)
15723 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015724 uint64_t cgen_var_1210 = (uint64_t)(*pInfoSize);
15725 countingStream->putBe64(cgen_var_1210);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015726 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015727 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015728 uint64_t cgen_var_1211 = (uint64_t)(uintptr_t)pInfo;
15729 countingStream->putBe64(cgen_var_1211);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015730 if (pInfo)
15731 {
15732 countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15733 }
15734 }
15735 uint32_t packetSize_vkGetShaderInfoAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15736 countingStream->rewind();
15737 uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD;
15738 stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t));
15739 stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015740 uint64_t cgen_var_1212;
15741 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1212, 1);
15742 stream->write((uint64_t*)&cgen_var_1212, 1 * 8);
15743 uint64_t cgen_var_1213;
15744 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1213, 1);
15745 stream->write((uint64_t*)&cgen_var_1213, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015746 stream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
15747 stream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015748 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015749 uint64_t cgen_var_1214 = (uint64_t)(uintptr_t)pInfoSize;
15750 stream->putBe64(cgen_var_1214);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015751 if (pInfoSize)
15752 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015753 uint64_t cgen_var_1215 = (uint64_t)(*pInfoSize);
15754 stream->putBe64(cgen_var_1215);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015755 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015756 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015757 uint64_t cgen_var_1216 = (uint64_t)(uintptr_t)pInfo;
15758 stream->putBe64(cgen_var_1216);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015759 if (pInfo)
15760 {
15761 stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15762 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015763 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015764 size_t* check_pInfoSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015765 check_pInfoSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015766 if (pInfoSize)
15767 {
15768 if (!(check_pInfoSize))
15769 {
15770 fprintf(stderr, "fatal: pInfoSize inconsistent between guest and host\n");
15771 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015772 (*pInfoSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015773 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015774 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015775 void* check_pInfo;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015776 check_pInfo = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015777 if (pInfo)
15778 {
15779 if (!(check_pInfo))
15780 {
15781 fprintf(stderr, "fatal: pInfo inconsistent between guest and host\n");
15782 }
15783 stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15784 }
15785 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
15786 stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015787 countingStream->clearPool();
15788 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015789 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015790 return vkGetShaderInfoAMD_VkResult_return;
15791}
15792
15793#endif
15794#ifdef VK_AMD_shader_image_load_store_lod
15795#endif
15796#ifdef VK_IMG_format_pvrtc
15797#endif
15798#ifdef VK_NV_external_memory_capabilities
15799VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
15800 VkPhysicalDevice physicalDevice,
15801 VkFormat format,
15802 VkImageType type,
15803 VkImageTiling tiling,
15804 VkImageUsageFlags usage,
15805 VkImageCreateFlags flags,
15806 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
15807 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
15808{
15809 auto stream = mImpl->stream();
15810 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015811 auto resources = mImpl->resources();
15812 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015813 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015814 VkPhysicalDevice local_physicalDevice;
15815 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015816 VkFormat local_format;
15817 local_format = format;
15818 VkImageType local_type;
15819 local_type = type;
15820 VkImageTiling local_tiling;
15821 local_tiling = tiling;
15822 VkImageUsageFlags local_usage;
15823 local_usage = usage;
15824 VkImageCreateFlags local_flags;
15825 local_flags = flags;
15826 VkExternalMemoryHandleTypeFlagsNV local_externalHandleType;
15827 local_externalHandleType = externalHandleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015828 countingStream->rewind();
15829 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015830 uint64_t cgen_var_1220;
15831 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1220, 1);
15832 countingStream->write((uint64_t*)&cgen_var_1220, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015833 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
15834 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
15835 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
15836 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
15837 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
15838 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015839 marshal_VkExternalImageFormatPropertiesNV(countingStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
15840 }
15841 uint32_t packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15842 countingStream->rewind();
15843 uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
15844 stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
15845 stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015846 uint64_t cgen_var_1221;
15847 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1221, 1);
15848 stream->write((uint64_t*)&cgen_var_1221, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015849 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
15850 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
15851 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
15852 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
15853 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
15854 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015855 marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
15856 unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
15857 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
15858 stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015859 countingStream->clearPool();
15860 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015861 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015862 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
15863}
15864
15865#endif
15866#ifdef VK_NV_external_memory
15867#endif
15868#ifdef VK_NV_external_memory_win32
15869VkResult VkEncoder::vkGetMemoryWin32HandleNV(
15870 VkDevice device,
15871 VkDeviceMemory memory,
15872 VkExternalMemoryHandleTypeFlagsNV handleType,
15873 HANDLE* pHandle)
15874{
15875 auto stream = mImpl->stream();
15876 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015877 auto resources = mImpl->resources();
15878 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015879 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015880 VkDevice local_device;
15881 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015882 VkDeviceMemory local_memory;
15883 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015884 VkExternalMemoryHandleTypeFlagsNV local_handleType;
15885 local_handleType = handleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015886 countingStream->rewind();
15887 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015888 uint64_t cgen_var_1222;
15889 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1222, 1);
15890 countingStream->write((uint64_t*)&cgen_var_1222, 1 * 8);
15891 uint64_t cgen_var_1223;
15892 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1223, 1);
15893 countingStream->write((uint64_t*)&cgen_var_1223, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015894 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015895 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
15896 }
15897 uint32_t packetSize_vkGetMemoryWin32HandleNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15898 countingStream->rewind();
15899 uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV;
15900 stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
15901 stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015902 uint64_t cgen_var_1224;
15903 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1224, 1);
15904 stream->write((uint64_t*)&cgen_var_1224, 1 * 8);
15905 uint64_t cgen_var_1225;
15906 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1225, 1);
15907 stream->write((uint64_t*)&cgen_var_1225, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015908 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015909 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
15910 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
15911 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
15912 stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015913 countingStream->clearPool();
15914 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015915 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015916 return vkGetMemoryWin32HandleNV_VkResult_return;
15917}
15918
15919#endif
15920#ifdef VK_NV_win32_keyed_mutex
15921#endif
15922#ifdef VK_EXT_validation_flags
15923#endif
15924#ifdef VK_NN_vi_surface
15925VkResult VkEncoder::vkCreateViSurfaceNN(
15926 VkInstance instance,
15927 const VkViSurfaceCreateInfoNN* pCreateInfo,
15928 const VkAllocationCallbacks* pAllocator,
15929 VkSurfaceKHR* pSurface)
15930{
15931 auto stream = mImpl->stream();
15932 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015933 auto resources = mImpl->resources();
15934 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015935 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015936 VkInstance local_instance;
15937 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015938 VkViSurfaceCreateInfoNN* local_pCreateInfo;
15939 local_pCreateInfo = nullptr;
15940 if (pCreateInfo)
15941 {
15942 local_pCreateInfo = (VkViSurfaceCreateInfoNN*)pool->alloc(sizeof(const VkViSurfaceCreateInfoNN));
15943 deepcopy_VkViSurfaceCreateInfoNN(pool, pCreateInfo, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
15944 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015945 VkAllocationCallbacks* local_pAllocator;
15946 local_pAllocator = nullptr;
15947 if (pAllocator)
15948 {
15949 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15950 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15951 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015952 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015953 countingStream->rewind();
15954 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015955 uint64_t cgen_var_1226;
15956 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1226, 1);
15957 countingStream->write((uint64_t*)&cgen_var_1226, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015958 marshal_VkViSurfaceCreateInfoNN(countingStream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015959 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015960 uint64_t cgen_var_1227 = (uint64_t)(uintptr_t)local_pAllocator;
15961 countingStream->putBe64(cgen_var_1227);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015962 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015963 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015964 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015965 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015966 uint64_t cgen_var_1228;
15967 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1228, 1);
15968 countingStream->write((uint64_t*)&cgen_var_1228, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015969 }
15970 uint32_t packetSize_vkCreateViSurfaceNN = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15971 countingStream->rewind();
15972 uint32_t opcode_vkCreateViSurfaceNN = OP_vkCreateViSurfaceNN;
15973 stream->write(&opcode_vkCreateViSurfaceNN, sizeof(uint32_t));
15974 stream->write(&packetSize_vkCreateViSurfaceNN, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015975 uint64_t cgen_var_1229;
15976 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1229, 1);
15977 stream->write((uint64_t*)&cgen_var_1229, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015978 marshal_VkViSurfaceCreateInfoNN(stream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015979 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015980 uint64_t cgen_var_1230 = (uint64_t)(uintptr_t)local_pAllocator;
15981 stream->putBe64(cgen_var_1230);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015982 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015983 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015984 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015985 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015986 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015987 uint64_t cgen_var_1231;
15988 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1231, 1);
15989 stream->write((uint64_t*)&cgen_var_1231, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015990 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015991 uint64_t cgen_var_1232;
15992 stream->read((uint64_t*)&cgen_var_1232, 8);
15993 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1232, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015994 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
15995 stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015996 countingStream->clearPool();
15997 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015998 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015999 return vkCreateViSurfaceNN_VkResult_return;
16000}
16001
16002#endif
16003#ifdef VK_EXT_shader_subgroup_ballot
16004#endif
16005#ifdef VK_EXT_shader_subgroup_vote
16006#endif
16007#ifdef VK_EXT_conditional_rendering
16008void VkEncoder::vkCmdBeginConditionalRenderingEXT(
16009 VkCommandBuffer commandBuffer,
16010 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
16011{
16012 auto stream = mImpl->stream();
16013 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016014 auto resources = mImpl->resources();
16015 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016016 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016017 VkCommandBuffer local_commandBuffer;
16018 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016019 VkConditionalRenderingBeginInfoEXT* local_pConditionalRenderingBegin;
16020 local_pConditionalRenderingBegin = nullptr;
16021 if (pConditionalRenderingBegin)
16022 {
16023 local_pConditionalRenderingBegin = (VkConditionalRenderingBeginInfoEXT*)pool->alloc(sizeof(const VkConditionalRenderingBeginInfoEXT));
16024 deepcopy_VkConditionalRenderingBeginInfoEXT(pool, pConditionalRenderingBegin, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
16025 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016026 countingStream->rewind();
16027 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016028 uint64_t cgen_var_1233;
16029 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1233, 1);
16030 countingStream->write((uint64_t*)&cgen_var_1233, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016031 marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016032 }
16033 uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16034 countingStream->rewind();
16035 uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT;
16036 stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
16037 stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016038 uint64_t cgen_var_1234;
16039 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1234, 1);
16040 stream->write((uint64_t*)&cgen_var_1234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016041 marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016042}
16043
16044void VkEncoder::vkCmdEndConditionalRenderingEXT(
16045 VkCommandBuffer commandBuffer)
16046{
16047 auto stream = mImpl->stream();
16048 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016049 auto resources = mImpl->resources();
16050 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016051 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016052 VkCommandBuffer local_commandBuffer;
16053 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016054 countingStream->rewind();
16055 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016056 uint64_t cgen_var_1235;
16057 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1235, 1);
16058 countingStream->write((uint64_t*)&cgen_var_1235, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016059 }
16060 uint32_t packetSize_vkCmdEndConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16061 countingStream->rewind();
16062 uint32_t opcode_vkCmdEndConditionalRenderingEXT = OP_vkCmdEndConditionalRenderingEXT;
16063 stream->write(&opcode_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
16064 stream->write(&packetSize_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016065 uint64_t cgen_var_1236;
16066 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1236, 1);
16067 stream->write((uint64_t*)&cgen_var_1236, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016068}
16069
16070#endif
16071#ifdef VK_NVX_device_generated_commands
16072void VkEncoder::vkCmdProcessCommandsNVX(
16073 VkCommandBuffer commandBuffer,
16074 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
16075{
16076 auto stream = mImpl->stream();
16077 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016078 auto resources = mImpl->resources();
16079 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016080 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016081 VkCommandBuffer local_commandBuffer;
16082 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016083 VkCmdProcessCommandsInfoNVX* local_pProcessCommandsInfo;
16084 local_pProcessCommandsInfo = nullptr;
16085 if (pProcessCommandsInfo)
16086 {
16087 local_pProcessCommandsInfo = (VkCmdProcessCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdProcessCommandsInfoNVX));
16088 deepcopy_VkCmdProcessCommandsInfoNVX(pool, pProcessCommandsInfo, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
16089 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016090 countingStream->rewind();
16091 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016092 uint64_t cgen_var_1237;
16093 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1237, 1);
16094 countingStream->write((uint64_t*)&cgen_var_1237, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016095 marshal_VkCmdProcessCommandsInfoNVX(countingStream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016096 }
16097 uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16098 countingStream->rewind();
16099 uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX;
16100 stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t));
16101 stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016102 uint64_t cgen_var_1238;
16103 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1238, 1);
16104 stream->write((uint64_t*)&cgen_var_1238, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016105 marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016106}
16107
16108void VkEncoder::vkCmdReserveSpaceForCommandsNVX(
16109 VkCommandBuffer commandBuffer,
16110 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
16111{
16112 auto stream = mImpl->stream();
16113 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016114 auto resources = mImpl->resources();
16115 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016116 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016117 VkCommandBuffer local_commandBuffer;
16118 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016119 VkCmdReserveSpaceForCommandsInfoNVX* local_pReserveSpaceInfo;
16120 local_pReserveSpaceInfo = nullptr;
16121 if (pReserveSpaceInfo)
16122 {
16123 local_pReserveSpaceInfo = (VkCmdReserveSpaceForCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdReserveSpaceForCommandsInfoNVX));
16124 deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(pool, pReserveSpaceInfo, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
16125 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016126 countingStream->rewind();
16127 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016128 uint64_t cgen_var_1239;
16129 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1239, 1);
16130 countingStream->write((uint64_t*)&cgen_var_1239, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016131 marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016132 }
16133 uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16134 countingStream->rewind();
16135 uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX;
16136 stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
16137 stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016138 uint64_t cgen_var_1240;
16139 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1240, 1);
16140 stream->write((uint64_t*)&cgen_var_1240, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016141 marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016142}
16143
16144VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX(
16145 VkDevice device,
16146 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
16147 const VkAllocationCallbacks* pAllocator,
16148 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
16149{
16150 auto stream = mImpl->stream();
16151 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016152 auto resources = mImpl->resources();
16153 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016154 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016155 VkDevice local_device;
16156 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016157 VkIndirectCommandsLayoutCreateInfoNVX* local_pCreateInfo;
16158 local_pCreateInfo = nullptr;
16159 if (pCreateInfo)
16160 {
16161 local_pCreateInfo = (VkIndirectCommandsLayoutCreateInfoNVX*)pool->alloc(sizeof(const VkIndirectCommandsLayoutCreateInfoNVX));
16162 deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(pool, pCreateInfo, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
16163 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016164 VkAllocationCallbacks* local_pAllocator;
16165 local_pAllocator = nullptr;
16166 if (pAllocator)
16167 {
16168 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16169 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16170 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016171 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016172 countingStream->rewind();
16173 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016174 uint64_t cgen_var_1241;
16175 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1241, 1);
16176 countingStream->write((uint64_t*)&cgen_var_1241, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016177 marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016178 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016179 uint64_t cgen_var_1242 = (uint64_t)(uintptr_t)local_pAllocator;
16180 countingStream->putBe64(cgen_var_1242);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016181 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016182 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016183 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016184 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016185 uint64_t cgen_var_1243;
16186 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1243, 1);
16187 countingStream->write((uint64_t*)&cgen_var_1243, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016188 }
16189 uint32_t packetSize_vkCreateIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16190 countingStream->rewind();
16191 uint32_t opcode_vkCreateIndirectCommandsLayoutNVX = OP_vkCreateIndirectCommandsLayoutNVX;
16192 stream->write(&opcode_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
16193 stream->write(&packetSize_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016194 uint64_t cgen_var_1244;
16195 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1244, 1);
16196 stream->write((uint64_t*)&cgen_var_1244, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016197 marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016198 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016199 uint64_t cgen_var_1245 = (uint64_t)(uintptr_t)local_pAllocator;
16200 stream->putBe64(cgen_var_1245);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016201 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016202 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016203 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016204 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016205 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016206 uint64_t cgen_var_1246;
16207 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1246, 1);
16208 stream->write((uint64_t*)&cgen_var_1246, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016209 stream->setHandleMapping(resources->unwrapMapping());
16210 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016211 uint64_t cgen_var_1247;
16212 stream->read((uint64_t*)&cgen_var_1247, 8);
16213 stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1247, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016214 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016215 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
16216 stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016217 countingStream->clearPool();
16218 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016219 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016220 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
16221}
16222
16223void VkEncoder::vkDestroyIndirectCommandsLayoutNVX(
16224 VkDevice device,
16225 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
16226 const VkAllocationCallbacks* pAllocator)
16227{
16228 auto stream = mImpl->stream();
16229 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016230 auto resources = mImpl->resources();
16231 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016232 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016233 VkDevice local_device;
16234 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016235 VkIndirectCommandsLayoutNVX local_indirectCommandsLayout;
16236 local_indirectCommandsLayout = indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016237 VkAllocationCallbacks* local_pAllocator;
16238 local_pAllocator = nullptr;
16239 if (pAllocator)
16240 {
16241 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16242 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16243 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016244 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016245 countingStream->rewind();
16246 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016247 uint64_t cgen_var_1248;
16248 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1248, 1);
16249 countingStream->write((uint64_t*)&cgen_var_1248, 1 * 8);
16250 uint64_t cgen_var_1249;
16251 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1249, 1);
16252 countingStream->write((uint64_t*)&cgen_var_1249, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016253 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016254 uint64_t cgen_var_1250 = (uint64_t)(uintptr_t)local_pAllocator;
16255 countingStream->putBe64(cgen_var_1250);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016256 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016257 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016258 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016259 }
16260 }
16261 uint32_t packetSize_vkDestroyIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16262 countingStream->rewind();
16263 uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX;
16264 stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
16265 stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016266 uint64_t cgen_var_1251;
16267 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1251, 1);
16268 stream->write((uint64_t*)&cgen_var_1251, 1 * 8);
16269 uint64_t cgen_var_1252;
16270 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1252, 1);
16271 stream->write((uint64_t*)&cgen_var_1252, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016272 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016273 uint64_t cgen_var_1253 = (uint64_t)(uintptr_t)local_pAllocator;
16274 stream->putBe64(cgen_var_1253);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016275 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016276 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016277 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016278 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016279 resources->destroyMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016280}
16281
16282VkResult VkEncoder::vkCreateObjectTableNVX(
16283 VkDevice device,
16284 const VkObjectTableCreateInfoNVX* pCreateInfo,
16285 const VkAllocationCallbacks* pAllocator,
16286 VkObjectTableNVX* pObjectTable)
16287{
16288 auto stream = mImpl->stream();
16289 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016290 auto resources = mImpl->resources();
16291 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016292 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016293 VkDevice local_device;
16294 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016295 VkObjectTableCreateInfoNVX* local_pCreateInfo;
16296 local_pCreateInfo = nullptr;
16297 if (pCreateInfo)
16298 {
16299 local_pCreateInfo = (VkObjectTableCreateInfoNVX*)pool->alloc(sizeof(const VkObjectTableCreateInfoNVX));
16300 deepcopy_VkObjectTableCreateInfoNVX(pool, pCreateInfo, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
16301 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016302 VkAllocationCallbacks* local_pAllocator;
16303 local_pAllocator = nullptr;
16304 if (pAllocator)
16305 {
16306 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16307 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16308 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016309 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016310 countingStream->rewind();
16311 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016312 uint64_t cgen_var_1254;
16313 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1254, 1);
16314 countingStream->write((uint64_t*)&cgen_var_1254, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016315 marshal_VkObjectTableCreateInfoNVX(countingStream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016316 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016317 uint64_t cgen_var_1255 = (uint64_t)(uintptr_t)local_pAllocator;
16318 countingStream->putBe64(cgen_var_1255);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016319 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016320 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016321 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016322 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016323 uint64_t cgen_var_1256;
16324 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1256, 1);
16325 countingStream->write((uint64_t*)&cgen_var_1256, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016326 }
16327 uint32_t packetSize_vkCreateObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16328 countingStream->rewind();
16329 uint32_t opcode_vkCreateObjectTableNVX = OP_vkCreateObjectTableNVX;
16330 stream->write(&opcode_vkCreateObjectTableNVX, sizeof(uint32_t));
16331 stream->write(&packetSize_vkCreateObjectTableNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016332 uint64_t cgen_var_1257;
16333 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1257, 1);
16334 stream->write((uint64_t*)&cgen_var_1257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016335 marshal_VkObjectTableCreateInfoNVX(stream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016336 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016337 uint64_t cgen_var_1258 = (uint64_t)(uintptr_t)local_pAllocator;
16338 stream->putBe64(cgen_var_1258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016339 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016340 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016341 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016342 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016343 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016344 uint64_t cgen_var_1259;
16345 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1259, 1);
16346 stream->write((uint64_t*)&cgen_var_1259, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016347 stream->setHandleMapping(resources->unwrapMapping());
16348 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016349 uint64_t cgen_var_1260;
16350 stream->read((uint64_t*)&cgen_var_1260, 8);
16351 stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1260, (VkObjectTableNVX*)pObjectTable, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016352 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016353 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
16354 stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016355 countingStream->clearPool();
16356 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016357 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016358 return vkCreateObjectTableNVX_VkResult_return;
16359}
16360
16361void VkEncoder::vkDestroyObjectTableNVX(
16362 VkDevice device,
16363 VkObjectTableNVX objectTable,
16364 const VkAllocationCallbacks* pAllocator)
16365{
16366 auto stream = mImpl->stream();
16367 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016368 auto resources = mImpl->resources();
16369 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016370 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016371 VkDevice local_device;
16372 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016373 VkObjectTableNVX local_objectTable;
16374 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016375 VkAllocationCallbacks* local_pAllocator;
16376 local_pAllocator = nullptr;
16377 if (pAllocator)
16378 {
16379 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16380 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16381 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016382 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016383 countingStream->rewind();
16384 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016385 uint64_t cgen_var_1261;
16386 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1261, 1);
16387 countingStream->write((uint64_t*)&cgen_var_1261, 1 * 8);
16388 uint64_t cgen_var_1262;
16389 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1262, 1);
16390 countingStream->write((uint64_t*)&cgen_var_1262, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016391 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016392 uint64_t cgen_var_1263 = (uint64_t)(uintptr_t)local_pAllocator;
16393 countingStream->putBe64(cgen_var_1263);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016394 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016395 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016396 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016397 }
16398 }
16399 uint32_t packetSize_vkDestroyObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16400 countingStream->rewind();
16401 uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX;
16402 stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t));
16403 stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016404 uint64_t cgen_var_1264;
16405 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1264, 1);
16406 stream->write((uint64_t*)&cgen_var_1264, 1 * 8);
16407 uint64_t cgen_var_1265;
16408 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1265, 1);
16409 stream->write((uint64_t*)&cgen_var_1265, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016410 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016411 uint64_t cgen_var_1266 = (uint64_t)(uintptr_t)local_pAllocator;
16412 stream->putBe64(cgen_var_1266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016413 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016414 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016415 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016416 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016417 resources->destroyMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&objectTable);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016418}
16419
16420VkResult VkEncoder::vkRegisterObjectsNVX(
16421 VkDevice device,
16422 VkObjectTableNVX objectTable,
16423 uint32_t objectCount,
16424 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
16425 const uint32_t* pObjectIndices)
16426{
16427 auto stream = mImpl->stream();
16428 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016429 auto resources = mImpl->resources();
16430 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016431 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016432 VkDevice local_device;
16433 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016434 VkObjectTableNVX local_objectTable;
16435 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016436 uint32_t local_objectCount;
16437 local_objectCount = objectCount;
16438 VkObjectTableEntryNVX** local_ppObjectTableEntries;
Lingfeng Yang36891c52018-11-09 14:18:35 -080016439 (void)ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016440 uint32_t* local_pObjectIndices;
16441 local_pObjectIndices = nullptr;
16442 if (pObjectIndices)
16443 {
16444 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
16445 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016446 countingStream->rewind();
16447 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016448 uint64_t cgen_var_1267;
16449 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1267, 1);
16450 countingStream->write((uint64_t*)&cgen_var_1267, 1 * 8);
16451 uint64_t cgen_var_1268;
16452 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1268, 1);
16453 countingStream->write((uint64_t*)&cgen_var_1268, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016454 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080016455 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016456 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016457 }
16458 uint32_t packetSize_vkRegisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16459 countingStream->rewind();
16460 uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX;
16461 stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t));
16462 stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016463 uint64_t cgen_var_1269;
16464 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1269, 1);
16465 stream->write((uint64_t*)&cgen_var_1269, 1 * 8);
16466 uint64_t cgen_var_1270;
16467 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1270, 1);
16468 stream->write((uint64_t*)&cgen_var_1270, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016469 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080016470 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016471 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016472 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
16473 stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016474 countingStream->clearPool();
16475 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016476 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016477 return vkRegisterObjectsNVX_VkResult_return;
16478}
16479
16480VkResult VkEncoder::vkUnregisterObjectsNVX(
16481 VkDevice device,
16482 VkObjectTableNVX objectTable,
16483 uint32_t objectCount,
16484 const VkObjectEntryTypeNVX* pObjectEntryTypes,
16485 const uint32_t* pObjectIndices)
16486{
16487 auto stream = mImpl->stream();
16488 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016489 auto resources = mImpl->resources();
16490 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016491 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016492 VkDevice local_device;
16493 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016494 VkObjectTableNVX local_objectTable;
16495 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016496 uint32_t local_objectCount;
16497 local_objectCount = objectCount;
16498 VkObjectEntryTypeNVX* local_pObjectEntryTypes;
16499 local_pObjectEntryTypes = nullptr;
16500 if (pObjectEntryTypes)
16501 {
16502 local_pObjectEntryTypes = (VkObjectEntryTypeNVX*)pool->dupArray(pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
16503 }
16504 uint32_t* local_pObjectIndices;
16505 local_pObjectIndices = nullptr;
16506 if (pObjectIndices)
16507 {
16508 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
16509 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016510 countingStream->rewind();
16511 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016512 uint64_t cgen_var_1271;
16513 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1271, 1);
16514 countingStream->write((uint64_t*)&cgen_var_1271, 1 * 8);
16515 uint64_t cgen_var_1272;
16516 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1272, 1);
16517 countingStream->write((uint64_t*)&cgen_var_1272, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016518 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
16519 countingStream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
16520 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016521 }
16522 uint32_t packetSize_vkUnregisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16523 countingStream->rewind();
16524 uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX;
16525 stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t));
16526 stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016527 uint64_t cgen_var_1273;
16528 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1273, 1);
16529 stream->write((uint64_t*)&cgen_var_1273, 1 * 8);
16530 uint64_t cgen_var_1274;
16531 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1274, 1);
16532 stream->write((uint64_t*)&cgen_var_1274, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016533 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
16534 stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
16535 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016536 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
16537 stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016538 countingStream->clearPool();
16539 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016540 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016541 return vkUnregisterObjectsNVX_VkResult_return;
16542}
16543
16544void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
16545 VkPhysicalDevice physicalDevice,
16546 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
16547 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
16548{
16549 auto stream = mImpl->stream();
16550 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016551 auto resources = mImpl->resources();
16552 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016553 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016554 VkPhysicalDevice local_physicalDevice;
16555 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016556 countingStream->rewind();
16557 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016558 uint64_t cgen_var_1275;
16559 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1275, 1);
16560 countingStream->write((uint64_t*)&cgen_var_1275, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016561 marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16562 marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16563 }
16564 uint32_t packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16565 countingStream->rewind();
16566 uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
16567 stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
16568 stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016569 uint64_t cgen_var_1276;
16570 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1276, 1);
16571 stream->write((uint64_t*)&cgen_var_1276, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016572 marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16573 marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16574 unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16575 unmarshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16576}
16577
16578#endif
16579#ifdef VK_NV_clip_space_w_scaling
16580void VkEncoder::vkCmdSetViewportWScalingNV(
16581 VkCommandBuffer commandBuffer,
16582 uint32_t firstViewport,
16583 uint32_t viewportCount,
16584 const VkViewportWScalingNV* pViewportWScalings)
16585{
16586 auto stream = mImpl->stream();
16587 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016588 auto resources = mImpl->resources();
16589 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016590 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016591 VkCommandBuffer local_commandBuffer;
16592 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016593 uint32_t local_firstViewport;
16594 local_firstViewport = firstViewport;
16595 uint32_t local_viewportCount;
16596 local_viewportCount = viewportCount;
16597 VkViewportWScalingNV* local_pViewportWScalings;
16598 local_pViewportWScalings = nullptr;
16599 if (pViewportWScalings)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016600 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016601 local_pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(((viewportCount)) * sizeof(const VkViewportWScalingNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016602 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16603 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016604 deepcopy_VkViewportWScalingNV(pool, pViewportWScalings + i, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
16605 }
16606 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016607 countingStream->rewind();
16608 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016609 uint64_t cgen_var_1277;
16610 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1277, 1);
16611 countingStream->write((uint64_t*)&cgen_var_1277, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016612 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
16613 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
16614 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16615 {
16616 marshal_VkViewportWScalingNV(countingStream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016617 }
16618 }
16619 uint32_t packetSize_vkCmdSetViewportWScalingNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16620 countingStream->rewind();
16621 uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV;
16622 stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
16623 stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016624 uint64_t cgen_var_1278;
16625 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1278, 1);
16626 stream->write((uint64_t*)&cgen_var_1278, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016627 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
16628 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016629 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16630 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016631 marshal_VkViewportWScalingNV(stream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016632 }
16633}
16634
16635#endif
16636#ifdef VK_EXT_direct_mode_display
16637VkResult VkEncoder::vkReleaseDisplayEXT(
16638 VkPhysicalDevice physicalDevice,
16639 VkDisplayKHR display)
16640{
16641 auto stream = mImpl->stream();
16642 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016643 auto resources = mImpl->resources();
16644 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016645 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016646 VkPhysicalDevice local_physicalDevice;
16647 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016648 VkDisplayKHR local_display;
16649 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016650 countingStream->rewind();
16651 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016652 uint64_t cgen_var_1279;
16653 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1279, 1);
16654 countingStream->write((uint64_t*)&cgen_var_1279, 1 * 8);
16655 uint64_t cgen_var_1280;
16656 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1280, 1);
16657 countingStream->write((uint64_t*)&cgen_var_1280, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016658 }
16659 uint32_t packetSize_vkReleaseDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16660 countingStream->rewind();
16661 uint32_t opcode_vkReleaseDisplayEXT = OP_vkReleaseDisplayEXT;
16662 stream->write(&opcode_vkReleaseDisplayEXT, sizeof(uint32_t));
16663 stream->write(&packetSize_vkReleaseDisplayEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016664 uint64_t cgen_var_1281;
16665 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1281, 1);
16666 stream->write((uint64_t*)&cgen_var_1281, 1 * 8);
16667 uint64_t cgen_var_1282;
16668 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1282, 1);
16669 stream->write((uint64_t*)&cgen_var_1282, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016670 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
16671 stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016672 countingStream->clearPool();
16673 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016674 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016675 return vkReleaseDisplayEXT_VkResult_return;
16676}
16677
16678#endif
16679#ifdef VK_EXT_acquire_xlib_display
16680VkResult VkEncoder::vkAcquireXlibDisplayEXT(
16681 VkPhysicalDevice physicalDevice,
16682 Display* dpy,
16683 VkDisplayKHR display)
16684{
16685 auto stream = mImpl->stream();
16686 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016687 auto resources = mImpl->resources();
16688 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016689 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016690 VkPhysicalDevice local_physicalDevice;
16691 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016692 VkDisplayKHR local_display;
16693 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016694 countingStream->rewind();
16695 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016696 uint64_t cgen_var_1283;
16697 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1283, 1);
16698 countingStream->write((uint64_t*)&cgen_var_1283, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016699 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016700 uint64_t cgen_var_1284;
16701 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1284, 1);
16702 countingStream->write((uint64_t*)&cgen_var_1284, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016703 }
16704 uint32_t packetSize_vkAcquireXlibDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16705 countingStream->rewind();
16706 uint32_t opcode_vkAcquireXlibDisplayEXT = OP_vkAcquireXlibDisplayEXT;
16707 stream->write(&opcode_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
16708 stream->write(&packetSize_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016709 uint64_t cgen_var_1285;
16710 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1285, 1);
16711 stream->write((uint64_t*)&cgen_var_1285, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016712 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016713 uint64_t cgen_var_1286;
16714 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1286, 1);
16715 stream->write((uint64_t*)&cgen_var_1286, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016716 stream->read((Display*)dpy, sizeof(Display));
16717 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
16718 stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016719 countingStream->clearPool();
16720 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016721 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016722 return vkAcquireXlibDisplayEXT_VkResult_return;
16723}
16724
16725VkResult VkEncoder::vkGetRandROutputDisplayEXT(
16726 VkPhysicalDevice physicalDevice,
16727 Display* dpy,
16728 RROutput rrOutput,
16729 VkDisplayKHR* pDisplay)
16730{
16731 auto stream = mImpl->stream();
16732 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016733 auto resources = mImpl->resources();
16734 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016735 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016736 VkPhysicalDevice local_physicalDevice;
16737 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016738 RROutput local_rrOutput;
16739 local_rrOutput = rrOutput;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016740 countingStream->rewind();
16741 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016742 uint64_t cgen_var_1287;
16743 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1287, 1);
16744 countingStream->write((uint64_t*)&cgen_var_1287, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016745 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016746 countingStream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016747 uint64_t cgen_var_1288;
16748 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1288, 1);
16749 countingStream->write((uint64_t*)&cgen_var_1288, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016750 }
16751 uint32_t packetSize_vkGetRandROutputDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16752 countingStream->rewind();
16753 uint32_t opcode_vkGetRandROutputDisplayEXT = OP_vkGetRandROutputDisplayEXT;
16754 stream->write(&opcode_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
16755 stream->write(&packetSize_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016756 uint64_t cgen_var_1289;
16757 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1289, 1);
16758 stream->write((uint64_t*)&cgen_var_1289, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016759 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016760 stream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yange4008a02018-11-18 12:22:48 -080016761 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016762 uint64_t cgen_var_1290;
16763 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1290, 1);
16764 stream->write((uint64_t*)&cgen_var_1290, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016765 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016766 stream->read((Display*)dpy, sizeof(Display));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016767 uint64_t cgen_var_1291;
16768 stream->read((uint64_t*)&cgen_var_1291, 8);
16769 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1291, (VkDisplayKHR*)pDisplay, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016770 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
16771 stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016772 countingStream->clearPool();
16773 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016774 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016775 return vkGetRandROutputDisplayEXT_VkResult_return;
16776}
16777
16778#endif
16779#ifdef VK_EXT_display_surface_counter
16780VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT(
16781 VkPhysicalDevice physicalDevice,
16782 VkSurfaceKHR surface,
16783 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
16784{
16785 auto stream = mImpl->stream();
16786 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016787 auto resources = mImpl->resources();
16788 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016789 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016790 VkPhysicalDevice local_physicalDevice;
16791 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016792 VkSurfaceKHR local_surface;
16793 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016794 countingStream->rewind();
16795 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016796 uint64_t cgen_var_1292;
16797 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1292, 1);
16798 countingStream->write((uint64_t*)&cgen_var_1292, 1 * 8);
16799 uint64_t cgen_var_1293;
16800 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1293, 1);
16801 countingStream->write((uint64_t*)&cgen_var_1293, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016802 marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
16803 }
16804 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16805 countingStream->rewind();
16806 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
16807 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
16808 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016809 uint64_t cgen_var_1294;
16810 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1294, 1);
16811 stream->write((uint64_t*)&cgen_var_1294, 1 * 8);
16812 uint64_t cgen_var_1295;
16813 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1295, 1);
16814 stream->write((uint64_t*)&cgen_var_1295, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016815 marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
16816 unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
16817 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
16818 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016819 countingStream->clearPool();
16820 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016821 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016822 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
16823}
16824
16825#endif
16826#ifdef VK_EXT_display_control
16827VkResult VkEncoder::vkDisplayPowerControlEXT(
16828 VkDevice device,
16829 VkDisplayKHR display,
16830 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
16831{
16832 auto stream = mImpl->stream();
16833 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016834 auto resources = mImpl->resources();
16835 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016836 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016837 VkDevice local_device;
16838 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016839 VkDisplayKHR local_display;
16840 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016841 VkDisplayPowerInfoEXT* local_pDisplayPowerInfo;
16842 local_pDisplayPowerInfo = nullptr;
16843 if (pDisplayPowerInfo)
16844 {
16845 local_pDisplayPowerInfo = (VkDisplayPowerInfoEXT*)pool->alloc(sizeof(const VkDisplayPowerInfoEXT));
16846 deepcopy_VkDisplayPowerInfoEXT(pool, pDisplayPowerInfo, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
16847 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016848 countingStream->rewind();
16849 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016850 uint64_t cgen_var_1296;
16851 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1296, 1);
16852 countingStream->write((uint64_t*)&cgen_var_1296, 1 * 8);
16853 uint64_t cgen_var_1297;
16854 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1297, 1);
16855 countingStream->write((uint64_t*)&cgen_var_1297, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016856 marshal_VkDisplayPowerInfoEXT(countingStream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016857 }
16858 uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16859 countingStream->rewind();
16860 uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT;
16861 stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t));
16862 stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016863 uint64_t cgen_var_1298;
16864 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1298, 1);
16865 stream->write((uint64_t*)&cgen_var_1298, 1 * 8);
16866 uint64_t cgen_var_1299;
16867 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1299, 1);
16868 stream->write((uint64_t*)&cgen_var_1299, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016869 marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016870 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
16871 stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016872 countingStream->clearPool();
16873 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016874 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016875 return vkDisplayPowerControlEXT_VkResult_return;
16876}
16877
16878VkResult VkEncoder::vkRegisterDeviceEventEXT(
16879 VkDevice device,
16880 const VkDeviceEventInfoEXT* pDeviceEventInfo,
16881 const VkAllocationCallbacks* pAllocator,
16882 VkFence* pFence)
16883{
16884 auto stream = mImpl->stream();
16885 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016886 auto resources = mImpl->resources();
16887 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016888 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016889 VkDevice local_device;
16890 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016891 VkDeviceEventInfoEXT* local_pDeviceEventInfo;
16892 local_pDeviceEventInfo = nullptr;
16893 if (pDeviceEventInfo)
16894 {
16895 local_pDeviceEventInfo = (VkDeviceEventInfoEXT*)pool->alloc(sizeof(const VkDeviceEventInfoEXT));
16896 deepcopy_VkDeviceEventInfoEXT(pool, pDeviceEventInfo, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
16897 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016898 VkAllocationCallbacks* local_pAllocator;
16899 local_pAllocator = nullptr;
16900 if (pAllocator)
16901 {
16902 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16903 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16904 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016905 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016906 countingStream->rewind();
16907 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016908 uint64_t cgen_var_1300;
16909 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1300, 1);
16910 countingStream->write((uint64_t*)&cgen_var_1300, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016911 marshal_VkDeviceEventInfoEXT(countingStream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016912 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016913 uint64_t cgen_var_1301 = (uint64_t)(uintptr_t)local_pAllocator;
16914 countingStream->putBe64(cgen_var_1301);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016915 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016916 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016917 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016918 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016919 uint64_t cgen_var_1302;
16920 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1302, 1);
16921 countingStream->write((uint64_t*)&cgen_var_1302, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016922 }
16923 uint32_t packetSize_vkRegisterDeviceEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16924 countingStream->rewind();
16925 uint32_t opcode_vkRegisterDeviceEventEXT = OP_vkRegisterDeviceEventEXT;
16926 stream->write(&opcode_vkRegisterDeviceEventEXT, sizeof(uint32_t));
16927 stream->write(&packetSize_vkRegisterDeviceEventEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016928 uint64_t cgen_var_1303;
16929 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1303, 1);
16930 stream->write((uint64_t*)&cgen_var_1303, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016931 marshal_VkDeviceEventInfoEXT(stream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016932 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016933 uint64_t cgen_var_1304 = (uint64_t)(uintptr_t)local_pAllocator;
16934 stream->putBe64(cgen_var_1304);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016935 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016936 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016937 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016938 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016939 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016940 uint64_t cgen_var_1305;
16941 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1305, 1);
16942 stream->write((uint64_t*)&cgen_var_1305, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016943 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016944 uint64_t cgen_var_1306;
16945 stream->read((uint64_t*)&cgen_var_1306, 8);
16946 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1306, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016947 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
16948 stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016949 countingStream->clearPool();
16950 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016951 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016952 return vkRegisterDeviceEventEXT_VkResult_return;
16953}
16954
16955VkResult VkEncoder::vkRegisterDisplayEventEXT(
16956 VkDevice device,
16957 VkDisplayKHR display,
16958 const VkDisplayEventInfoEXT* pDisplayEventInfo,
16959 const VkAllocationCallbacks* pAllocator,
16960 VkFence* pFence)
16961{
16962 auto stream = mImpl->stream();
16963 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016964 auto resources = mImpl->resources();
16965 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016966 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016967 VkDevice local_device;
16968 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016969 VkDisplayKHR local_display;
16970 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016971 VkDisplayEventInfoEXT* local_pDisplayEventInfo;
16972 local_pDisplayEventInfo = nullptr;
16973 if (pDisplayEventInfo)
16974 {
16975 local_pDisplayEventInfo = (VkDisplayEventInfoEXT*)pool->alloc(sizeof(const VkDisplayEventInfoEXT));
16976 deepcopy_VkDisplayEventInfoEXT(pool, pDisplayEventInfo, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
16977 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016978 VkAllocationCallbacks* local_pAllocator;
16979 local_pAllocator = nullptr;
16980 if (pAllocator)
16981 {
16982 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16983 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16984 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016985 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016986 countingStream->rewind();
16987 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016988 uint64_t cgen_var_1307;
16989 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1307, 1);
16990 countingStream->write((uint64_t*)&cgen_var_1307, 1 * 8);
16991 uint64_t cgen_var_1308;
16992 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1308, 1);
16993 countingStream->write((uint64_t*)&cgen_var_1308, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016994 marshal_VkDisplayEventInfoEXT(countingStream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016995 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016996 uint64_t cgen_var_1309 = (uint64_t)(uintptr_t)local_pAllocator;
16997 countingStream->putBe64(cgen_var_1309);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016998 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016999 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017000 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017001 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017002 uint64_t cgen_var_1310;
17003 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1310, 1);
17004 countingStream->write((uint64_t*)&cgen_var_1310, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017005 }
17006 uint32_t packetSize_vkRegisterDisplayEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17007 countingStream->rewind();
17008 uint32_t opcode_vkRegisterDisplayEventEXT = OP_vkRegisterDisplayEventEXT;
17009 stream->write(&opcode_vkRegisterDisplayEventEXT, sizeof(uint32_t));
17010 stream->write(&packetSize_vkRegisterDisplayEventEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017011 uint64_t cgen_var_1311;
17012 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1311, 1);
17013 stream->write((uint64_t*)&cgen_var_1311, 1 * 8);
17014 uint64_t cgen_var_1312;
17015 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1312, 1);
17016 stream->write((uint64_t*)&cgen_var_1312, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017017 marshal_VkDisplayEventInfoEXT(stream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017018 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017019 uint64_t cgen_var_1313 = (uint64_t)(uintptr_t)local_pAllocator;
17020 stream->putBe64(cgen_var_1313);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017021 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017022 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017023 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017024 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017025 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017026 uint64_t cgen_var_1314;
17027 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1314, 1);
17028 stream->write((uint64_t*)&cgen_var_1314, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017029 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017030 uint64_t cgen_var_1315;
17031 stream->read((uint64_t*)&cgen_var_1315, 8);
17032 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1315, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017033 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
17034 stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017035 countingStream->clearPool();
17036 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017037 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017038 return vkRegisterDisplayEventEXT_VkResult_return;
17039}
17040
17041VkResult VkEncoder::vkGetSwapchainCounterEXT(
17042 VkDevice device,
17043 VkSwapchainKHR swapchain,
17044 VkSurfaceCounterFlagBitsEXT counter,
17045 uint64_t* pCounterValue)
17046{
17047 auto stream = mImpl->stream();
17048 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017049 auto resources = mImpl->resources();
17050 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017051 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017052 VkDevice local_device;
17053 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017054 VkSwapchainKHR local_swapchain;
17055 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017056 VkSurfaceCounterFlagBitsEXT local_counter;
17057 local_counter = counter;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017058 countingStream->rewind();
17059 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017060 uint64_t cgen_var_1316;
17061 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1316, 1);
17062 countingStream->write((uint64_t*)&cgen_var_1316, 1 * 8);
17063 uint64_t cgen_var_1317;
17064 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1317, 1);
17065 countingStream->write((uint64_t*)&cgen_var_1317, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017066 countingStream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017067 countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
17068 }
17069 uint32_t packetSize_vkGetSwapchainCounterEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17070 countingStream->rewind();
17071 uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT;
17072 stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t));
17073 stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017074 uint64_t cgen_var_1318;
17075 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1318, 1);
17076 stream->write((uint64_t*)&cgen_var_1318, 1 * 8);
17077 uint64_t cgen_var_1319;
17078 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1319, 1);
17079 stream->write((uint64_t*)&cgen_var_1319, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017080 stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017081 stream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
17082 stream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
17083 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
17084 stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017085 countingStream->clearPool();
17086 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017087 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017088 return vkGetSwapchainCounterEXT_VkResult_return;
17089}
17090
17091#endif
17092#ifdef VK_GOOGLE_display_timing
17093VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE(
17094 VkDevice device,
17095 VkSwapchainKHR swapchain,
17096 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
17097{
17098 auto stream = mImpl->stream();
17099 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017100 auto resources = mImpl->resources();
17101 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017102 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017103 VkDevice local_device;
17104 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017105 VkSwapchainKHR local_swapchain;
17106 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017107 countingStream->rewind();
17108 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017109 uint64_t cgen_var_1320;
17110 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1320, 1);
17111 countingStream->write((uint64_t*)&cgen_var_1320, 1 * 8);
17112 uint64_t cgen_var_1321;
17113 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1321, 1);
17114 countingStream->write((uint64_t*)&cgen_var_1321, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017115 marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17116 }
17117 uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17118 countingStream->rewind();
17119 uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE;
17120 stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
17121 stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017122 uint64_t cgen_var_1322;
17123 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1322, 1);
17124 stream->write((uint64_t*)&cgen_var_1322, 1 * 8);
17125 uint64_t cgen_var_1323;
17126 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1323, 1);
17127 stream->write((uint64_t*)&cgen_var_1323, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017128 marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17129 unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17130 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
17131 stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017132 countingStream->clearPool();
17133 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017134 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017135 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
17136}
17137
17138VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE(
17139 VkDevice device,
17140 VkSwapchainKHR swapchain,
17141 uint32_t* pPresentationTimingCount,
17142 VkPastPresentationTimingGOOGLE* pPresentationTimings)
17143{
17144 auto stream = mImpl->stream();
17145 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017146 auto resources = mImpl->resources();
17147 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017148 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017149 VkDevice local_device;
17150 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017151 VkSwapchainKHR local_swapchain;
17152 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017153 countingStream->rewind();
17154 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017155 uint64_t cgen_var_1324;
17156 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1324, 1);
17157 countingStream->write((uint64_t*)&cgen_var_1324, 1 * 8);
17158 uint64_t cgen_var_1325;
17159 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1325, 1);
17160 countingStream->write((uint64_t*)&cgen_var_1325, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017161 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017162 uint64_t cgen_var_1326 = (uint64_t)(uintptr_t)pPresentationTimingCount;
17163 countingStream->putBe64(cgen_var_1326);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017164 if (pPresentationTimingCount)
17165 {
17166 countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17167 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017168 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017169 uint64_t cgen_var_1327 = (uint64_t)(uintptr_t)pPresentationTimings;
17170 countingStream->putBe64(cgen_var_1327);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017171 if (pPresentationTimings)
17172 {
17173 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17174 {
17175 marshal_VkPastPresentationTimingGOOGLE(countingStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17176 }
17177 }
17178 }
17179 uint32_t packetSize_vkGetPastPresentationTimingGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17180 countingStream->rewind();
17181 uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE;
17182 stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
17183 stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017184 uint64_t cgen_var_1328;
17185 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1328, 1);
17186 stream->write((uint64_t*)&cgen_var_1328, 1 * 8);
17187 uint64_t cgen_var_1329;
17188 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1329, 1);
17189 stream->write((uint64_t*)&cgen_var_1329, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017190 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017191 uint64_t cgen_var_1330 = (uint64_t)(uintptr_t)pPresentationTimingCount;
17192 stream->putBe64(cgen_var_1330);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017193 if (pPresentationTimingCount)
17194 {
17195 stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17196 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017197 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017198 uint64_t cgen_var_1331 = (uint64_t)(uintptr_t)pPresentationTimings;
17199 stream->putBe64(cgen_var_1331);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017200 if (pPresentationTimings)
17201 {
17202 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17203 {
17204 marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17205 }
17206 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017207 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017208 uint32_t* check_pPresentationTimingCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017209 check_pPresentationTimingCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017210 if (pPresentationTimingCount)
17211 {
17212 if (!(check_pPresentationTimingCount))
17213 {
17214 fprintf(stderr, "fatal: pPresentationTimingCount inconsistent between guest and host\n");
17215 }
17216 stream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17217 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017218 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017219 VkPastPresentationTimingGOOGLE* check_pPresentationTimings;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017220 check_pPresentationTimings = (VkPastPresentationTimingGOOGLE*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017221 if (pPresentationTimings)
17222 {
17223 if (!(check_pPresentationTimings))
17224 {
17225 fprintf(stderr, "fatal: pPresentationTimings inconsistent between guest and host\n");
17226 }
17227 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17228 {
17229 unmarshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17230 }
17231 }
17232 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
17233 stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017234 countingStream->clearPool();
17235 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017236 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017237 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
17238}
17239
17240#endif
17241#ifdef VK_NV_sample_mask_override_coverage
17242#endif
17243#ifdef VK_NV_geometry_shader_passthrough
17244#endif
17245#ifdef VK_NV_viewport_array2
17246#endif
17247#ifdef VK_NVX_multiview_per_view_attributes
17248#endif
17249#ifdef VK_NV_viewport_swizzle
17250#endif
17251#ifdef VK_EXT_discard_rectangles
17252void VkEncoder::vkCmdSetDiscardRectangleEXT(
17253 VkCommandBuffer commandBuffer,
17254 uint32_t firstDiscardRectangle,
17255 uint32_t discardRectangleCount,
17256 const VkRect2D* pDiscardRectangles)
17257{
17258 auto stream = mImpl->stream();
17259 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017260 auto resources = mImpl->resources();
17261 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017262 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017263 VkCommandBuffer local_commandBuffer;
17264 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017265 uint32_t local_firstDiscardRectangle;
17266 local_firstDiscardRectangle = firstDiscardRectangle;
17267 uint32_t local_discardRectangleCount;
17268 local_discardRectangleCount = discardRectangleCount;
17269 VkRect2D* local_pDiscardRectangles;
17270 local_pDiscardRectangles = nullptr;
17271 if (pDiscardRectangles)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017272 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017273 local_pDiscardRectangles = (VkRect2D*)pool->alloc(((discardRectangleCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017274 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17275 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017276 deepcopy_VkRect2D(pool, pDiscardRectangles + i, (VkRect2D*)(local_pDiscardRectangles + i));
17277 }
17278 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017279 countingStream->rewind();
17280 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017281 uint64_t cgen_var_1334;
17282 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1334, 1);
17283 countingStream->write((uint64_t*)&cgen_var_1334, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017284 countingStream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
17285 countingStream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
17286 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17287 {
17288 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017289 }
17290 }
17291 uint32_t packetSize_vkCmdSetDiscardRectangleEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17292 countingStream->rewind();
17293 uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT;
17294 stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
17295 stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017296 uint64_t cgen_var_1335;
17297 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1335, 1);
17298 stream->write((uint64_t*)&cgen_var_1335, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017299 stream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
17300 stream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017301 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17302 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017303 marshal_VkRect2D(stream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017304 }
17305}
17306
17307#endif
17308#ifdef VK_EXT_conservative_rasterization
17309#endif
17310#ifdef VK_EXT_swapchain_colorspace
17311#endif
17312#ifdef VK_EXT_hdr_metadata
17313void VkEncoder::vkSetHdrMetadataEXT(
17314 VkDevice device,
17315 uint32_t swapchainCount,
17316 const VkSwapchainKHR* pSwapchains,
17317 const VkHdrMetadataEXT* pMetadata)
17318{
17319 auto stream = mImpl->stream();
17320 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017321 auto resources = mImpl->resources();
17322 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017323 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017324 VkDevice local_device;
17325 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017326 uint32_t local_swapchainCount;
17327 local_swapchainCount = swapchainCount;
17328 VkSwapchainKHR* local_pSwapchains;
17329 local_pSwapchains = nullptr;
17330 if (pSwapchains)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017331 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017332 local_pSwapchains = (VkSwapchainKHR*)pool->dupArray(pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
17333 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017334 VkHdrMetadataEXT* local_pMetadata;
17335 local_pMetadata = nullptr;
17336 if (pMetadata)
17337 {
17338 local_pMetadata = (VkHdrMetadataEXT*)pool->alloc(((swapchainCount)) * sizeof(const VkHdrMetadataEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017339 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17340 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017341 deepcopy_VkHdrMetadataEXT(pool, pMetadata + i, (VkHdrMetadataEXT*)(local_pMetadata + i));
17342 }
17343 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017344 countingStream->rewind();
17345 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017346 uint64_t cgen_var_1336;
17347 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1336, 1);
17348 countingStream->write((uint64_t*)&cgen_var_1336, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017349 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017350 if (((swapchainCount)))
17351 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017352 uint64_t* cgen_var_1337;
17353 countingStream->alloc((void**)&cgen_var_1337, ((swapchainCount)) * 8);
17354 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1337, ((swapchainCount)));
17355 countingStream->write((uint64_t*)cgen_var_1337, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080017356 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017357 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17358 {
17359 marshal_VkHdrMetadataEXT(countingStream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017360 }
17361 }
17362 uint32_t packetSize_vkSetHdrMetadataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17363 countingStream->rewind();
17364 uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT;
17365 stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t));
17366 stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017367 uint64_t cgen_var_1338;
17368 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1338, 1);
17369 stream->write((uint64_t*)&cgen_var_1338, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017370 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017371 if (((swapchainCount)))
17372 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017373 uint64_t* cgen_var_1339;
17374 stream->alloc((void**)&cgen_var_1339, ((swapchainCount)) * 8);
17375 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1339, ((swapchainCount)));
17376 stream->write((uint64_t*)cgen_var_1339, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080017377 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017378 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17379 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017380 marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017381 }
17382}
17383
17384#endif
17385#ifdef VK_MVK_ios_surface
17386VkResult VkEncoder::vkCreateIOSSurfaceMVK(
17387 VkInstance instance,
17388 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
17389 const VkAllocationCallbacks* pAllocator,
17390 VkSurfaceKHR* pSurface)
17391{
17392 auto stream = mImpl->stream();
17393 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017394 auto resources = mImpl->resources();
17395 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017396 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017397 VkInstance local_instance;
17398 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017399 VkIOSSurfaceCreateInfoMVK* local_pCreateInfo;
17400 local_pCreateInfo = nullptr;
17401 if (pCreateInfo)
17402 {
17403 local_pCreateInfo = (VkIOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkIOSSurfaceCreateInfoMVK));
17404 deepcopy_VkIOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
17405 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017406 VkAllocationCallbacks* local_pAllocator;
17407 local_pAllocator = nullptr;
17408 if (pAllocator)
17409 {
17410 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17411 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17412 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017413 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017414 countingStream->rewind();
17415 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017416 uint64_t cgen_var_1340;
17417 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1340, 1);
17418 countingStream->write((uint64_t*)&cgen_var_1340, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017419 marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017420 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017421 uint64_t cgen_var_1341 = (uint64_t)(uintptr_t)local_pAllocator;
17422 countingStream->putBe64(cgen_var_1341);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017423 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017424 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017425 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017426 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017427 uint64_t cgen_var_1342;
17428 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1342, 1);
17429 countingStream->write((uint64_t*)&cgen_var_1342, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017430 }
17431 uint32_t packetSize_vkCreateIOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17432 countingStream->rewind();
17433 uint32_t opcode_vkCreateIOSSurfaceMVK = OP_vkCreateIOSSurfaceMVK;
17434 stream->write(&opcode_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
17435 stream->write(&packetSize_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017436 uint64_t cgen_var_1343;
17437 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1343, 1);
17438 stream->write((uint64_t*)&cgen_var_1343, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017439 marshal_VkIOSSurfaceCreateInfoMVK(stream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017440 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017441 uint64_t cgen_var_1344 = (uint64_t)(uintptr_t)local_pAllocator;
17442 stream->putBe64(cgen_var_1344);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017443 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017444 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017445 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017446 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017447 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017448 uint64_t cgen_var_1345;
17449 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1345, 1);
17450 stream->write((uint64_t*)&cgen_var_1345, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017451 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017452 uint64_t cgen_var_1346;
17453 stream->read((uint64_t*)&cgen_var_1346, 8);
17454 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1346, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017455 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
17456 stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017457 countingStream->clearPool();
17458 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017459 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017460 return vkCreateIOSSurfaceMVK_VkResult_return;
17461}
17462
17463#endif
17464#ifdef VK_MVK_macos_surface
17465VkResult VkEncoder::vkCreateMacOSSurfaceMVK(
17466 VkInstance instance,
17467 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
17468 const VkAllocationCallbacks* pAllocator,
17469 VkSurfaceKHR* pSurface)
17470{
17471 auto stream = mImpl->stream();
17472 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017473 auto resources = mImpl->resources();
17474 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017475 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017476 VkInstance local_instance;
17477 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017478 VkMacOSSurfaceCreateInfoMVK* local_pCreateInfo;
17479 local_pCreateInfo = nullptr;
17480 if (pCreateInfo)
17481 {
17482 local_pCreateInfo = (VkMacOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkMacOSSurfaceCreateInfoMVK));
17483 deepcopy_VkMacOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
17484 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017485 VkAllocationCallbacks* local_pAllocator;
17486 local_pAllocator = nullptr;
17487 if (pAllocator)
17488 {
17489 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17490 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17491 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017492 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017493 countingStream->rewind();
17494 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017495 uint64_t cgen_var_1347;
17496 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1347, 1);
17497 countingStream->write((uint64_t*)&cgen_var_1347, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017498 marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017499 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017500 uint64_t cgen_var_1348 = (uint64_t)(uintptr_t)local_pAllocator;
17501 countingStream->putBe64(cgen_var_1348);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017502 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017503 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017504 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017505 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017506 uint64_t cgen_var_1349;
17507 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1349, 1);
17508 countingStream->write((uint64_t*)&cgen_var_1349, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017509 }
17510 uint32_t packetSize_vkCreateMacOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17511 countingStream->rewind();
17512 uint32_t opcode_vkCreateMacOSSurfaceMVK = OP_vkCreateMacOSSurfaceMVK;
17513 stream->write(&opcode_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
17514 stream->write(&packetSize_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017515 uint64_t cgen_var_1350;
17516 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1350, 1);
17517 stream->write((uint64_t*)&cgen_var_1350, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017518 marshal_VkMacOSSurfaceCreateInfoMVK(stream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017519 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017520 uint64_t cgen_var_1351 = (uint64_t)(uintptr_t)local_pAllocator;
17521 stream->putBe64(cgen_var_1351);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017522 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017523 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017524 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017525 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017526 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017527 uint64_t cgen_var_1352;
17528 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1352, 1);
17529 stream->write((uint64_t*)&cgen_var_1352, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017530 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017531 uint64_t cgen_var_1353;
17532 stream->read((uint64_t*)&cgen_var_1353, 8);
17533 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1353, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017534 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
17535 stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017536 countingStream->clearPool();
17537 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017538 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017539 return vkCreateMacOSSurfaceMVK_VkResult_return;
17540}
17541
17542#endif
17543#ifdef VK_EXT_external_memory_dma_buf
17544#endif
17545#ifdef VK_EXT_queue_family_foreign
17546#endif
17547#ifdef VK_EXT_debug_utils
17548VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT(
17549 VkDevice device,
17550 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
17551{
17552 auto stream = mImpl->stream();
17553 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017554 auto resources = mImpl->resources();
17555 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017556 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017557 VkDevice local_device;
17558 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017559 VkDebugUtilsObjectNameInfoEXT* local_pNameInfo;
17560 local_pNameInfo = nullptr;
17561 if (pNameInfo)
17562 {
17563 local_pNameInfo = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectNameInfoEXT));
17564 deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, pNameInfo, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
17565 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017566 countingStream->rewind();
17567 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017568 uint64_t cgen_var_1354;
17569 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1354, 1);
17570 countingStream->write((uint64_t*)&cgen_var_1354, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017571 marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017572 }
17573 uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17574 countingStream->rewind();
17575 uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT;
17576 stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
17577 stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017578 uint64_t cgen_var_1355;
17579 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1355, 1);
17580 stream->write((uint64_t*)&cgen_var_1355, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017581 marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017582 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
17583 stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017584 countingStream->clearPool();
17585 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017586 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017587 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
17588}
17589
17590VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT(
17591 VkDevice device,
17592 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
17593{
17594 auto stream = mImpl->stream();
17595 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017596 auto resources = mImpl->resources();
17597 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017598 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017599 VkDevice local_device;
17600 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017601 VkDebugUtilsObjectTagInfoEXT* local_pTagInfo;
17602 local_pTagInfo = nullptr;
17603 if (pTagInfo)
17604 {
17605 local_pTagInfo = (VkDebugUtilsObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectTagInfoEXT));
17606 deepcopy_VkDebugUtilsObjectTagInfoEXT(pool, pTagInfo, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
17607 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017608 countingStream->rewind();
17609 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017610 uint64_t cgen_var_1356;
17611 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1356, 1);
17612 countingStream->write((uint64_t*)&cgen_var_1356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017613 marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017614 }
17615 uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17616 countingStream->rewind();
17617 uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT;
17618 stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
17619 stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017620 uint64_t cgen_var_1357;
17621 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1357, 1);
17622 stream->write((uint64_t*)&cgen_var_1357, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017623 marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017624 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
17625 stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017626 countingStream->clearPool();
17627 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017628 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017629 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
17630}
17631
17632void VkEncoder::vkQueueBeginDebugUtilsLabelEXT(
17633 VkQueue queue,
17634 const VkDebugUtilsLabelEXT* pLabelInfo)
17635{
17636 auto stream = mImpl->stream();
17637 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017638 auto resources = mImpl->resources();
17639 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017640 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017641 VkQueue local_queue;
17642 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017643 VkDebugUtilsLabelEXT* local_pLabelInfo;
17644 local_pLabelInfo = nullptr;
17645 if (pLabelInfo)
17646 {
17647 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17648 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17649 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017650 countingStream->rewind();
17651 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017652 uint64_t cgen_var_1358;
17653 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1358, 1);
17654 countingStream->write((uint64_t*)&cgen_var_1358, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017655 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017656 }
17657 uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17658 countingStream->rewind();
17659 uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT;
17660 stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
17661 stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017662 uint64_t cgen_var_1359;
17663 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1359, 1);
17664 stream->write((uint64_t*)&cgen_var_1359, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017665 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017666}
17667
17668void VkEncoder::vkQueueEndDebugUtilsLabelEXT(
17669 VkQueue queue)
17670{
17671 auto stream = mImpl->stream();
17672 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017673 auto resources = mImpl->resources();
17674 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017675 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017676 VkQueue local_queue;
17677 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017678 countingStream->rewind();
17679 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017680 uint64_t cgen_var_1360;
17681 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1360, 1);
17682 countingStream->write((uint64_t*)&cgen_var_1360, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017683 }
17684 uint32_t packetSize_vkQueueEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17685 countingStream->rewind();
17686 uint32_t opcode_vkQueueEndDebugUtilsLabelEXT = OP_vkQueueEndDebugUtilsLabelEXT;
17687 stream->write(&opcode_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
17688 stream->write(&packetSize_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017689 uint64_t cgen_var_1361;
17690 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1361, 1);
17691 stream->write((uint64_t*)&cgen_var_1361, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017692}
17693
17694void VkEncoder::vkQueueInsertDebugUtilsLabelEXT(
17695 VkQueue queue,
17696 const VkDebugUtilsLabelEXT* pLabelInfo)
17697{
17698 auto stream = mImpl->stream();
17699 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017700 auto resources = mImpl->resources();
17701 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017702 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017703 VkQueue local_queue;
17704 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017705 VkDebugUtilsLabelEXT* local_pLabelInfo;
17706 local_pLabelInfo = nullptr;
17707 if (pLabelInfo)
17708 {
17709 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17710 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17711 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017712 countingStream->rewind();
17713 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017714 uint64_t cgen_var_1362;
17715 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1362, 1);
17716 countingStream->write((uint64_t*)&cgen_var_1362, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017717 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017718 }
17719 uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17720 countingStream->rewind();
17721 uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT;
17722 stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
17723 stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017724 uint64_t cgen_var_1363;
17725 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1363, 1);
17726 stream->write((uint64_t*)&cgen_var_1363, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017727 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017728}
17729
17730void VkEncoder::vkCmdBeginDebugUtilsLabelEXT(
17731 VkCommandBuffer commandBuffer,
17732 const VkDebugUtilsLabelEXT* pLabelInfo)
17733{
17734 auto stream = mImpl->stream();
17735 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017736 auto resources = mImpl->resources();
17737 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017738 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017739 VkCommandBuffer local_commandBuffer;
17740 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017741 VkDebugUtilsLabelEXT* local_pLabelInfo;
17742 local_pLabelInfo = nullptr;
17743 if (pLabelInfo)
17744 {
17745 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17746 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17747 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017748 countingStream->rewind();
17749 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017750 uint64_t cgen_var_1364;
17751 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1364, 1);
17752 countingStream->write((uint64_t*)&cgen_var_1364, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017753 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017754 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017755 uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17756 countingStream->rewind();
17757 uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT;
17758 stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
17759 stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017760 uint64_t cgen_var_1365;
17761 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1365, 1);
17762 stream->write((uint64_t*)&cgen_var_1365, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017763 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17764}
17765
17766void VkEncoder::vkCmdEndDebugUtilsLabelEXT(
17767 VkCommandBuffer commandBuffer)
17768{
17769 auto stream = mImpl->stream();
17770 auto countingStream = mImpl->countingStream();
17771 auto resources = mImpl->resources();
17772 auto pool = mImpl->pool();
17773 stream->setHandleMapping(resources->unwrapMapping());
17774 VkCommandBuffer local_commandBuffer;
17775 local_commandBuffer = commandBuffer;
17776 countingStream->rewind();
17777 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017778 uint64_t cgen_var_1366;
17779 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1366, 1);
17780 countingStream->write((uint64_t*)&cgen_var_1366, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017781 }
17782 uint32_t packetSize_vkCmdEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17783 countingStream->rewind();
17784 uint32_t opcode_vkCmdEndDebugUtilsLabelEXT = OP_vkCmdEndDebugUtilsLabelEXT;
17785 stream->write(&opcode_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
17786 stream->write(&packetSize_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017787 uint64_t cgen_var_1367;
17788 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1367, 1);
17789 stream->write((uint64_t*)&cgen_var_1367, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017790}
17791
17792void VkEncoder::vkCmdInsertDebugUtilsLabelEXT(
17793 VkCommandBuffer commandBuffer,
17794 const VkDebugUtilsLabelEXT* pLabelInfo)
17795{
17796 auto stream = mImpl->stream();
17797 auto countingStream = mImpl->countingStream();
17798 auto resources = mImpl->resources();
17799 auto pool = mImpl->pool();
17800 stream->setHandleMapping(resources->unwrapMapping());
17801 VkCommandBuffer local_commandBuffer;
17802 local_commandBuffer = commandBuffer;
17803 VkDebugUtilsLabelEXT* local_pLabelInfo;
17804 local_pLabelInfo = nullptr;
17805 if (pLabelInfo)
17806 {
17807 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17808 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17809 }
17810 countingStream->rewind();
17811 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017812 uint64_t cgen_var_1368;
17813 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1368, 1);
17814 countingStream->write((uint64_t*)&cgen_var_1368, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017815 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17816 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017817 uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17818 countingStream->rewind();
17819 uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT;
17820 stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
17821 stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017822 uint64_t cgen_var_1369;
17823 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1369, 1);
17824 stream->write((uint64_t*)&cgen_var_1369, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017825 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017826}
17827
17828VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT(
17829 VkInstance instance,
17830 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
17831 const VkAllocationCallbacks* pAllocator,
17832 VkDebugUtilsMessengerEXT* pMessenger)
17833{
17834 auto stream = mImpl->stream();
17835 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017836 auto resources = mImpl->resources();
17837 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017838 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017839 VkInstance local_instance;
17840 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017841 VkDebugUtilsMessengerCreateInfoEXT* local_pCreateInfo;
17842 local_pCreateInfo = nullptr;
17843 if (pCreateInfo)
17844 {
17845 local_pCreateInfo = (VkDebugUtilsMessengerCreateInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCreateInfoEXT));
17846 deepcopy_VkDebugUtilsMessengerCreateInfoEXT(pool, pCreateInfo, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
17847 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017848 VkAllocationCallbacks* local_pAllocator;
17849 local_pAllocator = nullptr;
17850 if (pAllocator)
17851 {
17852 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17853 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17854 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017855 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017856 countingStream->rewind();
17857 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017858 uint64_t cgen_var_1370;
17859 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1370, 1);
17860 countingStream->write((uint64_t*)&cgen_var_1370, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017861 marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017862 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017863 uint64_t cgen_var_1371 = (uint64_t)(uintptr_t)local_pAllocator;
17864 countingStream->putBe64(cgen_var_1371);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017865 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017866 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017867 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017868 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017869 uint64_t cgen_var_1372;
17870 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1372, 1);
17871 countingStream->write((uint64_t*)&cgen_var_1372, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017872 }
17873 uint32_t packetSize_vkCreateDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17874 countingStream->rewind();
17875 uint32_t opcode_vkCreateDebugUtilsMessengerEXT = OP_vkCreateDebugUtilsMessengerEXT;
17876 stream->write(&opcode_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
17877 stream->write(&packetSize_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017878 uint64_t cgen_var_1373;
17879 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1373, 1);
17880 stream->write((uint64_t*)&cgen_var_1373, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017881 marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017882 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017883 uint64_t cgen_var_1374 = (uint64_t)(uintptr_t)local_pAllocator;
17884 stream->putBe64(cgen_var_1374);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017885 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017886 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017887 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017888 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017889 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017890 uint64_t cgen_var_1375;
17891 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1375, 1);
17892 stream->write((uint64_t*)&cgen_var_1375, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017893 stream->setHandleMapping(resources->unwrapMapping());
17894 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017895 uint64_t cgen_var_1376;
17896 stream->read((uint64_t*)&cgen_var_1376, 8);
17897 stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1376, (VkDebugUtilsMessengerEXT*)pMessenger, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017898 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017899 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
17900 stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017901 countingStream->clearPool();
17902 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017903 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017904 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
17905}
17906
17907void VkEncoder::vkDestroyDebugUtilsMessengerEXT(
17908 VkInstance instance,
17909 VkDebugUtilsMessengerEXT messenger,
17910 const VkAllocationCallbacks* pAllocator)
17911{
17912 auto stream = mImpl->stream();
17913 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017914 auto resources = mImpl->resources();
17915 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017916 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017917 VkInstance local_instance;
17918 local_instance = instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017919 VkDebugUtilsMessengerEXT local_messenger;
17920 local_messenger = messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017921 VkAllocationCallbacks* local_pAllocator;
17922 local_pAllocator = nullptr;
17923 if (pAllocator)
17924 {
17925 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17926 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17927 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017928 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017929 countingStream->rewind();
17930 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017931 uint64_t cgen_var_1377;
17932 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1377, 1);
17933 countingStream->write((uint64_t*)&cgen_var_1377, 1 * 8);
17934 uint64_t cgen_var_1378;
17935 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1378, 1);
17936 countingStream->write((uint64_t*)&cgen_var_1378, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017937 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017938 uint64_t cgen_var_1379 = (uint64_t)(uintptr_t)local_pAllocator;
17939 countingStream->putBe64(cgen_var_1379);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017940 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017941 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017942 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017943 }
17944 }
17945 uint32_t packetSize_vkDestroyDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17946 countingStream->rewind();
17947 uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT;
17948 stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
17949 stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017950 uint64_t cgen_var_1380;
17951 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1380, 1);
17952 stream->write((uint64_t*)&cgen_var_1380, 1 * 8);
17953 uint64_t cgen_var_1381;
17954 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1381, 1);
17955 stream->write((uint64_t*)&cgen_var_1381, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017956 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017957 uint64_t cgen_var_1382 = (uint64_t)(uintptr_t)local_pAllocator;
17958 stream->putBe64(cgen_var_1382);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017959 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017960 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017961 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017962 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017963 resources->destroyMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)&messenger);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017964}
17965
17966void VkEncoder::vkSubmitDebugUtilsMessageEXT(
17967 VkInstance instance,
17968 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
17969 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
17970 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
17971{
17972 auto stream = mImpl->stream();
17973 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017974 auto resources = mImpl->resources();
17975 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017976 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017977 VkInstance local_instance;
17978 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017979 VkDebugUtilsMessageSeverityFlagBitsEXT local_messageSeverity;
17980 local_messageSeverity = messageSeverity;
17981 VkDebugUtilsMessageTypeFlagsEXT local_messageTypes;
17982 local_messageTypes = messageTypes;
17983 VkDebugUtilsMessengerCallbackDataEXT* local_pCallbackData;
17984 local_pCallbackData = nullptr;
17985 if (pCallbackData)
17986 {
17987 local_pCallbackData = (VkDebugUtilsMessengerCallbackDataEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCallbackDataEXT));
17988 deepcopy_VkDebugUtilsMessengerCallbackDataEXT(pool, pCallbackData, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
17989 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017990 countingStream->rewind();
17991 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017992 uint64_t cgen_var_1383;
17993 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1383, 1);
17994 countingStream->write((uint64_t*)&cgen_var_1383, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017995 countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
17996 countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
17997 marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017998 }
17999 uint32_t packetSize_vkSubmitDebugUtilsMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18000 countingStream->rewind();
18001 uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT;
18002 stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
18003 stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018004 uint64_t cgen_var_1384;
18005 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1384, 1);
18006 stream->write((uint64_t*)&cgen_var_1384, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018007 stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
18008 stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
18009 marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018010}
18011
18012#endif
18013#ifdef VK_ANDROID_external_memory_android_hardware_buffer
18014VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID(
18015 VkDevice device,
18016 const AHardwareBuffer* buffer,
18017 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
18018{
18019 auto stream = mImpl->stream();
18020 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018021 auto resources = mImpl->resources();
18022 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018023 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018024 VkDevice local_device;
18025 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018026 AHardwareBuffer* local_buffer;
18027 local_buffer = nullptr;
18028 if (buffer)
18029 {
18030 local_buffer = (AHardwareBuffer*)pool->dupArray(buffer, sizeof(const AHardwareBuffer));
18031 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018032 countingStream->rewind();
18033 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018034 uint64_t cgen_var_1385;
18035 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1385, 1);
18036 countingStream->write((uint64_t*)&cgen_var_1385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018037 countingStream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018038 marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18039 }
18040 uint32_t packetSize_vkGetAndroidHardwareBufferPropertiesANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18041 countingStream->rewind();
18042 uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
18043 stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
18044 stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018045 uint64_t cgen_var_1386;
18046 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1386, 1);
18047 stream->write((uint64_t*)&cgen_var_1386, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018048 stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018049 marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18050 unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18051 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
18052 stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018053 countingStream->clearPool();
18054 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018055 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018056 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
18057}
18058
18059VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID(
18060 VkDevice device,
18061 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
18062 AHardwareBuffer** pBuffer)
18063{
18064 auto stream = mImpl->stream();
18065 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018066 auto resources = mImpl->resources();
18067 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018068 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018069 VkDevice local_device;
18070 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018071 VkMemoryGetAndroidHardwareBufferInfoANDROID* local_pInfo;
18072 local_pInfo = nullptr;
18073 if (pInfo)
18074 {
18075 local_pInfo = (VkMemoryGetAndroidHardwareBufferInfoANDROID*)pool->alloc(sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID));
18076 deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(pool, pInfo, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
18077 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018078 countingStream->rewind();
18079 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018080 uint64_t cgen_var_1387;
18081 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1387, 1);
18082 countingStream->write((uint64_t*)&cgen_var_1387, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018083 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018084 countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18085 }
18086 uint32_t packetSize_vkGetMemoryAndroidHardwareBufferANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18087 countingStream->rewind();
18088 uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID;
18089 stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
18090 stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018091 uint64_t cgen_var_1388;
18092 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1388, 1);
18093 stream->write((uint64_t*)&cgen_var_1388, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018094 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018095 stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18096 stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18097 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
18098 stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018099 countingStream->clearPool();
18100 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018101 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018102 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
18103}
18104
18105#endif
18106#ifdef VK_EXT_sampler_filter_minmax
18107#endif
18108#ifdef VK_AMD_gpu_shader_int16
18109#endif
18110#ifdef VK_AMD_mixed_attachment_samples
18111#endif
18112#ifdef VK_AMD_shader_fragment_mask
18113#endif
18114#ifdef VK_EXT_shader_stencil_export
18115#endif
18116#ifdef VK_EXT_sample_locations
18117void VkEncoder::vkCmdSetSampleLocationsEXT(
18118 VkCommandBuffer commandBuffer,
18119 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
18120{
18121 auto stream = mImpl->stream();
18122 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018123 auto resources = mImpl->resources();
18124 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018125 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018126 VkCommandBuffer local_commandBuffer;
18127 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018128 VkSampleLocationsInfoEXT* local_pSampleLocationsInfo;
18129 local_pSampleLocationsInfo = nullptr;
18130 if (pSampleLocationsInfo)
18131 {
18132 local_pSampleLocationsInfo = (VkSampleLocationsInfoEXT*)pool->alloc(sizeof(const VkSampleLocationsInfoEXT));
18133 deepcopy_VkSampleLocationsInfoEXT(pool, pSampleLocationsInfo, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
18134 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018135 countingStream->rewind();
18136 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018137 uint64_t cgen_var_1389;
18138 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1389, 1);
18139 countingStream->write((uint64_t*)&cgen_var_1389, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018140 marshal_VkSampleLocationsInfoEXT(countingStream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018141 }
18142 uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18143 countingStream->rewind();
18144 uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT;
18145 stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
18146 stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018147 uint64_t cgen_var_1390;
18148 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1390, 1);
18149 stream->write((uint64_t*)&cgen_var_1390, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018150 marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018151}
18152
18153void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT(
18154 VkPhysicalDevice physicalDevice,
18155 VkSampleCountFlagBits samples,
18156 VkMultisamplePropertiesEXT* pMultisampleProperties)
18157{
18158 auto stream = mImpl->stream();
18159 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018160 auto resources = mImpl->resources();
18161 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018162 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018163 VkPhysicalDevice local_physicalDevice;
18164 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018165 VkSampleCountFlagBits local_samples;
18166 local_samples = samples;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018167 countingStream->rewind();
18168 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018169 uint64_t cgen_var_1391;
18170 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1391, 1);
18171 countingStream->write((uint64_t*)&cgen_var_1391, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018172 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018173 marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18174 }
18175 uint32_t packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18176 countingStream->rewind();
18177 uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
18178 stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
18179 stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018180 uint64_t cgen_var_1392;
18181 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1392, 1);
18182 stream->write((uint64_t*)&cgen_var_1392, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018183 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018184 marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18185 unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18186}
18187
18188#endif
18189#ifdef VK_EXT_blend_operation_advanced
18190#endif
18191#ifdef VK_NV_fragment_coverage_to_color
18192#endif
18193#ifdef VK_NV_framebuffer_mixed_samples
18194#endif
18195#ifdef VK_NV_fill_rectangle
18196#endif
18197#ifdef VK_EXT_post_depth_coverage
18198#endif
18199#ifdef VK_EXT_validation_cache
18200VkResult VkEncoder::vkCreateValidationCacheEXT(
18201 VkDevice device,
18202 const VkValidationCacheCreateInfoEXT* pCreateInfo,
18203 const VkAllocationCallbacks* pAllocator,
18204 VkValidationCacheEXT* pValidationCache)
18205{
18206 auto stream = mImpl->stream();
18207 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018208 auto resources = mImpl->resources();
18209 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018210 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018211 VkDevice local_device;
18212 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018213 VkValidationCacheCreateInfoEXT* local_pCreateInfo;
18214 local_pCreateInfo = nullptr;
18215 if (pCreateInfo)
18216 {
18217 local_pCreateInfo = (VkValidationCacheCreateInfoEXT*)pool->alloc(sizeof(const VkValidationCacheCreateInfoEXT));
18218 deepcopy_VkValidationCacheCreateInfoEXT(pool, pCreateInfo, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
18219 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018220 VkAllocationCallbacks* local_pAllocator;
18221 local_pAllocator = nullptr;
18222 if (pAllocator)
18223 {
18224 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18225 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18226 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018227 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018228 countingStream->rewind();
18229 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018230 uint64_t cgen_var_1393;
18231 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1393, 1);
18232 countingStream->write((uint64_t*)&cgen_var_1393, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018233 marshal_VkValidationCacheCreateInfoEXT(countingStream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018234 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018235 uint64_t cgen_var_1394 = (uint64_t)(uintptr_t)local_pAllocator;
18236 countingStream->putBe64(cgen_var_1394);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018237 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018238 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018239 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018240 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018241 uint64_t cgen_var_1395;
18242 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1395, 1);
18243 countingStream->write((uint64_t*)&cgen_var_1395, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018244 }
18245 uint32_t packetSize_vkCreateValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18246 countingStream->rewind();
18247 uint32_t opcode_vkCreateValidationCacheEXT = OP_vkCreateValidationCacheEXT;
18248 stream->write(&opcode_vkCreateValidationCacheEXT, sizeof(uint32_t));
18249 stream->write(&packetSize_vkCreateValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018250 uint64_t cgen_var_1396;
18251 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1396, 1);
18252 stream->write((uint64_t*)&cgen_var_1396, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018253 marshal_VkValidationCacheCreateInfoEXT(stream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018254 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018255 uint64_t cgen_var_1397 = (uint64_t)(uintptr_t)local_pAllocator;
18256 stream->putBe64(cgen_var_1397);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018257 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018258 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018259 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018260 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018261 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018262 uint64_t cgen_var_1398;
18263 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1398, 1);
18264 stream->write((uint64_t*)&cgen_var_1398, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018265 stream->setHandleMapping(resources->unwrapMapping());
18266 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018267 uint64_t cgen_var_1399;
18268 stream->read((uint64_t*)&cgen_var_1399, 8);
18269 stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1399, (VkValidationCacheEXT*)pValidationCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018270 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018271 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
18272 stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018273 countingStream->clearPool();
18274 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018275 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018276 return vkCreateValidationCacheEXT_VkResult_return;
18277}
18278
18279void VkEncoder::vkDestroyValidationCacheEXT(
18280 VkDevice device,
18281 VkValidationCacheEXT validationCache,
18282 const VkAllocationCallbacks* pAllocator)
18283{
18284 auto stream = mImpl->stream();
18285 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018286 auto resources = mImpl->resources();
18287 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018288 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018289 VkDevice local_device;
18290 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018291 VkValidationCacheEXT local_validationCache;
18292 local_validationCache = validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018293 VkAllocationCallbacks* local_pAllocator;
18294 local_pAllocator = nullptr;
18295 if (pAllocator)
18296 {
18297 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18298 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18299 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018300 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018301 countingStream->rewind();
18302 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018303 uint64_t cgen_var_1400;
18304 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1400, 1);
18305 countingStream->write((uint64_t*)&cgen_var_1400, 1 * 8);
18306 uint64_t cgen_var_1401;
18307 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1401, 1);
18308 countingStream->write((uint64_t*)&cgen_var_1401, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018309 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018310 uint64_t cgen_var_1402 = (uint64_t)(uintptr_t)local_pAllocator;
18311 countingStream->putBe64(cgen_var_1402);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018312 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018313 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018314 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018315 }
18316 }
18317 uint32_t packetSize_vkDestroyValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18318 countingStream->rewind();
18319 uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT;
18320 stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t));
18321 stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018322 uint64_t cgen_var_1403;
18323 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1403, 1);
18324 stream->write((uint64_t*)&cgen_var_1403, 1 * 8);
18325 uint64_t cgen_var_1404;
18326 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1404, 1);
18327 stream->write((uint64_t*)&cgen_var_1404, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018328 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018329 uint64_t cgen_var_1405 = (uint64_t)(uintptr_t)local_pAllocator;
18330 stream->putBe64(cgen_var_1405);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018331 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018332 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018333 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018334 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018335 resources->destroyMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&validationCache);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018336}
18337
18338VkResult VkEncoder::vkMergeValidationCachesEXT(
18339 VkDevice device,
18340 VkValidationCacheEXT dstCache,
18341 uint32_t srcCacheCount,
18342 const VkValidationCacheEXT* pSrcCaches)
18343{
18344 auto stream = mImpl->stream();
18345 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018346 auto resources = mImpl->resources();
18347 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018348 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018349 VkDevice local_device;
18350 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018351 VkValidationCacheEXT local_dstCache;
18352 local_dstCache = dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018353 uint32_t local_srcCacheCount;
18354 local_srcCacheCount = srcCacheCount;
18355 VkValidationCacheEXT* local_pSrcCaches;
18356 local_pSrcCaches = nullptr;
18357 if (pSrcCaches)
18358 {
18359 local_pSrcCaches = (VkValidationCacheEXT*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
18360 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018361 countingStream->rewind();
18362 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018363 uint64_t cgen_var_1406;
18364 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1406, 1);
18365 countingStream->write((uint64_t*)&cgen_var_1406, 1 * 8);
18366 uint64_t cgen_var_1407;
18367 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1407, 1);
18368 countingStream->write((uint64_t*)&cgen_var_1407, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018369 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018370 if (((srcCacheCount)))
18371 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018372 uint64_t* cgen_var_1408;
18373 countingStream->alloc((void**)&cgen_var_1408, ((srcCacheCount)) * 8);
18374 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1408, ((srcCacheCount)));
18375 countingStream->write((uint64_t*)cgen_var_1408, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080018376 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018377 }
18378 uint32_t packetSize_vkMergeValidationCachesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18379 countingStream->rewind();
18380 uint32_t opcode_vkMergeValidationCachesEXT = OP_vkMergeValidationCachesEXT;
18381 stream->write(&opcode_vkMergeValidationCachesEXT, sizeof(uint32_t));
18382 stream->write(&packetSize_vkMergeValidationCachesEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018383 uint64_t cgen_var_1409;
18384 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1409, 1);
18385 stream->write((uint64_t*)&cgen_var_1409, 1 * 8);
18386 uint64_t cgen_var_1410;
18387 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1410, 1);
18388 stream->write((uint64_t*)&cgen_var_1410, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018389 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018390 if (((srcCacheCount)))
18391 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018392 uint64_t* cgen_var_1411;
18393 stream->alloc((void**)&cgen_var_1411, ((srcCacheCount)) * 8);
18394 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1411, ((srcCacheCount)));
18395 stream->write((uint64_t*)cgen_var_1411, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080018396 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018397 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
18398 stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018399 countingStream->clearPool();
18400 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018401 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018402 return vkMergeValidationCachesEXT_VkResult_return;
18403}
18404
18405VkResult VkEncoder::vkGetValidationCacheDataEXT(
18406 VkDevice device,
18407 VkValidationCacheEXT validationCache,
18408 size_t* pDataSize,
18409 void* pData)
18410{
18411 auto stream = mImpl->stream();
18412 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018413 auto resources = mImpl->resources();
18414 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018415 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018416 VkDevice local_device;
18417 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018418 VkValidationCacheEXT local_validationCache;
18419 local_validationCache = validationCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018420 countingStream->rewind();
18421 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018422 uint64_t cgen_var_1412;
18423 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1412, 1);
18424 countingStream->write((uint64_t*)&cgen_var_1412, 1 * 8);
18425 uint64_t cgen_var_1413;
18426 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1413, 1);
18427 countingStream->write((uint64_t*)&cgen_var_1413, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018428 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018429 uint64_t cgen_var_1414 = (uint64_t)(uintptr_t)pDataSize;
18430 countingStream->putBe64(cgen_var_1414);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018431 if (pDataSize)
18432 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018433 uint64_t cgen_var_1415 = (uint64_t)(*pDataSize);
18434 countingStream->putBe64(cgen_var_1415);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018435 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018436 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018437 uint64_t cgen_var_1416 = (uint64_t)(uintptr_t)pData;
18438 countingStream->putBe64(cgen_var_1416);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018439 if (pData)
18440 {
18441 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18442 }
18443 }
18444 uint32_t packetSize_vkGetValidationCacheDataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18445 countingStream->rewind();
18446 uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT;
18447 stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t));
18448 stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018449 uint64_t cgen_var_1417;
18450 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1417, 1);
18451 stream->write((uint64_t*)&cgen_var_1417, 1 * 8);
18452 uint64_t cgen_var_1418;
18453 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1418, 1);
18454 stream->write((uint64_t*)&cgen_var_1418, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018455 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018456 uint64_t cgen_var_1419 = (uint64_t)(uintptr_t)pDataSize;
18457 stream->putBe64(cgen_var_1419);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018458 if (pDataSize)
18459 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018460 uint64_t cgen_var_1420 = (uint64_t)(*pDataSize);
18461 stream->putBe64(cgen_var_1420);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018462 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018463 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018464 uint64_t cgen_var_1421 = (uint64_t)(uintptr_t)pData;
18465 stream->putBe64(cgen_var_1421);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018466 if (pData)
18467 {
18468 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18469 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018470 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018471 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018472 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018473 if (pDataSize)
18474 {
18475 if (!(check_pDataSize))
18476 {
18477 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
18478 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018479 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018480 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018481 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018482 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018483 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018484 if (pData)
18485 {
18486 if (!(check_pData))
18487 {
18488 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
18489 }
18490 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18491 }
18492 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
18493 stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018494 countingStream->clearPool();
18495 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018496 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018497 return vkGetValidationCacheDataEXT_VkResult_return;
18498}
18499
18500#endif
18501#ifdef VK_EXT_descriptor_indexing
18502#endif
18503#ifdef VK_EXT_shader_viewport_index_layer
18504#endif
18505#ifdef VK_EXT_global_priority
18506#endif
18507#ifdef VK_EXT_external_memory_host
18508VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT(
18509 VkDevice device,
18510 VkExternalMemoryHandleTypeFlagBits handleType,
18511 const void* pHostPointer,
18512 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
18513{
18514 auto stream = mImpl->stream();
18515 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018516 auto resources = mImpl->resources();
18517 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018518 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018519 VkDevice local_device;
18520 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018521 VkExternalMemoryHandleTypeFlagBits local_handleType;
18522 local_handleType = handleType;
18523 void* local_pHostPointer;
18524 local_pHostPointer = nullptr;
18525 if (pHostPointer)
18526 {
18527 local_pHostPointer = (void*)pool->dupArray(pHostPointer, sizeof(const uint8_t));
18528 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018529 countingStream->rewind();
18530 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018531 uint64_t cgen_var_1425;
18532 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1425, 1);
18533 countingStream->write((uint64_t*)&cgen_var_1425, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018534 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018535 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018536 uint64_t cgen_var_1426 = (uint64_t)(uintptr_t)local_pHostPointer;
18537 countingStream->putBe64(cgen_var_1426);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018538 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018539 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018540 countingStream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018541 }
18542 marshal_VkMemoryHostPointerPropertiesEXT(countingStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18543 }
18544 uint32_t packetSize_vkGetMemoryHostPointerPropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18545 countingStream->rewind();
18546 uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT;
18547 stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
18548 stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018549 uint64_t cgen_var_1427;
18550 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1427, 1);
18551 stream->write((uint64_t*)&cgen_var_1427, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018552 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018553 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018554 uint64_t cgen_var_1428 = (uint64_t)(uintptr_t)local_pHostPointer;
18555 stream->putBe64(cgen_var_1428);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018556 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018557 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018558 stream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018559 }
18560 marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18561 unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18562 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
18563 stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018564 countingStream->clearPool();
18565 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018566 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018567 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
18568}
18569
18570#endif
18571#ifdef VK_AMD_buffer_marker
18572void VkEncoder::vkCmdWriteBufferMarkerAMD(
18573 VkCommandBuffer commandBuffer,
18574 VkPipelineStageFlagBits pipelineStage,
18575 VkBuffer dstBuffer,
18576 VkDeviceSize dstOffset,
18577 uint32_t marker)
18578{
18579 auto stream = mImpl->stream();
18580 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018581 auto resources = mImpl->resources();
18582 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018583 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018584 VkCommandBuffer local_commandBuffer;
18585 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018586 VkPipelineStageFlagBits local_pipelineStage;
18587 local_pipelineStage = pipelineStage;
18588 VkBuffer local_dstBuffer;
18589 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018590 VkDeviceSize local_dstOffset;
18591 local_dstOffset = dstOffset;
18592 uint32_t local_marker;
18593 local_marker = marker;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018594 countingStream->rewind();
18595 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018596 uint64_t cgen_var_1429;
18597 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1429, 1);
18598 countingStream->write((uint64_t*)&cgen_var_1429, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018599 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018600 uint64_t cgen_var_1430;
18601 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1430, 1);
18602 countingStream->write((uint64_t*)&cgen_var_1430, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018603 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
18604 countingStream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018605 }
18606 uint32_t packetSize_vkCmdWriteBufferMarkerAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18607 countingStream->rewind();
18608 uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD;
18609 stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
18610 stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018611 uint64_t cgen_var_1431;
18612 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1431, 1);
18613 stream->write((uint64_t*)&cgen_var_1431, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018614 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018615 uint64_t cgen_var_1432;
18616 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1432, 1);
18617 stream->write((uint64_t*)&cgen_var_1432, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018618 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
18619 stream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018620}
18621
18622#endif
18623#ifdef VK_AMD_shader_core_properties
18624#endif
18625#ifdef VK_EXT_vertex_attribute_divisor
18626#endif
18627#ifdef VK_NV_shader_subgroup_partitioned
18628#endif
18629#ifdef VK_NV_device_diagnostic_checkpoints
18630void VkEncoder::vkCmdSetCheckpointNV(
18631 VkCommandBuffer commandBuffer,
18632 const void* pCheckpointMarker)
18633{
18634 auto stream = mImpl->stream();
18635 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018636 auto resources = mImpl->resources();
18637 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018638 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018639 VkCommandBuffer local_commandBuffer;
18640 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018641 void* local_pCheckpointMarker;
18642 local_pCheckpointMarker = nullptr;
18643 if (pCheckpointMarker)
18644 {
18645 local_pCheckpointMarker = (void*)pool->dupArray(pCheckpointMarker, sizeof(const uint8_t));
18646 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018647 countingStream->rewind();
18648 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018649 uint64_t cgen_var_1433;
18650 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1433, 1);
18651 countingStream->write((uint64_t*)&cgen_var_1433, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018652 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018653 uint64_t cgen_var_1434 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
18654 countingStream->putBe64(cgen_var_1434);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018655 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018656 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018657 countingStream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018658 }
18659 }
18660 uint32_t packetSize_vkCmdSetCheckpointNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18661 countingStream->rewind();
18662 uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV;
18663 stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t));
18664 stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018665 uint64_t cgen_var_1435;
18666 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1435, 1);
18667 stream->write((uint64_t*)&cgen_var_1435, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018668 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018669 uint64_t cgen_var_1436 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
18670 stream->putBe64(cgen_var_1436);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018671 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018672 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018673 stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018674 }
18675}
18676
18677void VkEncoder::vkGetQueueCheckpointDataNV(
18678 VkQueue queue,
18679 uint32_t* pCheckpointDataCount,
18680 VkCheckpointDataNV* pCheckpointData)
18681{
18682 auto stream = mImpl->stream();
18683 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018684 auto resources = mImpl->resources();
18685 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018686 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018687 VkQueue local_queue;
18688 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018689 countingStream->rewind();
18690 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018691 uint64_t cgen_var_1437;
18692 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1437, 1);
18693 countingStream->write((uint64_t*)&cgen_var_1437, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018694 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018695 uint64_t cgen_var_1438 = (uint64_t)(uintptr_t)pCheckpointDataCount;
18696 countingStream->putBe64(cgen_var_1438);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018697 if (pCheckpointDataCount)
18698 {
18699 countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18700 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018701 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018702 uint64_t cgen_var_1439 = (uint64_t)(uintptr_t)pCheckpointData;
18703 countingStream->putBe64(cgen_var_1439);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018704 if (pCheckpointData)
18705 {
18706 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18707 {
18708 marshal_VkCheckpointDataNV(countingStream, (VkCheckpointDataNV*)(pCheckpointData + i));
18709 }
18710 }
18711 }
18712 uint32_t packetSize_vkGetQueueCheckpointDataNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18713 countingStream->rewind();
18714 uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV;
18715 stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
18716 stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018717 uint64_t cgen_var_1440;
18718 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1440, 1);
18719 stream->write((uint64_t*)&cgen_var_1440, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018720 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018721 uint64_t cgen_var_1441 = (uint64_t)(uintptr_t)pCheckpointDataCount;
18722 stream->putBe64(cgen_var_1441);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018723 if (pCheckpointDataCount)
18724 {
18725 stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18726 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018727 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018728 uint64_t cgen_var_1442 = (uint64_t)(uintptr_t)pCheckpointData;
18729 stream->putBe64(cgen_var_1442);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018730 if (pCheckpointData)
18731 {
18732 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18733 {
18734 marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
18735 }
18736 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018737 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018738 uint32_t* check_pCheckpointDataCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018739 check_pCheckpointDataCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018740 if (pCheckpointDataCount)
18741 {
18742 if (!(check_pCheckpointDataCount))
18743 {
18744 fprintf(stderr, "fatal: pCheckpointDataCount inconsistent between guest and host\n");
18745 }
18746 stream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18747 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018748 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018749 VkCheckpointDataNV* check_pCheckpointData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018750 check_pCheckpointData = (VkCheckpointDataNV*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018751 if (pCheckpointData)
18752 {
18753 if (!(check_pCheckpointData))
18754 {
18755 fprintf(stderr, "fatal: pCheckpointData inconsistent between guest and host\n");
18756 }
18757 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18758 {
18759 unmarshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
18760 }
18761 }
18762}
18763
18764#endif
18765
18766