blob: 5e220927ccaaf673c5cff9ec715d5e3eeb8dc09f [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 {
3878 countingStream->write((size_t*)pDataSize, sizeof(size_t));
3879 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003880 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003881 uint64_t cgen_var_316 = (uint64_t)(uintptr_t)pData;
3882 countingStream->putBe64(cgen_var_316);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003883 if (pData)
3884 {
3885 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3886 }
3887 }
3888 uint32_t packetSize_vkGetPipelineCacheData = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3889 countingStream->rewind();
3890 uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData;
3891 stream->write(&opcode_vkGetPipelineCacheData, sizeof(uint32_t));
3892 stream->write(&packetSize_vkGetPipelineCacheData, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003893 uint64_t cgen_var_317;
3894 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_317, 1);
3895 stream->write((uint64_t*)&cgen_var_317, 1 * 8);
3896 uint64_t cgen_var_318;
3897 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_318, 1);
3898 stream->write((uint64_t*)&cgen_var_318, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003899 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003900 uint64_t cgen_var_319 = (uint64_t)(uintptr_t)pDataSize;
3901 stream->putBe64(cgen_var_319);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003902 if (pDataSize)
3903 {
3904 stream->write((size_t*)pDataSize, sizeof(size_t));
3905 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003906 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003907 uint64_t cgen_var_320 = (uint64_t)(uintptr_t)pData;
3908 stream->putBe64(cgen_var_320);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003909 if (pData)
3910 {
3911 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3912 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003913 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003914 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003915 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003916 if (pDataSize)
3917 {
3918 if (!(check_pDataSize))
3919 {
3920 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
3921 }
3922 stream->read((size_t*)pDataSize, sizeof(size_t));
3923 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003924 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003925 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003926 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003927 if (pData)
3928 {
3929 if (!(check_pData))
3930 {
3931 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
3932 }
3933 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3934 }
3935 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
3936 stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003937 countingStream->clearPool();
3938 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003939 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003940 return vkGetPipelineCacheData_VkResult_return;
3941}
3942
3943VkResult VkEncoder::vkMergePipelineCaches(
3944 VkDevice device,
3945 VkPipelineCache dstCache,
3946 uint32_t srcCacheCount,
3947 const VkPipelineCache* pSrcCaches)
3948{
3949 auto stream = mImpl->stream();
3950 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003951 auto resources = mImpl->resources();
3952 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003953 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003954 VkDevice local_device;
3955 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003956 VkPipelineCache local_dstCache;
3957 local_dstCache = dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003958 uint32_t local_srcCacheCount;
3959 local_srcCacheCount = srcCacheCount;
3960 VkPipelineCache* local_pSrcCaches;
3961 local_pSrcCaches = nullptr;
3962 if (pSrcCaches)
3963 {
3964 local_pSrcCaches = (VkPipelineCache*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
3965 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003966 countingStream->rewind();
3967 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003968 uint64_t cgen_var_323;
3969 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_323, 1);
3970 countingStream->write((uint64_t*)&cgen_var_323, 1 * 8);
3971 uint64_t cgen_var_324;
3972 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_324, 1);
3973 countingStream->write((uint64_t*)&cgen_var_324, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003974 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003975 if (((srcCacheCount)))
3976 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003977 uint64_t* cgen_var_325;
3978 countingStream->alloc((void**)&cgen_var_325, ((srcCacheCount)) * 8);
3979 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_325, ((srcCacheCount)));
3980 countingStream->write((uint64_t*)cgen_var_325, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08003981 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003982 }
3983 uint32_t packetSize_vkMergePipelineCaches = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3984 countingStream->rewind();
3985 uint32_t opcode_vkMergePipelineCaches = OP_vkMergePipelineCaches;
3986 stream->write(&opcode_vkMergePipelineCaches, sizeof(uint32_t));
3987 stream->write(&packetSize_vkMergePipelineCaches, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003988 uint64_t cgen_var_326;
3989 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_326, 1);
3990 stream->write((uint64_t*)&cgen_var_326, 1 * 8);
3991 uint64_t cgen_var_327;
3992 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_327, 1);
3993 stream->write((uint64_t*)&cgen_var_327, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003994 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003995 if (((srcCacheCount)))
3996 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003997 uint64_t* cgen_var_328;
3998 stream->alloc((void**)&cgen_var_328, ((srcCacheCount)) * 8);
3999 stream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_328, ((srcCacheCount)));
4000 stream->write((uint64_t*)cgen_var_328, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004001 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004002 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
4003 stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004004 countingStream->clearPool();
4005 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004006 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004007 return vkMergePipelineCaches_VkResult_return;
4008}
4009
4010VkResult VkEncoder::vkCreateGraphicsPipelines(
4011 VkDevice device,
4012 VkPipelineCache pipelineCache,
4013 uint32_t createInfoCount,
4014 const VkGraphicsPipelineCreateInfo* pCreateInfos,
4015 const VkAllocationCallbacks* pAllocator,
4016 VkPipeline* pPipelines)
4017{
4018 auto stream = mImpl->stream();
4019 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004020 auto resources = mImpl->resources();
4021 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004022 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004023 VkDevice local_device;
4024 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004025 VkPipelineCache local_pipelineCache;
4026 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004027 uint32_t local_createInfoCount;
4028 local_createInfoCount = createInfoCount;
4029 VkGraphicsPipelineCreateInfo* local_pCreateInfos;
4030 local_pCreateInfos = nullptr;
4031 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004032 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004033 local_pCreateInfos = (VkGraphicsPipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkGraphicsPipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004034 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4035 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004036 deepcopy_VkGraphicsPipelineCreateInfo(pool, pCreateInfos + i, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004037 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004038 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004039 VkAllocationCallbacks* local_pAllocator;
4040 local_pAllocator = nullptr;
4041 if (pAllocator)
4042 {
4043 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4044 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4045 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004046 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004047 countingStream->rewind();
4048 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004049 uint64_t cgen_var_329;
4050 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_329, 1);
4051 countingStream->write((uint64_t*)&cgen_var_329, 1 * 8);
4052 uint64_t cgen_var_330;
4053 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_330, 1);
4054 countingStream->write((uint64_t*)&cgen_var_330, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004055 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4056 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4057 {
4058 marshal_VkGraphicsPipelineCreateInfo(countingStream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4059 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004060 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004061 uint64_t cgen_var_331 = (uint64_t)(uintptr_t)local_pAllocator;
4062 countingStream->putBe64(cgen_var_331);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004063 if (local_pAllocator)
4064 {
4065 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004066 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004067 if (((createInfoCount)))
4068 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004069 uint64_t* cgen_var_332;
4070 countingStream->alloc((void**)&cgen_var_332, ((createInfoCount)) * 8);
4071 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_332, ((createInfoCount)));
4072 countingStream->write((uint64_t*)cgen_var_332, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004073 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004074 }
4075 uint32_t packetSize_vkCreateGraphicsPipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4076 countingStream->rewind();
4077 uint32_t opcode_vkCreateGraphicsPipelines = OP_vkCreateGraphicsPipelines;
4078 stream->write(&opcode_vkCreateGraphicsPipelines, sizeof(uint32_t));
4079 stream->write(&packetSize_vkCreateGraphicsPipelines, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004080 uint64_t cgen_var_333;
4081 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_333, 1);
4082 stream->write((uint64_t*)&cgen_var_333, 1 * 8);
4083 uint64_t cgen_var_334;
4084 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_334, 1);
4085 stream->write((uint64_t*)&cgen_var_334, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004086 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004087 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4088 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004089 marshal_VkGraphicsPipelineCreateInfo(stream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004090 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004091 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004092 uint64_t cgen_var_335 = (uint64_t)(uintptr_t)local_pAllocator;
4093 stream->putBe64(cgen_var_335);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004094 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004095 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004096 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004097 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004098 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004099 if (((createInfoCount)))
4100 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004101 uint64_t* cgen_var_336;
4102 stream->alloc((void**)&cgen_var_336, ((createInfoCount)) * 8);
4103 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_336, ((createInfoCount)));
4104 stream->write((uint64_t*)cgen_var_336, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004105 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004106 stream->setHandleMapping(resources->unwrapMapping());
4107 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004108 if (((createInfoCount)))
4109 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004110 uint64_t* cgen_var_337;
4111 stream->alloc((void**)&cgen_var_337, ((createInfoCount)) * 8);
4112 stream->read((uint64_t*)cgen_var_337, ((createInfoCount)) * 8);
4113 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_337, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004114 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004115 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004116 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
4117 stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004118 countingStream->clearPool();
4119 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004120 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004121 return vkCreateGraphicsPipelines_VkResult_return;
4122}
4123
4124VkResult VkEncoder::vkCreateComputePipelines(
4125 VkDevice device,
4126 VkPipelineCache pipelineCache,
4127 uint32_t createInfoCount,
4128 const VkComputePipelineCreateInfo* pCreateInfos,
4129 const VkAllocationCallbacks* pAllocator,
4130 VkPipeline* pPipelines)
4131{
4132 auto stream = mImpl->stream();
4133 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004134 auto resources = mImpl->resources();
4135 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004136 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004137 VkDevice local_device;
4138 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004139 VkPipelineCache local_pipelineCache;
4140 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004141 uint32_t local_createInfoCount;
4142 local_createInfoCount = createInfoCount;
4143 VkComputePipelineCreateInfo* local_pCreateInfos;
4144 local_pCreateInfos = nullptr;
4145 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004146 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004147 local_pCreateInfos = (VkComputePipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkComputePipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004148 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4149 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004150 deepcopy_VkComputePipelineCreateInfo(pool, pCreateInfos + i, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004151 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004152 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004153 VkAllocationCallbacks* local_pAllocator;
4154 local_pAllocator = nullptr;
4155 if (pAllocator)
4156 {
4157 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4158 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4159 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004160 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004161 countingStream->rewind();
4162 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004163 uint64_t cgen_var_338;
4164 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_338, 1);
4165 countingStream->write((uint64_t*)&cgen_var_338, 1 * 8);
4166 uint64_t cgen_var_339;
4167 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_339, 1);
4168 countingStream->write((uint64_t*)&cgen_var_339, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004169 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4170 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4171 {
4172 marshal_VkComputePipelineCreateInfo(countingStream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4173 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004174 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004175 uint64_t cgen_var_340 = (uint64_t)(uintptr_t)local_pAllocator;
4176 countingStream->putBe64(cgen_var_340);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004177 if (local_pAllocator)
4178 {
4179 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004180 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004181 if (((createInfoCount)))
4182 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004183 uint64_t* cgen_var_341;
4184 countingStream->alloc((void**)&cgen_var_341, ((createInfoCount)) * 8);
4185 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_341, ((createInfoCount)));
4186 countingStream->write((uint64_t*)cgen_var_341, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004187 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004188 }
4189 uint32_t packetSize_vkCreateComputePipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4190 countingStream->rewind();
4191 uint32_t opcode_vkCreateComputePipelines = OP_vkCreateComputePipelines;
4192 stream->write(&opcode_vkCreateComputePipelines, sizeof(uint32_t));
4193 stream->write(&packetSize_vkCreateComputePipelines, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004194 uint64_t cgen_var_342;
4195 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_342, 1);
4196 stream->write((uint64_t*)&cgen_var_342, 1 * 8);
4197 uint64_t cgen_var_343;
4198 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_343, 1);
4199 stream->write((uint64_t*)&cgen_var_343, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004200 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004201 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4202 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004203 marshal_VkComputePipelineCreateInfo(stream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004204 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004205 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004206 uint64_t cgen_var_344 = (uint64_t)(uintptr_t)local_pAllocator;
4207 stream->putBe64(cgen_var_344);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004208 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004209 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004210 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004211 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004212 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004213 if (((createInfoCount)))
4214 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004215 uint64_t* cgen_var_345;
4216 stream->alloc((void**)&cgen_var_345, ((createInfoCount)) * 8);
4217 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_345, ((createInfoCount)));
4218 stream->write((uint64_t*)cgen_var_345, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004219 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004220 stream->setHandleMapping(resources->unwrapMapping());
4221 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004222 if (((createInfoCount)))
4223 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004224 uint64_t* cgen_var_346;
4225 stream->alloc((void**)&cgen_var_346, ((createInfoCount)) * 8);
4226 stream->read((uint64_t*)cgen_var_346, ((createInfoCount)) * 8);
4227 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_346, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004228 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004229 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004230 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
4231 stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004232 countingStream->clearPool();
4233 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004234 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004235 return vkCreateComputePipelines_VkResult_return;
4236}
4237
4238void VkEncoder::vkDestroyPipeline(
4239 VkDevice device,
4240 VkPipeline pipeline,
4241 const VkAllocationCallbacks* pAllocator)
4242{
4243 auto stream = mImpl->stream();
4244 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004245 auto resources = mImpl->resources();
4246 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004247 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004248 VkDevice local_device;
4249 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004250 VkPipeline local_pipeline;
4251 local_pipeline = pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004252 VkAllocationCallbacks* local_pAllocator;
4253 local_pAllocator = nullptr;
4254 if (pAllocator)
4255 {
4256 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4257 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4258 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004259 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004260 countingStream->rewind();
4261 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004262 uint64_t cgen_var_347;
4263 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_347, 1);
4264 countingStream->write((uint64_t*)&cgen_var_347, 1 * 8);
4265 uint64_t cgen_var_348;
4266 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_348, 1);
4267 countingStream->write((uint64_t*)&cgen_var_348, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004268 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004269 uint64_t cgen_var_349 = (uint64_t)(uintptr_t)local_pAllocator;
4270 countingStream->putBe64(cgen_var_349);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004271 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004272 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004273 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004274 }
4275 }
4276 uint32_t packetSize_vkDestroyPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4277 countingStream->rewind();
4278 uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline;
4279 stream->write(&opcode_vkDestroyPipeline, sizeof(uint32_t));
4280 stream->write(&packetSize_vkDestroyPipeline, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004281 uint64_t cgen_var_350;
4282 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_350, 1);
4283 stream->write((uint64_t*)&cgen_var_350, 1 * 8);
4284 uint64_t cgen_var_351;
4285 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_351, 1);
4286 stream->write((uint64_t*)&cgen_var_351, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004287 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004288 uint64_t cgen_var_352 = (uint64_t)(uintptr_t)local_pAllocator;
4289 stream->putBe64(cgen_var_352);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004290 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004291 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004292 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004293 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004294 resources->destroyMapping()->mapHandles_VkPipeline((VkPipeline*)&pipeline);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004295}
4296
4297VkResult VkEncoder::vkCreatePipelineLayout(
4298 VkDevice device,
4299 const VkPipelineLayoutCreateInfo* pCreateInfo,
4300 const VkAllocationCallbacks* pAllocator,
4301 VkPipelineLayout* pPipelineLayout)
4302{
4303 auto stream = mImpl->stream();
4304 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004305 auto resources = mImpl->resources();
4306 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004307 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004308 VkDevice local_device;
4309 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004310 VkPipelineLayoutCreateInfo* local_pCreateInfo;
4311 local_pCreateInfo = nullptr;
4312 if (pCreateInfo)
4313 {
4314 local_pCreateInfo = (VkPipelineLayoutCreateInfo*)pool->alloc(sizeof(const VkPipelineLayoutCreateInfo));
4315 deepcopy_VkPipelineLayoutCreateInfo(pool, pCreateInfo, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
4316 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004317 VkAllocationCallbacks* local_pAllocator;
4318 local_pAllocator = nullptr;
4319 if (pAllocator)
4320 {
4321 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4322 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4323 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004324 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004325 countingStream->rewind();
4326 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004327 uint64_t cgen_var_353;
4328 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_353, 1);
4329 countingStream->write((uint64_t*)&cgen_var_353, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004330 marshal_VkPipelineLayoutCreateInfo(countingStream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004331 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004332 uint64_t cgen_var_354 = (uint64_t)(uintptr_t)local_pAllocator;
4333 countingStream->putBe64(cgen_var_354);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004334 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004335 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004336 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004337 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004338 uint64_t cgen_var_355;
4339 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_355, 1);
4340 countingStream->write((uint64_t*)&cgen_var_355, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004341 }
4342 uint32_t packetSize_vkCreatePipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4343 countingStream->rewind();
4344 uint32_t opcode_vkCreatePipelineLayout = OP_vkCreatePipelineLayout;
4345 stream->write(&opcode_vkCreatePipelineLayout, sizeof(uint32_t));
4346 stream->write(&packetSize_vkCreatePipelineLayout, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004347 uint64_t cgen_var_356;
4348 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_356, 1);
4349 stream->write((uint64_t*)&cgen_var_356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004350 marshal_VkPipelineLayoutCreateInfo(stream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004351 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004352 uint64_t cgen_var_357 = (uint64_t)(uintptr_t)local_pAllocator;
4353 stream->putBe64(cgen_var_357);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004354 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004355 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004356 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004357 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004358 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004359 uint64_t cgen_var_358;
4360 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_358, 1);
4361 stream->write((uint64_t*)&cgen_var_358, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004362 stream->setHandleMapping(resources->unwrapMapping());
4363 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004364 uint64_t cgen_var_359;
4365 stream->read((uint64_t*)&cgen_var_359, 8);
4366 stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_359, (VkPipelineLayout*)pPipelineLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004367 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004368 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
4369 stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004370 countingStream->clearPool();
4371 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004372 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004373 return vkCreatePipelineLayout_VkResult_return;
4374}
4375
4376void VkEncoder::vkDestroyPipelineLayout(
4377 VkDevice device,
4378 VkPipelineLayout pipelineLayout,
4379 const VkAllocationCallbacks* pAllocator)
4380{
4381 auto stream = mImpl->stream();
4382 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004383 auto resources = mImpl->resources();
4384 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004385 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004386 VkDevice local_device;
4387 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004388 VkPipelineLayout local_pipelineLayout;
4389 local_pipelineLayout = pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004390 VkAllocationCallbacks* local_pAllocator;
4391 local_pAllocator = nullptr;
4392 if (pAllocator)
4393 {
4394 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4395 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4396 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004397 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004398 countingStream->rewind();
4399 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004400 uint64_t cgen_var_360;
4401 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_360, 1);
4402 countingStream->write((uint64_t*)&cgen_var_360, 1 * 8);
4403 uint64_t cgen_var_361;
4404 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_361, 1);
4405 countingStream->write((uint64_t*)&cgen_var_361, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004406 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004407 uint64_t cgen_var_362 = (uint64_t)(uintptr_t)local_pAllocator;
4408 countingStream->putBe64(cgen_var_362);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004409 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004410 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004411 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004412 }
4413 }
4414 uint32_t packetSize_vkDestroyPipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4415 countingStream->rewind();
4416 uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout;
4417 stream->write(&opcode_vkDestroyPipelineLayout, sizeof(uint32_t));
4418 stream->write(&packetSize_vkDestroyPipelineLayout, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004419 uint64_t cgen_var_363;
4420 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_363, 1);
4421 stream->write((uint64_t*)&cgen_var_363, 1 * 8);
4422 uint64_t cgen_var_364;
4423 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_364, 1);
4424 stream->write((uint64_t*)&cgen_var_364, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004425 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004426 uint64_t cgen_var_365 = (uint64_t)(uintptr_t)local_pAllocator;
4427 stream->putBe64(cgen_var_365);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004428 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004429 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004430 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004431 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004432 resources->destroyMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)&pipelineLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004433}
4434
4435VkResult VkEncoder::vkCreateSampler(
4436 VkDevice device,
4437 const VkSamplerCreateInfo* pCreateInfo,
4438 const VkAllocationCallbacks* pAllocator,
4439 VkSampler* pSampler)
4440{
4441 auto stream = mImpl->stream();
4442 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004443 auto resources = mImpl->resources();
4444 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004445 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004446 VkDevice local_device;
4447 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004448 VkSamplerCreateInfo* local_pCreateInfo;
4449 local_pCreateInfo = nullptr;
4450 if (pCreateInfo)
4451 {
4452 local_pCreateInfo = (VkSamplerCreateInfo*)pool->alloc(sizeof(const VkSamplerCreateInfo));
4453 deepcopy_VkSamplerCreateInfo(pool, pCreateInfo, (VkSamplerCreateInfo*)(local_pCreateInfo));
4454 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004455 VkAllocationCallbacks* local_pAllocator;
4456 local_pAllocator = nullptr;
4457 if (pAllocator)
4458 {
4459 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4460 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4461 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004462 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004463 countingStream->rewind();
4464 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004465 uint64_t cgen_var_366;
4466 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_366, 1);
4467 countingStream->write((uint64_t*)&cgen_var_366, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004468 marshal_VkSamplerCreateInfo(countingStream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004469 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004470 uint64_t cgen_var_367 = (uint64_t)(uintptr_t)local_pAllocator;
4471 countingStream->putBe64(cgen_var_367);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004472 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004473 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004474 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004475 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004476 uint64_t cgen_var_368;
4477 countingStream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_368, 1);
4478 countingStream->write((uint64_t*)&cgen_var_368, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004479 }
4480 uint32_t packetSize_vkCreateSampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4481 countingStream->rewind();
4482 uint32_t opcode_vkCreateSampler = OP_vkCreateSampler;
4483 stream->write(&opcode_vkCreateSampler, sizeof(uint32_t));
4484 stream->write(&packetSize_vkCreateSampler, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004485 uint64_t cgen_var_369;
4486 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_369, 1);
4487 stream->write((uint64_t*)&cgen_var_369, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004488 marshal_VkSamplerCreateInfo(stream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004489 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004490 uint64_t cgen_var_370 = (uint64_t)(uintptr_t)local_pAllocator;
4491 stream->putBe64(cgen_var_370);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004492 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004493 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004494 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004495 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004496 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004497 uint64_t cgen_var_371;
4498 stream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_371, 1);
4499 stream->write((uint64_t*)&cgen_var_371, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004500 stream->setHandleMapping(resources->unwrapMapping());
4501 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004502 uint64_t cgen_var_372;
4503 stream->read((uint64_t*)&cgen_var_372, 8);
4504 stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_372, (VkSampler*)pSampler, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004505 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004506 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
4507 stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004508 countingStream->clearPool();
4509 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004510 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004511 return vkCreateSampler_VkResult_return;
4512}
4513
4514void VkEncoder::vkDestroySampler(
4515 VkDevice device,
4516 VkSampler sampler,
4517 const VkAllocationCallbacks* pAllocator)
4518{
4519 auto stream = mImpl->stream();
4520 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004521 auto resources = mImpl->resources();
4522 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004523 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004524 VkDevice local_device;
4525 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004526 VkSampler local_sampler;
4527 local_sampler = sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004528 VkAllocationCallbacks* local_pAllocator;
4529 local_pAllocator = nullptr;
4530 if (pAllocator)
4531 {
4532 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4533 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4534 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004535 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004536 countingStream->rewind();
4537 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004538 uint64_t cgen_var_373;
4539 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_373, 1);
4540 countingStream->write((uint64_t*)&cgen_var_373, 1 * 8);
4541 uint64_t cgen_var_374;
4542 countingStream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_374, 1);
4543 countingStream->write((uint64_t*)&cgen_var_374, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004544 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004545 uint64_t cgen_var_375 = (uint64_t)(uintptr_t)local_pAllocator;
4546 countingStream->putBe64(cgen_var_375);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004547 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004548 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004549 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004550 }
4551 }
4552 uint32_t packetSize_vkDestroySampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4553 countingStream->rewind();
4554 uint32_t opcode_vkDestroySampler = OP_vkDestroySampler;
4555 stream->write(&opcode_vkDestroySampler, sizeof(uint32_t));
4556 stream->write(&packetSize_vkDestroySampler, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004557 uint64_t cgen_var_376;
4558 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_376, 1);
4559 stream->write((uint64_t*)&cgen_var_376, 1 * 8);
4560 uint64_t cgen_var_377;
4561 stream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_377, 1);
4562 stream->write((uint64_t*)&cgen_var_377, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004563 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004564 uint64_t cgen_var_378 = (uint64_t)(uintptr_t)local_pAllocator;
4565 stream->putBe64(cgen_var_378);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004566 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004567 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004568 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004569 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004570 resources->destroyMapping()->mapHandles_VkSampler((VkSampler*)&sampler);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004571}
4572
4573VkResult VkEncoder::vkCreateDescriptorSetLayout(
4574 VkDevice device,
4575 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
4576 const VkAllocationCallbacks* pAllocator,
4577 VkDescriptorSetLayout* pSetLayout)
4578{
4579 auto stream = mImpl->stream();
4580 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004581 auto resources = mImpl->resources();
4582 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004583 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004584 VkDevice local_device;
4585 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004586 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
4587 local_pCreateInfo = nullptr;
4588 if (pCreateInfo)
4589 {
4590 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
4591 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
4592 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004593 VkAllocationCallbacks* local_pAllocator;
4594 local_pAllocator = nullptr;
4595 if (pAllocator)
4596 {
4597 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4598 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4599 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004600 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004601 countingStream->rewind();
4602 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004603 uint64_t cgen_var_379;
4604 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_379, 1);
4605 countingStream->write((uint64_t*)&cgen_var_379, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004606 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004607 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004608 uint64_t cgen_var_380 = (uint64_t)(uintptr_t)local_pAllocator;
4609 countingStream->putBe64(cgen_var_380);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004610 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004611 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004612 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004613 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004614 uint64_t cgen_var_381;
4615 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_381, 1);
4616 countingStream->write((uint64_t*)&cgen_var_381, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004617 }
4618 uint32_t packetSize_vkCreateDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4619 countingStream->rewind();
4620 uint32_t opcode_vkCreateDescriptorSetLayout = OP_vkCreateDescriptorSetLayout;
4621 stream->write(&opcode_vkCreateDescriptorSetLayout, sizeof(uint32_t));
4622 stream->write(&packetSize_vkCreateDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004623 uint64_t cgen_var_382;
4624 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_382, 1);
4625 stream->write((uint64_t*)&cgen_var_382, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004626 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004627 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004628 uint64_t cgen_var_383 = (uint64_t)(uintptr_t)local_pAllocator;
4629 stream->putBe64(cgen_var_383);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004630 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004631 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004632 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004633 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004634 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004635 uint64_t cgen_var_384;
4636 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_384, 1);
4637 stream->write((uint64_t*)&cgen_var_384, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004638 stream->setHandleMapping(resources->unwrapMapping());
4639 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004640 uint64_t cgen_var_385;
4641 stream->read((uint64_t*)&cgen_var_385, 8);
4642 stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_385, (VkDescriptorSetLayout*)pSetLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004643 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004644 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
4645 stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004646 countingStream->clearPool();
4647 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004648 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004649 return vkCreateDescriptorSetLayout_VkResult_return;
4650}
4651
4652void VkEncoder::vkDestroyDescriptorSetLayout(
4653 VkDevice device,
4654 VkDescriptorSetLayout descriptorSetLayout,
4655 const VkAllocationCallbacks* pAllocator)
4656{
4657 auto stream = mImpl->stream();
4658 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004659 auto resources = mImpl->resources();
4660 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004661 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004662 VkDevice local_device;
4663 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004664 VkDescriptorSetLayout local_descriptorSetLayout;
4665 local_descriptorSetLayout = descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004666 VkAllocationCallbacks* local_pAllocator;
4667 local_pAllocator = nullptr;
4668 if (pAllocator)
4669 {
4670 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4671 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4672 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004673 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004674 countingStream->rewind();
4675 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004676 uint64_t cgen_var_386;
4677 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_386, 1);
4678 countingStream->write((uint64_t*)&cgen_var_386, 1 * 8);
4679 uint64_t cgen_var_387;
4680 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_387, 1);
4681 countingStream->write((uint64_t*)&cgen_var_387, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004682 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004683 uint64_t cgen_var_388 = (uint64_t)(uintptr_t)local_pAllocator;
4684 countingStream->putBe64(cgen_var_388);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004685 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004686 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004687 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004688 }
4689 }
4690 uint32_t packetSize_vkDestroyDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4691 countingStream->rewind();
4692 uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout;
4693 stream->write(&opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
4694 stream->write(&packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004695 uint64_t cgen_var_389;
4696 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_389, 1);
4697 stream->write((uint64_t*)&cgen_var_389, 1 * 8);
4698 uint64_t cgen_var_390;
4699 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_390, 1);
4700 stream->write((uint64_t*)&cgen_var_390, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004701 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004702 uint64_t cgen_var_391 = (uint64_t)(uintptr_t)local_pAllocator;
4703 stream->putBe64(cgen_var_391);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004704 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004705 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004706 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004707 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004708 resources->destroyMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&descriptorSetLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004709}
4710
4711VkResult VkEncoder::vkCreateDescriptorPool(
4712 VkDevice device,
4713 const VkDescriptorPoolCreateInfo* pCreateInfo,
4714 const VkAllocationCallbacks* pAllocator,
4715 VkDescriptorPool* pDescriptorPool)
4716{
4717 auto stream = mImpl->stream();
4718 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004719 auto resources = mImpl->resources();
4720 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004721 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004722 VkDevice local_device;
4723 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004724 VkDescriptorPoolCreateInfo* local_pCreateInfo;
4725 local_pCreateInfo = nullptr;
4726 if (pCreateInfo)
4727 {
4728 local_pCreateInfo = (VkDescriptorPoolCreateInfo*)pool->alloc(sizeof(const VkDescriptorPoolCreateInfo));
4729 deepcopy_VkDescriptorPoolCreateInfo(pool, pCreateInfo, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
4730 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004731 VkAllocationCallbacks* local_pAllocator;
4732 local_pAllocator = nullptr;
4733 if (pAllocator)
4734 {
4735 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4736 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4737 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004738 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004739 countingStream->rewind();
4740 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004741 uint64_t cgen_var_392;
4742 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_392, 1);
4743 countingStream->write((uint64_t*)&cgen_var_392, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004744 marshal_VkDescriptorPoolCreateInfo(countingStream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004745 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004746 uint64_t cgen_var_393 = (uint64_t)(uintptr_t)local_pAllocator;
4747 countingStream->putBe64(cgen_var_393);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004748 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004749 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004750 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004751 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004752 uint64_t cgen_var_394;
4753 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_394, 1);
4754 countingStream->write((uint64_t*)&cgen_var_394, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004755 }
4756 uint32_t packetSize_vkCreateDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4757 countingStream->rewind();
4758 uint32_t opcode_vkCreateDescriptorPool = OP_vkCreateDescriptorPool;
4759 stream->write(&opcode_vkCreateDescriptorPool, sizeof(uint32_t));
4760 stream->write(&packetSize_vkCreateDescriptorPool, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004761 uint64_t cgen_var_395;
4762 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_395, 1);
4763 stream->write((uint64_t*)&cgen_var_395, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004764 marshal_VkDescriptorPoolCreateInfo(stream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004765 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004766 uint64_t cgen_var_396 = (uint64_t)(uintptr_t)local_pAllocator;
4767 stream->putBe64(cgen_var_396);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004768 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004769 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004770 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004771 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004772 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004773 uint64_t cgen_var_397;
4774 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_397, 1);
4775 stream->write((uint64_t*)&cgen_var_397, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004776 stream->setHandleMapping(resources->unwrapMapping());
4777 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004778 uint64_t cgen_var_398;
4779 stream->read((uint64_t*)&cgen_var_398, 8);
4780 stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_398, (VkDescriptorPool*)pDescriptorPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004781 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004782 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
4783 stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004784 countingStream->clearPool();
4785 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004786 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004787 return vkCreateDescriptorPool_VkResult_return;
4788}
4789
4790void VkEncoder::vkDestroyDescriptorPool(
4791 VkDevice device,
4792 VkDescriptorPool descriptorPool,
4793 const VkAllocationCallbacks* pAllocator)
4794{
4795 auto stream = mImpl->stream();
4796 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004797 auto resources = mImpl->resources();
4798 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004799 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004800 VkDevice local_device;
4801 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004802 VkDescriptorPool local_descriptorPool;
4803 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004804 VkAllocationCallbacks* local_pAllocator;
4805 local_pAllocator = nullptr;
4806 if (pAllocator)
4807 {
4808 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4809 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4810 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004811 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004812 countingStream->rewind();
4813 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004814 uint64_t cgen_var_399;
4815 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_399, 1);
4816 countingStream->write((uint64_t*)&cgen_var_399, 1 * 8);
4817 uint64_t cgen_var_400;
4818 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_400, 1);
4819 countingStream->write((uint64_t*)&cgen_var_400, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004820 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004821 uint64_t cgen_var_401 = (uint64_t)(uintptr_t)local_pAllocator;
4822 countingStream->putBe64(cgen_var_401);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004823 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004824 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004825 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004826 }
4827 }
4828 uint32_t packetSize_vkDestroyDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4829 countingStream->rewind();
4830 uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool;
4831 stream->write(&opcode_vkDestroyDescriptorPool, sizeof(uint32_t));
4832 stream->write(&packetSize_vkDestroyDescriptorPool, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004833 uint64_t cgen_var_402;
4834 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_402, 1);
4835 stream->write((uint64_t*)&cgen_var_402, 1 * 8);
4836 uint64_t cgen_var_403;
4837 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_403, 1);
4838 stream->write((uint64_t*)&cgen_var_403, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004839 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004840 uint64_t cgen_var_404 = (uint64_t)(uintptr_t)local_pAllocator;
4841 stream->putBe64(cgen_var_404);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004842 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004843 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004844 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004845 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004846 resources->destroyMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)&descriptorPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004847}
4848
4849VkResult VkEncoder::vkResetDescriptorPool(
4850 VkDevice device,
4851 VkDescriptorPool descriptorPool,
4852 VkDescriptorPoolResetFlags flags)
4853{
4854 auto stream = mImpl->stream();
4855 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004856 auto resources = mImpl->resources();
4857 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004858 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004859 VkDevice local_device;
4860 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004861 VkDescriptorPool local_descriptorPool;
4862 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004863 VkDescriptorPoolResetFlags local_flags;
4864 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004865 countingStream->rewind();
4866 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004867 uint64_t cgen_var_405;
4868 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_405, 1);
4869 countingStream->write((uint64_t*)&cgen_var_405, 1 * 8);
4870 uint64_t cgen_var_406;
4871 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_406, 1);
4872 countingStream->write((uint64_t*)&cgen_var_406, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004873 countingStream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004874 }
4875 uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4876 countingStream->rewind();
4877 uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool;
4878 stream->write(&opcode_vkResetDescriptorPool, sizeof(uint32_t));
4879 stream->write(&packetSize_vkResetDescriptorPool, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004880 uint64_t cgen_var_407;
4881 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_407, 1);
4882 stream->write((uint64_t*)&cgen_var_407, 1 * 8);
4883 uint64_t cgen_var_408;
4884 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_408, 1);
4885 stream->write((uint64_t*)&cgen_var_408, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004886 stream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004887 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
4888 stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004889 countingStream->clearPool();
4890 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004891 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004892 return vkResetDescriptorPool_VkResult_return;
4893}
4894
4895VkResult VkEncoder::vkAllocateDescriptorSets(
4896 VkDevice device,
4897 const VkDescriptorSetAllocateInfo* pAllocateInfo,
4898 VkDescriptorSet* pDescriptorSets)
4899{
4900 auto stream = mImpl->stream();
4901 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004902 auto resources = mImpl->resources();
4903 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004904 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004905 VkDevice local_device;
4906 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004907 VkDescriptorSetAllocateInfo* local_pAllocateInfo;
4908 local_pAllocateInfo = nullptr;
4909 if (pAllocateInfo)
4910 {
4911 local_pAllocateInfo = (VkDescriptorSetAllocateInfo*)pool->alloc(sizeof(const VkDescriptorSetAllocateInfo));
4912 deepcopy_VkDescriptorSetAllocateInfo(pool, pAllocateInfo, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
4913 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004914 countingStream->rewind();
4915 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004916 uint64_t cgen_var_409;
4917 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_409, 1);
4918 countingStream->write((uint64_t*)&cgen_var_409, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004919 marshal_VkDescriptorSetAllocateInfo(countingStream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004920 if (pAllocateInfo->descriptorSetCount)
4921 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004922 uint64_t* cgen_var_410;
4923 countingStream->alloc((void**)&cgen_var_410, pAllocateInfo->descriptorSetCount * 8);
4924 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_410, pAllocateInfo->descriptorSetCount);
4925 countingStream->write((uint64_t*)cgen_var_410, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004926 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004927 }
4928 uint32_t packetSize_vkAllocateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4929 countingStream->rewind();
4930 uint32_t opcode_vkAllocateDescriptorSets = OP_vkAllocateDescriptorSets;
4931 stream->write(&opcode_vkAllocateDescriptorSets, sizeof(uint32_t));
4932 stream->write(&packetSize_vkAllocateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004933 uint64_t cgen_var_411;
4934 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_411, 1);
4935 stream->write((uint64_t*)&cgen_var_411, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004936 marshal_VkDescriptorSetAllocateInfo(stream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08004937 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004938 if (pAllocateInfo->descriptorSetCount)
4939 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004940 uint64_t* cgen_var_412;
4941 stream->alloc((void**)&cgen_var_412, pAllocateInfo->descriptorSetCount * 8);
4942 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_412, pAllocateInfo->descriptorSetCount);
4943 stream->write((uint64_t*)cgen_var_412, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004944 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004945 stream->setHandleMapping(resources->unwrapMapping());
4946 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004947 if (pAllocateInfo->descriptorSetCount)
4948 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004949 uint64_t* cgen_var_413;
4950 stream->alloc((void**)&cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
4951 stream->read((uint64_t*)cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
4952 stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_413, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004953 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004954 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004955 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
4956 stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004957 countingStream->clearPool();
4958 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004959 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004960 return vkAllocateDescriptorSets_VkResult_return;
4961}
4962
4963VkResult VkEncoder::vkFreeDescriptorSets(
4964 VkDevice device,
4965 VkDescriptorPool descriptorPool,
4966 uint32_t descriptorSetCount,
4967 const VkDescriptorSet* pDescriptorSets)
4968{
4969 auto stream = mImpl->stream();
4970 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004971 auto resources = mImpl->resources();
4972 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004973 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004974 VkDevice local_device;
4975 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004976 VkDescriptorPool local_descriptorPool;
4977 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004978 uint32_t local_descriptorSetCount;
4979 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004980 VkDescriptorSet* local_pDescriptorSets;
4981 local_pDescriptorSets = nullptr;
4982 if (pDescriptorSets)
4983 {
4984 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
4985 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004986 countingStream->rewind();
4987 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004988 uint64_t cgen_var_414;
4989 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_414, 1);
4990 countingStream->write((uint64_t*)&cgen_var_414, 1 * 8);
4991 uint64_t cgen_var_415;
4992 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_415, 1);
4993 countingStream->write((uint64_t*)&cgen_var_415, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004994 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004995 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004996 uint64_t cgen_var_416 = (uint64_t)(uintptr_t)local_pDescriptorSets;
4997 countingStream->putBe64(cgen_var_416);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004998 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004999 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005000 if (((descriptorSetCount)))
5001 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005002 uint64_t* cgen_var_417;
5003 countingStream->alloc((void**)&cgen_var_417, ((descriptorSetCount)) * 8);
5004 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_417, ((descriptorSetCount)));
5005 countingStream->write((uint64_t*)cgen_var_417, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005006 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005007 }
5008 }
5009 uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5010 countingStream->rewind();
5011 uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets;
5012 stream->write(&opcode_vkFreeDescriptorSets, sizeof(uint32_t));
5013 stream->write(&packetSize_vkFreeDescriptorSets, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005014 uint64_t cgen_var_418;
5015 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_418, 1);
5016 stream->write((uint64_t*)&cgen_var_418, 1 * 8);
5017 uint64_t cgen_var_419;
5018 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_419, 1);
5019 stream->write((uint64_t*)&cgen_var_419, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005020 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005021 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005022 uint64_t cgen_var_420 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5023 stream->putBe64(cgen_var_420);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005024 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005025 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005026 if (((descriptorSetCount)))
5027 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005028 uint64_t* cgen_var_421;
5029 stream->alloc((void**)&cgen_var_421, ((descriptorSetCount)) * 8);
5030 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_421, ((descriptorSetCount)));
5031 stream->write((uint64_t*)cgen_var_421, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005032 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005033 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005034 if (pDescriptorSets)
5035 {
5036 resources->destroyMapping()->mapHandles_VkDescriptorSet((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)));
5037 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005038 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
5039 stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005040 countingStream->clearPool();
5041 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005042 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005043 return vkFreeDescriptorSets_VkResult_return;
5044}
5045
5046void VkEncoder::vkUpdateDescriptorSets(
5047 VkDevice device,
5048 uint32_t descriptorWriteCount,
5049 const VkWriteDescriptorSet* pDescriptorWrites,
5050 uint32_t descriptorCopyCount,
5051 const VkCopyDescriptorSet* pDescriptorCopies)
5052{
5053 auto stream = mImpl->stream();
5054 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005055 auto resources = mImpl->resources();
5056 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005057 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005058 VkDevice local_device;
5059 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005060 uint32_t local_descriptorWriteCount;
5061 local_descriptorWriteCount = descriptorWriteCount;
5062 VkWriteDescriptorSet* local_pDescriptorWrites;
5063 local_pDescriptorWrites = nullptr;
5064 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005065 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005066 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005067 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5068 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005069 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005070 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005071 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005072 uint32_t local_descriptorCopyCount;
5073 local_descriptorCopyCount = descriptorCopyCount;
5074 VkCopyDescriptorSet* local_pDescriptorCopies;
5075 local_pDescriptorCopies = nullptr;
5076 if (pDescriptorCopies)
5077 {
5078 local_pDescriptorCopies = (VkCopyDescriptorSet*)pool->alloc(((descriptorCopyCount)) * sizeof(const VkCopyDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005079 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5080 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005081 deepcopy_VkCopyDescriptorSet(pool, pDescriptorCopies + i, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
5082 }
5083 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005084 countingStream->rewind();
5085 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005086 uint64_t cgen_var_422;
5087 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_422, 1);
5088 countingStream->write((uint64_t*)&cgen_var_422, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005089 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
5090 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5091 {
5092 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
5093 }
5094 countingStream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
5095 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5096 {
5097 marshal_VkCopyDescriptorSet(countingStream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005098 }
5099 }
5100 uint32_t packetSize_vkUpdateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5101 countingStream->rewind();
5102 uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets;
5103 stream->write(&opcode_vkUpdateDescriptorSets, sizeof(uint32_t));
5104 stream->write(&packetSize_vkUpdateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005105 uint64_t cgen_var_423;
5106 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_423, 1);
5107 stream->write((uint64_t*)&cgen_var_423, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005108 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005109 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5110 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005111 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005112 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005113 stream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005114 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5115 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005116 marshal_VkCopyDescriptorSet(stream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005117 }
5118}
5119
5120VkResult VkEncoder::vkCreateFramebuffer(
5121 VkDevice device,
5122 const VkFramebufferCreateInfo* pCreateInfo,
5123 const VkAllocationCallbacks* pAllocator,
5124 VkFramebuffer* pFramebuffer)
5125{
5126 auto stream = mImpl->stream();
5127 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005128 auto resources = mImpl->resources();
5129 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005130 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005131 VkDevice local_device;
5132 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005133 VkFramebufferCreateInfo* local_pCreateInfo;
5134 local_pCreateInfo = nullptr;
5135 if (pCreateInfo)
5136 {
5137 local_pCreateInfo = (VkFramebufferCreateInfo*)pool->alloc(sizeof(const VkFramebufferCreateInfo));
5138 deepcopy_VkFramebufferCreateInfo(pool, pCreateInfo, (VkFramebufferCreateInfo*)(local_pCreateInfo));
5139 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005140 VkAllocationCallbacks* local_pAllocator;
5141 local_pAllocator = nullptr;
5142 if (pAllocator)
5143 {
5144 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5145 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5146 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005147 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005148 countingStream->rewind();
5149 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005150 uint64_t cgen_var_424;
5151 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_424, 1);
5152 countingStream->write((uint64_t*)&cgen_var_424, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005153 marshal_VkFramebufferCreateInfo(countingStream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005154 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005155 uint64_t cgen_var_425 = (uint64_t)(uintptr_t)local_pAllocator;
5156 countingStream->putBe64(cgen_var_425);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005157 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005158 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005159 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005160 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005161 uint64_t cgen_var_426;
5162 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_426, 1);
5163 countingStream->write((uint64_t*)&cgen_var_426, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005164 }
5165 uint32_t packetSize_vkCreateFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5166 countingStream->rewind();
5167 uint32_t opcode_vkCreateFramebuffer = OP_vkCreateFramebuffer;
5168 stream->write(&opcode_vkCreateFramebuffer, sizeof(uint32_t));
5169 stream->write(&packetSize_vkCreateFramebuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005170 uint64_t cgen_var_427;
5171 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_427, 1);
5172 stream->write((uint64_t*)&cgen_var_427, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005173 marshal_VkFramebufferCreateInfo(stream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005174 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005175 uint64_t cgen_var_428 = (uint64_t)(uintptr_t)local_pAllocator;
5176 stream->putBe64(cgen_var_428);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005177 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005178 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005179 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005180 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005181 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005182 uint64_t cgen_var_429;
5183 stream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_429, 1);
5184 stream->write((uint64_t*)&cgen_var_429, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005185 stream->setHandleMapping(resources->unwrapMapping());
5186 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005187 uint64_t cgen_var_430;
5188 stream->read((uint64_t*)&cgen_var_430, 8);
5189 stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_430, (VkFramebuffer*)pFramebuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005190 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005191 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
5192 stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005193 countingStream->clearPool();
5194 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005195 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005196 return vkCreateFramebuffer_VkResult_return;
5197}
5198
5199void VkEncoder::vkDestroyFramebuffer(
5200 VkDevice device,
5201 VkFramebuffer framebuffer,
5202 const VkAllocationCallbacks* pAllocator)
5203{
5204 auto stream = mImpl->stream();
5205 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005206 auto resources = mImpl->resources();
5207 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005208 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005209 VkDevice local_device;
5210 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005211 VkFramebuffer local_framebuffer;
5212 local_framebuffer = framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005213 VkAllocationCallbacks* local_pAllocator;
5214 local_pAllocator = nullptr;
5215 if (pAllocator)
5216 {
5217 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5218 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5219 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005220 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005221 countingStream->rewind();
5222 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005223 uint64_t cgen_var_431;
5224 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_431, 1);
5225 countingStream->write((uint64_t*)&cgen_var_431, 1 * 8);
5226 uint64_t cgen_var_432;
5227 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_432, 1);
5228 countingStream->write((uint64_t*)&cgen_var_432, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005229 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005230 uint64_t cgen_var_433 = (uint64_t)(uintptr_t)local_pAllocator;
5231 countingStream->putBe64(cgen_var_433);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005232 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005233 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005234 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005235 }
5236 }
5237 uint32_t packetSize_vkDestroyFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5238 countingStream->rewind();
5239 uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer;
5240 stream->write(&opcode_vkDestroyFramebuffer, sizeof(uint32_t));
5241 stream->write(&packetSize_vkDestroyFramebuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005242 uint64_t cgen_var_434;
5243 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_434, 1);
5244 stream->write((uint64_t*)&cgen_var_434, 1 * 8);
5245 uint64_t cgen_var_435;
5246 stream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_435, 1);
5247 stream->write((uint64_t*)&cgen_var_435, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005248 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005249 uint64_t cgen_var_436 = (uint64_t)(uintptr_t)local_pAllocator;
5250 stream->putBe64(cgen_var_436);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005251 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005252 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005253 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005254 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005255 resources->destroyMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)&framebuffer);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005256}
5257
5258VkResult VkEncoder::vkCreateRenderPass(
5259 VkDevice device,
5260 const VkRenderPassCreateInfo* pCreateInfo,
5261 const VkAllocationCallbacks* pAllocator,
5262 VkRenderPass* pRenderPass)
5263{
5264 auto stream = mImpl->stream();
5265 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005266 auto resources = mImpl->resources();
5267 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005268 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005269 VkDevice local_device;
5270 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005271 VkRenderPassCreateInfo* local_pCreateInfo;
5272 local_pCreateInfo = nullptr;
5273 if (pCreateInfo)
5274 {
5275 local_pCreateInfo = (VkRenderPassCreateInfo*)pool->alloc(sizeof(const VkRenderPassCreateInfo));
5276 deepcopy_VkRenderPassCreateInfo(pool, pCreateInfo, (VkRenderPassCreateInfo*)(local_pCreateInfo));
5277 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005278 VkAllocationCallbacks* local_pAllocator;
5279 local_pAllocator = nullptr;
5280 if (pAllocator)
5281 {
5282 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5283 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5284 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005285 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005286 countingStream->rewind();
5287 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005288 uint64_t cgen_var_437;
5289 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_437, 1);
5290 countingStream->write((uint64_t*)&cgen_var_437, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005291 marshal_VkRenderPassCreateInfo(countingStream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005292 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005293 uint64_t cgen_var_438 = (uint64_t)(uintptr_t)local_pAllocator;
5294 countingStream->putBe64(cgen_var_438);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005295 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005296 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005297 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005298 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005299 uint64_t cgen_var_439;
5300 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_439, 1);
5301 countingStream->write((uint64_t*)&cgen_var_439, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005302 }
5303 uint32_t packetSize_vkCreateRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5304 countingStream->rewind();
5305 uint32_t opcode_vkCreateRenderPass = OP_vkCreateRenderPass;
5306 stream->write(&opcode_vkCreateRenderPass, sizeof(uint32_t));
5307 stream->write(&packetSize_vkCreateRenderPass, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005308 uint64_t cgen_var_440;
5309 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_440, 1);
5310 stream->write((uint64_t*)&cgen_var_440, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005311 marshal_VkRenderPassCreateInfo(stream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005312 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005313 uint64_t cgen_var_441 = (uint64_t)(uintptr_t)local_pAllocator;
5314 stream->putBe64(cgen_var_441);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005315 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005316 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005317 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005318 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005319 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005320 uint64_t cgen_var_442;
5321 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_442, 1);
5322 stream->write((uint64_t*)&cgen_var_442, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005323 stream->setHandleMapping(resources->unwrapMapping());
5324 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005325 uint64_t cgen_var_443;
5326 stream->read((uint64_t*)&cgen_var_443, 8);
5327 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_443, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005328 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005329 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
5330 stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005331 countingStream->clearPool();
5332 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005333 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005334 return vkCreateRenderPass_VkResult_return;
5335}
5336
5337void VkEncoder::vkDestroyRenderPass(
5338 VkDevice device,
5339 VkRenderPass renderPass,
5340 const VkAllocationCallbacks* pAllocator)
5341{
5342 auto stream = mImpl->stream();
5343 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005344 auto resources = mImpl->resources();
5345 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005346 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005347 VkDevice local_device;
5348 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005349 VkRenderPass local_renderPass;
5350 local_renderPass = renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005351 VkAllocationCallbacks* local_pAllocator;
5352 local_pAllocator = nullptr;
5353 if (pAllocator)
5354 {
5355 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5356 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5357 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005358 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005359 countingStream->rewind();
5360 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005361 uint64_t cgen_var_444;
5362 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_444, 1);
5363 countingStream->write((uint64_t*)&cgen_var_444, 1 * 8);
5364 uint64_t cgen_var_445;
5365 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_445, 1);
5366 countingStream->write((uint64_t*)&cgen_var_445, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005367 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005368 uint64_t cgen_var_446 = (uint64_t)(uintptr_t)local_pAllocator;
5369 countingStream->putBe64(cgen_var_446);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005370 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005371 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005372 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005373 }
5374 }
5375 uint32_t packetSize_vkDestroyRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5376 countingStream->rewind();
5377 uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass;
5378 stream->write(&opcode_vkDestroyRenderPass, sizeof(uint32_t));
5379 stream->write(&packetSize_vkDestroyRenderPass, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005380 uint64_t cgen_var_447;
5381 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_447, 1);
5382 stream->write((uint64_t*)&cgen_var_447, 1 * 8);
5383 uint64_t cgen_var_448;
5384 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_448, 1);
5385 stream->write((uint64_t*)&cgen_var_448, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005386 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005387 uint64_t cgen_var_449 = (uint64_t)(uintptr_t)local_pAllocator;
5388 stream->putBe64(cgen_var_449);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005389 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005390 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005391 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005392 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005393 resources->destroyMapping()->mapHandles_VkRenderPass((VkRenderPass*)&renderPass);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005394}
5395
5396void VkEncoder::vkGetRenderAreaGranularity(
5397 VkDevice device,
5398 VkRenderPass renderPass,
5399 VkExtent2D* pGranularity)
5400{
5401 auto stream = mImpl->stream();
5402 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005403 auto resources = mImpl->resources();
5404 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005405 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005406 VkDevice local_device;
5407 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005408 VkRenderPass local_renderPass;
5409 local_renderPass = renderPass;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005410 countingStream->rewind();
5411 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005412 uint64_t cgen_var_450;
5413 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_450, 1);
5414 countingStream->write((uint64_t*)&cgen_var_450, 1 * 8);
5415 uint64_t cgen_var_451;
5416 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_451, 1);
5417 countingStream->write((uint64_t*)&cgen_var_451, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005418 marshal_VkExtent2D(countingStream, (VkExtent2D*)(pGranularity));
5419 }
5420 uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5421 countingStream->rewind();
5422 uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity;
5423 stream->write(&opcode_vkGetRenderAreaGranularity, sizeof(uint32_t));
5424 stream->write(&packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005425 uint64_t cgen_var_452;
5426 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_452, 1);
5427 stream->write((uint64_t*)&cgen_var_452, 1 * 8);
5428 uint64_t cgen_var_453;
5429 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_453, 1);
5430 stream->write((uint64_t*)&cgen_var_453, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005431 marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
5432 unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
5433}
5434
5435VkResult VkEncoder::vkCreateCommandPool(
5436 VkDevice device,
5437 const VkCommandPoolCreateInfo* pCreateInfo,
5438 const VkAllocationCallbacks* pAllocator,
5439 VkCommandPool* pCommandPool)
5440{
5441 auto stream = mImpl->stream();
5442 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005443 auto resources = mImpl->resources();
5444 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005445 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005446 VkDevice local_device;
5447 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005448 VkCommandPoolCreateInfo* local_pCreateInfo;
5449 local_pCreateInfo = nullptr;
5450 if (pCreateInfo)
5451 {
5452 local_pCreateInfo = (VkCommandPoolCreateInfo*)pool->alloc(sizeof(const VkCommandPoolCreateInfo));
5453 deepcopy_VkCommandPoolCreateInfo(pool, pCreateInfo, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
5454 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005455 VkAllocationCallbacks* local_pAllocator;
5456 local_pAllocator = nullptr;
5457 if (pAllocator)
5458 {
5459 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5460 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5461 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005462 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005463 countingStream->rewind();
5464 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005465 uint64_t cgen_var_454;
5466 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_454, 1);
5467 countingStream->write((uint64_t*)&cgen_var_454, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005468 marshal_VkCommandPoolCreateInfo(countingStream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005469 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005470 uint64_t cgen_var_455 = (uint64_t)(uintptr_t)local_pAllocator;
5471 countingStream->putBe64(cgen_var_455);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005472 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005473 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005474 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005475 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005476 uint64_t cgen_var_456;
5477 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_456, 1);
5478 countingStream->write((uint64_t*)&cgen_var_456, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005479 }
5480 uint32_t packetSize_vkCreateCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5481 countingStream->rewind();
5482 uint32_t opcode_vkCreateCommandPool = OP_vkCreateCommandPool;
5483 stream->write(&opcode_vkCreateCommandPool, sizeof(uint32_t));
5484 stream->write(&packetSize_vkCreateCommandPool, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005485 uint64_t cgen_var_457;
5486 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_457, 1);
5487 stream->write((uint64_t*)&cgen_var_457, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005488 marshal_VkCommandPoolCreateInfo(stream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005489 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005490 uint64_t cgen_var_458 = (uint64_t)(uintptr_t)local_pAllocator;
5491 stream->putBe64(cgen_var_458);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005492 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005493 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005494 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005495 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005496 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005497 uint64_t cgen_var_459;
5498 stream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_459, 1);
5499 stream->write((uint64_t*)&cgen_var_459, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005500 stream->setHandleMapping(resources->unwrapMapping());
5501 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005502 uint64_t cgen_var_460;
5503 stream->read((uint64_t*)&cgen_var_460, 8);
5504 stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_460, (VkCommandPool*)pCommandPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005505 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005506 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
5507 stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005508 countingStream->clearPool();
5509 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005510 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005511 return vkCreateCommandPool_VkResult_return;
5512}
5513
5514void VkEncoder::vkDestroyCommandPool(
5515 VkDevice device,
5516 VkCommandPool commandPool,
5517 const VkAllocationCallbacks* pAllocator)
5518{
5519 auto stream = mImpl->stream();
5520 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005521 auto resources = mImpl->resources();
5522 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005523 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005524 VkDevice local_device;
5525 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005526 VkCommandPool local_commandPool;
5527 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005528 VkAllocationCallbacks* local_pAllocator;
5529 local_pAllocator = nullptr;
5530 if (pAllocator)
5531 {
5532 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5533 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5534 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005535 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005536 countingStream->rewind();
5537 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005538 uint64_t cgen_var_461;
5539 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_461, 1);
5540 countingStream->write((uint64_t*)&cgen_var_461, 1 * 8);
5541 uint64_t cgen_var_462;
5542 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_462, 1);
5543 countingStream->write((uint64_t*)&cgen_var_462, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005544 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005545 uint64_t cgen_var_463 = (uint64_t)(uintptr_t)local_pAllocator;
5546 countingStream->putBe64(cgen_var_463);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005547 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005548 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005549 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005550 }
5551 }
5552 uint32_t packetSize_vkDestroyCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5553 countingStream->rewind();
5554 uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool;
5555 stream->write(&opcode_vkDestroyCommandPool, sizeof(uint32_t));
5556 stream->write(&packetSize_vkDestroyCommandPool, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005557 uint64_t cgen_var_464;
5558 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_464, 1);
5559 stream->write((uint64_t*)&cgen_var_464, 1 * 8);
5560 uint64_t cgen_var_465;
5561 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_465, 1);
5562 stream->write((uint64_t*)&cgen_var_465, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005563 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005564 uint64_t cgen_var_466 = (uint64_t)(uintptr_t)local_pAllocator;
5565 stream->putBe64(cgen_var_466);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005566 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005567 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005568 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005569 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005570 resources->destroyMapping()->mapHandles_VkCommandPool((VkCommandPool*)&commandPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005571}
5572
5573VkResult VkEncoder::vkResetCommandPool(
5574 VkDevice device,
5575 VkCommandPool commandPool,
5576 VkCommandPoolResetFlags flags)
5577{
5578 auto stream = mImpl->stream();
5579 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005580 auto resources = mImpl->resources();
5581 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005582 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005583 VkDevice local_device;
5584 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005585 VkCommandPool local_commandPool;
5586 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005587 VkCommandPoolResetFlags local_flags;
5588 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005589 countingStream->rewind();
5590 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005591 uint64_t cgen_var_467;
5592 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_467, 1);
5593 countingStream->write((uint64_t*)&cgen_var_467, 1 * 8);
5594 uint64_t cgen_var_468;
5595 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_468, 1);
5596 countingStream->write((uint64_t*)&cgen_var_468, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005597 countingStream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005598 }
5599 uint32_t packetSize_vkResetCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5600 countingStream->rewind();
5601 uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool;
5602 stream->write(&opcode_vkResetCommandPool, sizeof(uint32_t));
5603 stream->write(&packetSize_vkResetCommandPool, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005604 uint64_t cgen_var_469;
5605 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_469, 1);
5606 stream->write((uint64_t*)&cgen_var_469, 1 * 8);
5607 uint64_t cgen_var_470;
5608 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_470, 1);
5609 stream->write((uint64_t*)&cgen_var_470, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005610 stream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005611 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
5612 stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005613 countingStream->clearPool();
5614 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005615 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005616 return vkResetCommandPool_VkResult_return;
5617}
5618
5619VkResult VkEncoder::vkAllocateCommandBuffers(
5620 VkDevice device,
5621 const VkCommandBufferAllocateInfo* pAllocateInfo,
5622 VkCommandBuffer* pCommandBuffers)
5623{
5624 auto stream = mImpl->stream();
5625 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005626 auto resources = mImpl->resources();
5627 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005628 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005629 VkDevice local_device;
5630 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005631 VkCommandBufferAllocateInfo* local_pAllocateInfo;
5632 local_pAllocateInfo = nullptr;
5633 if (pAllocateInfo)
5634 {
5635 local_pAllocateInfo = (VkCommandBufferAllocateInfo*)pool->alloc(sizeof(const VkCommandBufferAllocateInfo));
5636 deepcopy_VkCommandBufferAllocateInfo(pool, pAllocateInfo, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
5637 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005638 countingStream->rewind();
5639 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005640 uint64_t cgen_var_471;
5641 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_471, 1);
5642 countingStream->write((uint64_t*)&cgen_var_471, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005643 marshal_VkCommandBufferAllocateInfo(countingStream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005644 if (pAllocateInfo->commandBufferCount)
5645 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005646 uint64_t* cgen_var_472;
5647 countingStream->alloc((void**)&cgen_var_472, pAllocateInfo->commandBufferCount * 8);
5648 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_472, pAllocateInfo->commandBufferCount);
5649 countingStream->write((uint64_t*)cgen_var_472, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005650 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005651 }
5652 uint32_t packetSize_vkAllocateCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5653 countingStream->rewind();
5654 uint32_t opcode_vkAllocateCommandBuffers = OP_vkAllocateCommandBuffers;
5655 stream->write(&opcode_vkAllocateCommandBuffers, sizeof(uint32_t));
5656 stream->write(&packetSize_vkAllocateCommandBuffers, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005657 uint64_t cgen_var_473;
5658 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_473, 1);
5659 stream->write((uint64_t*)&cgen_var_473, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005660 marshal_VkCommandBufferAllocateInfo(stream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08005661 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08005662 if (pAllocateInfo->commandBufferCount)
5663 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005664 uint64_t* cgen_var_474;
5665 stream->alloc((void**)&cgen_var_474, pAllocateInfo->commandBufferCount * 8);
5666 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_474, pAllocateInfo->commandBufferCount);
5667 stream->write((uint64_t*)cgen_var_474, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005668 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005669 stream->setHandleMapping(resources->unwrapMapping());
5670 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08005671 if (pAllocateInfo->commandBufferCount)
5672 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005673 uint64_t* cgen_var_475;
5674 stream->alloc((void**)&cgen_var_475, pAllocateInfo->commandBufferCount * 8);
5675 stream->read((uint64_t*)cgen_var_475, pAllocateInfo->commandBufferCount * 8);
5676 stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_475, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005677 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005678 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005679 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
5680 stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005681 countingStream->clearPool();
5682 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005683 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005684 return vkAllocateCommandBuffers_VkResult_return;
5685}
5686
5687void VkEncoder::vkFreeCommandBuffers(
5688 VkDevice device,
5689 VkCommandPool commandPool,
5690 uint32_t commandBufferCount,
5691 const VkCommandBuffer* pCommandBuffers)
5692{
5693 auto stream = mImpl->stream();
5694 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005695 auto resources = mImpl->resources();
5696 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005697 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005698 VkDevice local_device;
5699 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005700 VkCommandPool local_commandPool;
5701 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005702 uint32_t local_commandBufferCount;
5703 local_commandBufferCount = commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005704 VkCommandBuffer* local_pCommandBuffers;
5705 local_pCommandBuffers = nullptr;
5706 if (pCommandBuffers)
5707 {
5708 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
5709 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005710 countingStream->rewind();
5711 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005712 uint64_t cgen_var_476;
5713 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_476, 1);
5714 countingStream->write((uint64_t*)&cgen_var_476, 1 * 8);
5715 uint64_t cgen_var_477;
5716 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_477, 1);
5717 countingStream->write((uint64_t*)&cgen_var_477, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005718 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005719 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005720 uint64_t cgen_var_478 = (uint64_t)(uintptr_t)local_pCommandBuffers;
5721 countingStream->putBe64(cgen_var_478);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005722 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005723 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005724 if (((commandBufferCount)))
5725 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005726 uint64_t* cgen_var_479;
5727 countingStream->alloc((void**)&cgen_var_479, ((commandBufferCount)) * 8);
5728 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_479, ((commandBufferCount)));
5729 countingStream->write((uint64_t*)cgen_var_479, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005730 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005731 }
5732 }
5733 uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5734 countingStream->rewind();
5735 uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers;
5736 stream->write(&opcode_vkFreeCommandBuffers, sizeof(uint32_t));
5737 stream->write(&packetSize_vkFreeCommandBuffers, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005738 uint64_t cgen_var_480;
5739 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_480, 1);
5740 stream->write((uint64_t*)&cgen_var_480, 1 * 8);
5741 uint64_t cgen_var_481;
5742 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_481, 1);
5743 stream->write((uint64_t*)&cgen_var_481, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005744 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005745 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005746 uint64_t cgen_var_482 = (uint64_t)(uintptr_t)local_pCommandBuffers;
5747 stream->putBe64(cgen_var_482);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005748 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005749 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005750 if (((commandBufferCount)))
5751 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005752 uint64_t* cgen_var_483;
5753 stream->alloc((void**)&cgen_var_483, ((commandBufferCount)) * 8);
5754 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_483, ((commandBufferCount)));
5755 stream->write((uint64_t*)cgen_var_483, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005756 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005757 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005758 if (pCommandBuffers)
5759 {
5760 resources->destroyMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)));
5761 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005762}
5763
5764VkResult VkEncoder::vkBeginCommandBuffer(
5765 VkCommandBuffer commandBuffer,
5766 const VkCommandBufferBeginInfo* pBeginInfo)
5767{
5768 auto stream = mImpl->stream();
5769 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005770 auto resources = mImpl->resources();
5771 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005772 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005773 VkCommandBuffer local_commandBuffer;
5774 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005775 VkCommandBufferBeginInfo* local_pBeginInfo;
5776 local_pBeginInfo = nullptr;
5777 if (pBeginInfo)
5778 {
5779 local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo));
5780 deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
5781 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005782 countingStream->rewind();
5783 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005784 uint64_t cgen_var_484;
5785 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_484, 1);
5786 countingStream->write((uint64_t*)&cgen_var_484, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005787 marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005788 }
5789 uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5790 countingStream->rewind();
5791 uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer;
5792 stream->write(&opcode_vkBeginCommandBuffer, sizeof(uint32_t));
5793 stream->write(&packetSize_vkBeginCommandBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005794 uint64_t cgen_var_485;
5795 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_485, 1);
5796 stream->write((uint64_t*)&cgen_var_485, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005797 marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005798 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
5799 stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005800 countingStream->clearPool();
5801 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005802 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005803 return vkBeginCommandBuffer_VkResult_return;
5804}
5805
5806VkResult VkEncoder::vkEndCommandBuffer(
5807 VkCommandBuffer commandBuffer)
5808{
5809 auto stream = mImpl->stream();
5810 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005811 auto resources = mImpl->resources();
5812 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005813 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005814 VkCommandBuffer local_commandBuffer;
5815 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005816 countingStream->rewind();
5817 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005818 uint64_t cgen_var_486;
5819 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_486, 1);
5820 countingStream->write((uint64_t*)&cgen_var_486, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005821 }
5822 uint32_t packetSize_vkEndCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5823 countingStream->rewind();
5824 uint32_t opcode_vkEndCommandBuffer = OP_vkEndCommandBuffer;
5825 stream->write(&opcode_vkEndCommandBuffer, sizeof(uint32_t));
5826 stream->write(&packetSize_vkEndCommandBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005827 uint64_t cgen_var_487;
5828 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_487, 1);
5829 stream->write((uint64_t*)&cgen_var_487, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005830 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
5831 stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005832 countingStream->clearPool();
5833 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005834 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005835 return vkEndCommandBuffer_VkResult_return;
5836}
5837
5838VkResult VkEncoder::vkResetCommandBuffer(
5839 VkCommandBuffer commandBuffer,
5840 VkCommandBufferResetFlags flags)
5841{
5842 auto stream = mImpl->stream();
5843 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005844 auto resources = mImpl->resources();
5845 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005846 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005847 VkCommandBuffer local_commandBuffer;
5848 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005849 VkCommandBufferResetFlags local_flags;
5850 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005851 countingStream->rewind();
5852 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005853 uint64_t cgen_var_488;
5854 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_488, 1);
5855 countingStream->write((uint64_t*)&cgen_var_488, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005856 countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005857 }
5858 uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5859 countingStream->rewind();
5860 uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer;
5861 stream->write(&opcode_vkResetCommandBuffer, sizeof(uint32_t));
5862 stream->write(&packetSize_vkResetCommandBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005863 uint64_t cgen_var_489;
5864 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_489, 1);
5865 stream->write((uint64_t*)&cgen_var_489, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005866 stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005867 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
5868 stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005869 countingStream->clearPool();
5870 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005871 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005872 return vkResetCommandBuffer_VkResult_return;
5873}
5874
5875void VkEncoder::vkCmdBindPipeline(
5876 VkCommandBuffer commandBuffer,
5877 VkPipelineBindPoint pipelineBindPoint,
5878 VkPipeline pipeline)
5879{
5880 auto stream = mImpl->stream();
5881 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005882 auto resources = mImpl->resources();
5883 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005884 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005885 VkCommandBuffer local_commandBuffer;
5886 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005887 VkPipelineBindPoint local_pipelineBindPoint;
5888 local_pipelineBindPoint = pipelineBindPoint;
5889 VkPipeline local_pipeline;
5890 local_pipeline = pipeline;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005891 countingStream->rewind();
5892 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005893 uint64_t cgen_var_490;
5894 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_490, 1);
5895 countingStream->write((uint64_t*)&cgen_var_490, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005896 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005897 uint64_t cgen_var_491;
5898 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_491, 1);
5899 countingStream->write((uint64_t*)&cgen_var_491, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005900 }
5901 uint32_t packetSize_vkCmdBindPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5902 countingStream->rewind();
5903 uint32_t opcode_vkCmdBindPipeline = OP_vkCmdBindPipeline;
5904 stream->write(&opcode_vkCmdBindPipeline, sizeof(uint32_t));
5905 stream->write(&packetSize_vkCmdBindPipeline, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005906 uint64_t cgen_var_492;
5907 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_492, 1);
5908 stream->write((uint64_t*)&cgen_var_492, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005909 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005910 uint64_t cgen_var_493;
5911 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_493, 1);
5912 stream->write((uint64_t*)&cgen_var_493, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005913}
5914
5915void VkEncoder::vkCmdSetViewport(
5916 VkCommandBuffer commandBuffer,
5917 uint32_t firstViewport,
5918 uint32_t viewportCount,
5919 const VkViewport* pViewports)
5920{
5921 auto stream = mImpl->stream();
5922 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005923 auto resources = mImpl->resources();
5924 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005925 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005926 VkCommandBuffer local_commandBuffer;
5927 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005928 uint32_t local_firstViewport;
5929 local_firstViewport = firstViewport;
5930 uint32_t local_viewportCount;
5931 local_viewportCount = viewportCount;
5932 VkViewport* local_pViewports;
5933 local_pViewports = nullptr;
5934 if (pViewports)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005935 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005936 local_pViewports = (VkViewport*)pool->alloc(((viewportCount)) * sizeof(const VkViewport));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005937 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5938 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005939 deepcopy_VkViewport(pool, pViewports + i, (VkViewport*)(local_pViewports + i));
5940 }
5941 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005942 countingStream->rewind();
5943 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005944 uint64_t cgen_var_494;
5945 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_494, 1);
5946 countingStream->write((uint64_t*)&cgen_var_494, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005947 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
5948 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
5949 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5950 {
5951 marshal_VkViewport(countingStream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005952 }
5953 }
5954 uint32_t packetSize_vkCmdSetViewport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5955 countingStream->rewind();
5956 uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport;
5957 stream->write(&opcode_vkCmdSetViewport, sizeof(uint32_t));
5958 stream->write(&packetSize_vkCmdSetViewport, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005959 uint64_t cgen_var_495;
5960 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_495, 1);
5961 stream->write((uint64_t*)&cgen_var_495, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005962 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
5963 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005964 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5965 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005966 marshal_VkViewport(stream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005967 }
5968}
5969
5970void VkEncoder::vkCmdSetScissor(
5971 VkCommandBuffer commandBuffer,
5972 uint32_t firstScissor,
5973 uint32_t scissorCount,
5974 const VkRect2D* pScissors)
5975{
5976 auto stream = mImpl->stream();
5977 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005978 auto resources = mImpl->resources();
5979 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005980 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005981 VkCommandBuffer local_commandBuffer;
5982 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005983 uint32_t local_firstScissor;
5984 local_firstScissor = firstScissor;
5985 uint32_t local_scissorCount;
5986 local_scissorCount = scissorCount;
5987 VkRect2D* local_pScissors;
5988 local_pScissors = nullptr;
5989 if (pScissors)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005990 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005991 local_pScissors = (VkRect2D*)pool->alloc(((scissorCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005992 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
5993 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005994 deepcopy_VkRect2D(pool, pScissors + i, (VkRect2D*)(local_pScissors + i));
5995 }
5996 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005997 countingStream->rewind();
5998 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08005999 uint64_t cgen_var_496;
6000 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_496, 1);
6001 countingStream->write((uint64_t*)&cgen_var_496, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006002 countingStream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6003 countingStream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
6004 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6005 {
6006 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006007 }
6008 }
6009 uint32_t packetSize_vkCmdSetScissor = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6010 countingStream->rewind();
6011 uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor;
6012 stream->write(&opcode_vkCmdSetScissor, sizeof(uint32_t));
6013 stream->write(&packetSize_vkCmdSetScissor, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006014 uint64_t cgen_var_497;
6015 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_497, 1);
6016 stream->write((uint64_t*)&cgen_var_497, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006017 stream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6018 stream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006019 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6020 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006021 marshal_VkRect2D(stream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006022 }
6023}
6024
6025void VkEncoder::vkCmdSetLineWidth(
6026 VkCommandBuffer commandBuffer,
6027 float lineWidth)
6028{
6029 auto stream = mImpl->stream();
6030 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006031 auto resources = mImpl->resources();
6032 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006033 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006034 VkCommandBuffer local_commandBuffer;
6035 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006036 float local_lineWidth;
6037 local_lineWidth = lineWidth;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006038 countingStream->rewind();
6039 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006040 uint64_t cgen_var_498;
6041 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_498, 1);
6042 countingStream->write((uint64_t*)&cgen_var_498, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006043 countingStream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006044 }
6045 uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6046 countingStream->rewind();
6047 uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth;
6048 stream->write(&opcode_vkCmdSetLineWidth, sizeof(uint32_t));
6049 stream->write(&packetSize_vkCmdSetLineWidth, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006050 uint64_t cgen_var_499;
6051 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_499, 1);
6052 stream->write((uint64_t*)&cgen_var_499, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006053 stream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006054}
6055
6056void VkEncoder::vkCmdSetDepthBias(
6057 VkCommandBuffer commandBuffer,
6058 float depthBiasConstantFactor,
6059 float depthBiasClamp,
6060 float depthBiasSlopeFactor)
6061{
6062 auto stream = mImpl->stream();
6063 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006064 auto resources = mImpl->resources();
6065 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006066 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006067 VkCommandBuffer local_commandBuffer;
6068 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006069 float local_depthBiasConstantFactor;
6070 local_depthBiasConstantFactor = depthBiasConstantFactor;
6071 float local_depthBiasClamp;
6072 local_depthBiasClamp = depthBiasClamp;
6073 float local_depthBiasSlopeFactor;
6074 local_depthBiasSlopeFactor = depthBiasSlopeFactor;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006075 countingStream->rewind();
6076 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006077 uint64_t cgen_var_500;
6078 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_500, 1);
6079 countingStream->write((uint64_t*)&cgen_var_500, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006080 countingStream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6081 countingStream->write((float*)&local_depthBiasClamp, sizeof(float));
6082 countingStream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006083 }
6084 uint32_t packetSize_vkCmdSetDepthBias = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6085 countingStream->rewind();
6086 uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias;
6087 stream->write(&opcode_vkCmdSetDepthBias, sizeof(uint32_t));
6088 stream->write(&packetSize_vkCmdSetDepthBias, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006089 uint64_t cgen_var_501;
6090 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_501, 1);
6091 stream->write((uint64_t*)&cgen_var_501, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006092 stream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6093 stream->write((float*)&local_depthBiasClamp, sizeof(float));
6094 stream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006095}
6096
6097void VkEncoder::vkCmdSetBlendConstants(
6098 VkCommandBuffer commandBuffer,
6099 const float blendConstants)
6100{
6101 auto stream = mImpl->stream();
6102 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006103 auto resources = mImpl->resources();
6104 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006105 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006106 VkCommandBuffer local_commandBuffer;
6107 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006108 float local_blendConstants[4];
6109 memcpy(&local_blendConstants, &blendConstants, 4 * sizeof(const float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006110 countingStream->rewind();
6111 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006112 uint64_t cgen_var_502;
6113 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_502, 1);
6114 countingStream->write((uint64_t*)&cgen_var_502, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006115 countingStream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006116 }
6117 uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6118 countingStream->rewind();
6119 uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants;
6120 stream->write(&opcode_vkCmdSetBlendConstants, sizeof(uint32_t));
6121 stream->write(&packetSize_vkCmdSetBlendConstants, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006122 uint64_t cgen_var_503;
6123 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_503, 1);
6124 stream->write((uint64_t*)&cgen_var_503, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006125 stream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006126}
6127
6128void VkEncoder::vkCmdSetDepthBounds(
6129 VkCommandBuffer commandBuffer,
6130 float minDepthBounds,
6131 float maxDepthBounds)
6132{
6133 auto stream = mImpl->stream();
6134 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006135 auto resources = mImpl->resources();
6136 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006137 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006138 VkCommandBuffer local_commandBuffer;
6139 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006140 float local_minDepthBounds;
6141 local_minDepthBounds = minDepthBounds;
6142 float local_maxDepthBounds;
6143 local_maxDepthBounds = maxDepthBounds;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006144 countingStream->rewind();
6145 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006146 uint64_t cgen_var_504;
6147 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_504, 1);
6148 countingStream->write((uint64_t*)&cgen_var_504, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006149 countingStream->write((float*)&local_minDepthBounds, sizeof(float));
6150 countingStream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006151 }
6152 uint32_t packetSize_vkCmdSetDepthBounds = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6153 countingStream->rewind();
6154 uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds;
6155 stream->write(&opcode_vkCmdSetDepthBounds, sizeof(uint32_t));
6156 stream->write(&packetSize_vkCmdSetDepthBounds, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006157 uint64_t cgen_var_505;
6158 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_505, 1);
6159 stream->write((uint64_t*)&cgen_var_505, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006160 stream->write((float*)&local_minDepthBounds, sizeof(float));
6161 stream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006162}
6163
6164void VkEncoder::vkCmdSetStencilCompareMask(
6165 VkCommandBuffer commandBuffer,
6166 VkStencilFaceFlags faceMask,
6167 uint32_t compareMask)
6168{
6169 auto stream = mImpl->stream();
6170 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006171 auto resources = mImpl->resources();
6172 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006173 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006174 VkCommandBuffer local_commandBuffer;
6175 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006176 VkStencilFaceFlags local_faceMask;
6177 local_faceMask = faceMask;
6178 uint32_t local_compareMask;
6179 local_compareMask = compareMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006180 countingStream->rewind();
6181 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006182 uint64_t cgen_var_506;
6183 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_506, 1);
6184 countingStream->write((uint64_t*)&cgen_var_506, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006185 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6186 countingStream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006187 }
6188 uint32_t packetSize_vkCmdSetStencilCompareMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6189 countingStream->rewind();
6190 uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask;
6191 stream->write(&opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t));
6192 stream->write(&packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006193 uint64_t cgen_var_507;
6194 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_507, 1);
6195 stream->write((uint64_t*)&cgen_var_507, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006196 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6197 stream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006198}
6199
6200void VkEncoder::vkCmdSetStencilWriteMask(
6201 VkCommandBuffer commandBuffer,
6202 VkStencilFaceFlags faceMask,
6203 uint32_t writeMask)
6204{
6205 auto stream = mImpl->stream();
6206 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006207 auto resources = mImpl->resources();
6208 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006209 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006210 VkCommandBuffer local_commandBuffer;
6211 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006212 VkStencilFaceFlags local_faceMask;
6213 local_faceMask = faceMask;
6214 uint32_t local_writeMask;
6215 local_writeMask = writeMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006216 countingStream->rewind();
6217 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006218 uint64_t cgen_var_508;
6219 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_508, 1);
6220 countingStream->write((uint64_t*)&cgen_var_508, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006221 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6222 countingStream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006223 }
6224 uint32_t packetSize_vkCmdSetStencilWriteMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6225 countingStream->rewind();
6226 uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask;
6227 stream->write(&opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t));
6228 stream->write(&packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006229 uint64_t cgen_var_509;
6230 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_509, 1);
6231 stream->write((uint64_t*)&cgen_var_509, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006232 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6233 stream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006234}
6235
6236void VkEncoder::vkCmdSetStencilReference(
6237 VkCommandBuffer commandBuffer,
6238 VkStencilFaceFlags faceMask,
6239 uint32_t reference)
6240{
6241 auto stream = mImpl->stream();
6242 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006243 auto resources = mImpl->resources();
6244 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006245 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006246 VkCommandBuffer local_commandBuffer;
6247 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006248 VkStencilFaceFlags local_faceMask;
6249 local_faceMask = faceMask;
6250 uint32_t local_reference;
6251 local_reference = reference;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006252 countingStream->rewind();
6253 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006254 uint64_t cgen_var_510;
6255 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_510, 1);
6256 countingStream->write((uint64_t*)&cgen_var_510, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006257 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6258 countingStream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006259 }
6260 uint32_t packetSize_vkCmdSetStencilReference = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6261 countingStream->rewind();
6262 uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference;
6263 stream->write(&opcode_vkCmdSetStencilReference, sizeof(uint32_t));
6264 stream->write(&packetSize_vkCmdSetStencilReference, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006265 uint64_t cgen_var_511;
6266 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_511, 1);
6267 stream->write((uint64_t*)&cgen_var_511, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006268 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6269 stream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006270}
6271
6272void VkEncoder::vkCmdBindDescriptorSets(
6273 VkCommandBuffer commandBuffer,
6274 VkPipelineBindPoint pipelineBindPoint,
6275 VkPipelineLayout layout,
6276 uint32_t firstSet,
6277 uint32_t descriptorSetCount,
6278 const VkDescriptorSet* pDescriptorSets,
6279 uint32_t dynamicOffsetCount,
6280 const uint32_t* pDynamicOffsets)
6281{
6282 auto stream = mImpl->stream();
6283 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006284 auto resources = mImpl->resources();
6285 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006286 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006287 VkCommandBuffer local_commandBuffer;
6288 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006289 VkPipelineBindPoint local_pipelineBindPoint;
6290 local_pipelineBindPoint = pipelineBindPoint;
6291 VkPipelineLayout local_layout;
6292 local_layout = layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006293 uint32_t local_firstSet;
6294 local_firstSet = firstSet;
6295 uint32_t local_descriptorSetCount;
6296 local_descriptorSetCount = descriptorSetCount;
6297 VkDescriptorSet* local_pDescriptorSets;
6298 local_pDescriptorSets = nullptr;
6299 if (pDescriptorSets)
6300 {
6301 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
6302 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006303 uint32_t local_dynamicOffsetCount;
6304 local_dynamicOffsetCount = dynamicOffsetCount;
6305 uint32_t* local_pDynamicOffsets;
6306 local_pDynamicOffsets = nullptr;
6307 if (pDynamicOffsets)
6308 {
6309 local_pDynamicOffsets = (uint32_t*)pool->dupArray(pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
6310 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006311 countingStream->rewind();
6312 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006313 uint64_t cgen_var_512;
6314 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_512, 1);
6315 countingStream->write((uint64_t*)&cgen_var_512, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006316 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006317 uint64_t cgen_var_513;
6318 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_513, 1);
6319 countingStream->write((uint64_t*)&cgen_var_513, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006320 countingStream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
6321 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006322 if (((descriptorSetCount)))
6323 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006324 uint64_t* cgen_var_514;
6325 countingStream->alloc((void**)&cgen_var_514, ((descriptorSetCount)) * 8);
6326 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_514, ((descriptorSetCount)));
6327 countingStream->write((uint64_t*)cgen_var_514, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006328 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006329 countingStream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
6330 countingStream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006331 }
6332 uint32_t packetSize_vkCmdBindDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6333 countingStream->rewind();
6334 uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets;
6335 stream->write(&opcode_vkCmdBindDescriptorSets, sizeof(uint32_t));
6336 stream->write(&packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006337 uint64_t cgen_var_515;
6338 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_515, 1);
6339 stream->write((uint64_t*)&cgen_var_515, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006340 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006341 uint64_t cgen_var_516;
6342 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_516, 1);
6343 stream->write((uint64_t*)&cgen_var_516, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006344 stream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
6345 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006346 if (((descriptorSetCount)))
6347 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006348 uint64_t* cgen_var_517;
6349 stream->alloc((void**)&cgen_var_517, ((descriptorSetCount)) * 8);
6350 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_517, ((descriptorSetCount)));
6351 stream->write((uint64_t*)cgen_var_517, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006352 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006353 stream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
6354 stream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006355}
6356
6357void VkEncoder::vkCmdBindIndexBuffer(
6358 VkCommandBuffer commandBuffer,
6359 VkBuffer buffer,
6360 VkDeviceSize offset,
6361 VkIndexType indexType)
6362{
6363 auto stream = mImpl->stream();
6364 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006365 auto resources = mImpl->resources();
6366 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006367 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006368 VkCommandBuffer local_commandBuffer;
6369 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006370 VkBuffer local_buffer;
6371 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006372 VkDeviceSize local_offset;
6373 local_offset = offset;
6374 VkIndexType local_indexType;
6375 local_indexType = indexType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006376 countingStream->rewind();
6377 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006378 uint64_t cgen_var_518;
6379 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_518, 1);
6380 countingStream->write((uint64_t*)&cgen_var_518, 1 * 8);
6381 uint64_t cgen_var_519;
6382 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_519, 1);
6383 countingStream->write((uint64_t*)&cgen_var_519, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006384 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6385 countingStream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006386 }
6387 uint32_t packetSize_vkCmdBindIndexBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6388 countingStream->rewind();
6389 uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer;
6390 stream->write(&opcode_vkCmdBindIndexBuffer, sizeof(uint32_t));
6391 stream->write(&packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006392 uint64_t cgen_var_520;
6393 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_520, 1);
6394 stream->write((uint64_t*)&cgen_var_520, 1 * 8);
6395 uint64_t cgen_var_521;
6396 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_521, 1);
6397 stream->write((uint64_t*)&cgen_var_521, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006398 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6399 stream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006400}
6401
6402void VkEncoder::vkCmdBindVertexBuffers(
6403 VkCommandBuffer commandBuffer,
6404 uint32_t firstBinding,
6405 uint32_t bindingCount,
6406 const VkBuffer* pBuffers,
6407 const VkDeviceSize* pOffsets)
6408{
6409 auto stream = mImpl->stream();
6410 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006411 auto resources = mImpl->resources();
6412 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006413 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006414 VkCommandBuffer local_commandBuffer;
6415 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006416 uint32_t local_firstBinding;
6417 local_firstBinding = firstBinding;
6418 uint32_t local_bindingCount;
6419 local_bindingCount = bindingCount;
6420 VkBuffer* local_pBuffers;
6421 local_pBuffers = nullptr;
6422 if (pBuffers)
6423 {
6424 local_pBuffers = (VkBuffer*)pool->dupArray(pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
6425 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006426 VkDeviceSize* local_pOffsets;
6427 local_pOffsets = nullptr;
6428 if (pOffsets)
6429 {
6430 local_pOffsets = (VkDeviceSize*)pool->dupArray(pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
6431 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006432 countingStream->rewind();
6433 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006434 uint64_t cgen_var_522;
6435 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_522, 1);
6436 countingStream->write((uint64_t*)&cgen_var_522, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006437 countingStream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
6438 countingStream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006439 if (((bindingCount)))
6440 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006441 uint64_t* cgen_var_523;
6442 countingStream->alloc((void**)&cgen_var_523, ((bindingCount)) * 8);
6443 countingStream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_523, ((bindingCount)));
6444 countingStream->write((uint64_t*)cgen_var_523, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006445 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006446 countingStream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006447 }
6448 uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6449 countingStream->rewind();
6450 uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers;
6451 stream->write(&opcode_vkCmdBindVertexBuffers, sizeof(uint32_t));
6452 stream->write(&packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006453 uint64_t cgen_var_524;
6454 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_524, 1);
6455 stream->write((uint64_t*)&cgen_var_524, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006456 stream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
6457 stream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006458 if (((bindingCount)))
6459 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006460 uint64_t* cgen_var_525;
6461 stream->alloc((void**)&cgen_var_525, ((bindingCount)) * 8);
6462 stream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_525, ((bindingCount)));
6463 stream->write((uint64_t*)cgen_var_525, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006464 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006465 stream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006466}
6467
6468void VkEncoder::vkCmdDraw(
6469 VkCommandBuffer commandBuffer,
6470 uint32_t vertexCount,
6471 uint32_t instanceCount,
6472 uint32_t firstVertex,
6473 uint32_t firstInstance)
6474{
6475 auto stream = mImpl->stream();
6476 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006477 auto resources = mImpl->resources();
6478 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006479 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006480 VkCommandBuffer local_commandBuffer;
6481 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006482 uint32_t local_vertexCount;
6483 local_vertexCount = vertexCount;
6484 uint32_t local_instanceCount;
6485 local_instanceCount = instanceCount;
6486 uint32_t local_firstVertex;
6487 local_firstVertex = firstVertex;
6488 uint32_t local_firstInstance;
6489 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006490 countingStream->rewind();
6491 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006492 uint64_t cgen_var_526;
6493 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_526, 1);
6494 countingStream->write((uint64_t*)&cgen_var_526, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006495 countingStream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
6496 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6497 countingStream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
6498 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006499 }
6500 uint32_t packetSize_vkCmdDraw = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6501 countingStream->rewind();
6502 uint32_t opcode_vkCmdDraw = OP_vkCmdDraw;
6503 stream->write(&opcode_vkCmdDraw, sizeof(uint32_t));
6504 stream->write(&packetSize_vkCmdDraw, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006505 uint64_t cgen_var_527;
6506 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_527, 1);
6507 stream->write((uint64_t*)&cgen_var_527, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006508 stream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
6509 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6510 stream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
6511 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006512}
6513
6514void VkEncoder::vkCmdDrawIndexed(
6515 VkCommandBuffer commandBuffer,
6516 uint32_t indexCount,
6517 uint32_t instanceCount,
6518 uint32_t firstIndex,
6519 int32_t vertexOffset,
6520 uint32_t firstInstance)
6521{
6522 auto stream = mImpl->stream();
6523 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006524 auto resources = mImpl->resources();
6525 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006526 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006527 VkCommandBuffer local_commandBuffer;
6528 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006529 uint32_t local_indexCount;
6530 local_indexCount = indexCount;
6531 uint32_t local_instanceCount;
6532 local_instanceCount = instanceCount;
6533 uint32_t local_firstIndex;
6534 local_firstIndex = firstIndex;
6535 int32_t local_vertexOffset;
6536 local_vertexOffset = vertexOffset;
6537 uint32_t local_firstInstance;
6538 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006539 countingStream->rewind();
6540 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006541 uint64_t cgen_var_528;
6542 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_528, 1);
6543 countingStream->write((uint64_t*)&cgen_var_528, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006544 countingStream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
6545 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6546 countingStream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
6547 countingStream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
6548 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006549 }
6550 uint32_t packetSize_vkCmdDrawIndexed = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6551 countingStream->rewind();
6552 uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed;
6553 stream->write(&opcode_vkCmdDrawIndexed, sizeof(uint32_t));
6554 stream->write(&packetSize_vkCmdDrawIndexed, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006555 uint64_t cgen_var_529;
6556 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_529, 1);
6557 stream->write((uint64_t*)&cgen_var_529, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006558 stream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
6559 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6560 stream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
6561 stream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
6562 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006563}
6564
6565void VkEncoder::vkCmdDrawIndirect(
6566 VkCommandBuffer commandBuffer,
6567 VkBuffer buffer,
6568 VkDeviceSize offset,
6569 uint32_t drawCount,
6570 uint32_t stride)
6571{
6572 auto stream = mImpl->stream();
6573 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006574 auto resources = mImpl->resources();
6575 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006576 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006577 VkCommandBuffer local_commandBuffer;
6578 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006579 VkBuffer local_buffer;
6580 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006581 VkDeviceSize local_offset;
6582 local_offset = offset;
6583 uint32_t local_drawCount;
6584 local_drawCount = drawCount;
6585 uint32_t local_stride;
6586 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006587 countingStream->rewind();
6588 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006589 uint64_t cgen_var_530;
6590 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_530, 1);
6591 countingStream->write((uint64_t*)&cgen_var_530, 1 * 8);
6592 uint64_t cgen_var_531;
6593 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_531, 1);
6594 countingStream->write((uint64_t*)&cgen_var_531, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006595 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6596 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6597 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006598 }
6599 uint32_t packetSize_vkCmdDrawIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6600 countingStream->rewind();
6601 uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect;
6602 stream->write(&opcode_vkCmdDrawIndirect, sizeof(uint32_t));
6603 stream->write(&packetSize_vkCmdDrawIndirect, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006604 uint64_t cgen_var_532;
6605 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_532, 1);
6606 stream->write((uint64_t*)&cgen_var_532, 1 * 8);
6607 uint64_t cgen_var_533;
6608 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_533, 1);
6609 stream->write((uint64_t*)&cgen_var_533, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006610 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6611 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6612 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006613}
6614
6615void VkEncoder::vkCmdDrawIndexedIndirect(
6616 VkCommandBuffer commandBuffer,
6617 VkBuffer buffer,
6618 VkDeviceSize offset,
6619 uint32_t drawCount,
6620 uint32_t stride)
6621{
6622 auto stream = mImpl->stream();
6623 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006624 auto resources = mImpl->resources();
6625 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006626 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006627 VkCommandBuffer local_commandBuffer;
6628 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006629 VkBuffer local_buffer;
6630 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006631 VkDeviceSize local_offset;
6632 local_offset = offset;
6633 uint32_t local_drawCount;
6634 local_drawCount = drawCount;
6635 uint32_t local_stride;
6636 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006637 countingStream->rewind();
6638 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006639 uint64_t cgen_var_534;
6640 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_534, 1);
6641 countingStream->write((uint64_t*)&cgen_var_534, 1 * 8);
6642 uint64_t cgen_var_535;
6643 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_535, 1);
6644 countingStream->write((uint64_t*)&cgen_var_535, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006645 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6646 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6647 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006648 }
6649 uint32_t packetSize_vkCmdDrawIndexedIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6650 countingStream->rewind();
6651 uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect;
6652 stream->write(&opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
6653 stream->write(&packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006654 uint64_t cgen_var_536;
6655 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_536, 1);
6656 stream->write((uint64_t*)&cgen_var_536, 1 * 8);
6657 uint64_t cgen_var_537;
6658 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_537, 1);
6659 stream->write((uint64_t*)&cgen_var_537, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006660 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6661 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6662 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006663}
6664
6665void VkEncoder::vkCmdDispatch(
6666 VkCommandBuffer commandBuffer,
6667 uint32_t groupCountX,
6668 uint32_t groupCountY,
6669 uint32_t groupCountZ)
6670{
6671 auto stream = mImpl->stream();
6672 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006673 auto resources = mImpl->resources();
6674 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006675 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006676 VkCommandBuffer local_commandBuffer;
6677 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006678 uint32_t local_groupCountX;
6679 local_groupCountX = groupCountX;
6680 uint32_t local_groupCountY;
6681 local_groupCountY = groupCountY;
6682 uint32_t local_groupCountZ;
6683 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006684 countingStream->rewind();
6685 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006686 uint64_t cgen_var_538;
6687 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_538, 1);
6688 countingStream->write((uint64_t*)&cgen_var_538, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006689 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
6690 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
6691 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006692 }
6693 uint32_t packetSize_vkCmdDispatch = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6694 countingStream->rewind();
6695 uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch;
6696 stream->write(&opcode_vkCmdDispatch, sizeof(uint32_t));
6697 stream->write(&packetSize_vkCmdDispatch, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006698 uint64_t cgen_var_539;
6699 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_539, 1);
6700 stream->write((uint64_t*)&cgen_var_539, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006701 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
6702 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
6703 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006704}
6705
6706void VkEncoder::vkCmdDispatchIndirect(
6707 VkCommandBuffer commandBuffer,
6708 VkBuffer buffer,
6709 VkDeviceSize offset)
6710{
6711 auto stream = mImpl->stream();
6712 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006713 auto resources = mImpl->resources();
6714 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006715 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006716 VkCommandBuffer local_commandBuffer;
6717 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006718 VkBuffer local_buffer;
6719 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006720 VkDeviceSize local_offset;
6721 local_offset = offset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006722 countingStream->rewind();
6723 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006724 uint64_t cgen_var_540;
6725 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_540, 1);
6726 countingStream->write((uint64_t*)&cgen_var_540, 1 * 8);
6727 uint64_t cgen_var_541;
6728 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_541, 1);
6729 countingStream->write((uint64_t*)&cgen_var_541, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006730 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006731 }
6732 uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6733 countingStream->rewind();
6734 uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect;
6735 stream->write(&opcode_vkCmdDispatchIndirect, sizeof(uint32_t));
6736 stream->write(&packetSize_vkCmdDispatchIndirect, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006737 uint64_t cgen_var_542;
6738 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_542, 1);
6739 stream->write((uint64_t*)&cgen_var_542, 1 * 8);
6740 uint64_t cgen_var_543;
6741 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_543, 1);
6742 stream->write((uint64_t*)&cgen_var_543, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006743 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006744}
6745
6746void VkEncoder::vkCmdCopyBuffer(
6747 VkCommandBuffer commandBuffer,
6748 VkBuffer srcBuffer,
6749 VkBuffer dstBuffer,
6750 uint32_t regionCount,
6751 const VkBufferCopy* pRegions)
6752{
6753 auto stream = mImpl->stream();
6754 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006755 auto resources = mImpl->resources();
6756 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006757 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006758 VkCommandBuffer local_commandBuffer;
6759 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006760 VkBuffer local_srcBuffer;
6761 local_srcBuffer = srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006762 VkBuffer local_dstBuffer;
6763 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006764 uint32_t local_regionCount;
6765 local_regionCount = regionCount;
6766 VkBufferCopy* local_pRegions;
6767 local_pRegions = nullptr;
6768 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006769 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006770 local_pRegions = (VkBufferCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006771 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6772 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006773 deepcopy_VkBufferCopy(pool, pRegions + i, (VkBufferCopy*)(local_pRegions + i));
6774 }
6775 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006776 countingStream->rewind();
6777 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08006778 uint64_t cgen_var_544;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006779 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_544, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006780 countingStream->write((uint64_t*)&cgen_var_544, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006781 uint64_t cgen_var_545;
6782 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_545, 1);
6783 countingStream->write((uint64_t*)&cgen_var_545, 1 * 8);
6784 uint64_t cgen_var_546;
6785 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_546, 1);
6786 countingStream->write((uint64_t*)&cgen_var_546, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006787 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6788 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6789 {
6790 marshal_VkBufferCopy(countingStream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006791 }
6792 }
6793 uint32_t packetSize_vkCmdCopyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6794 countingStream->rewind();
6795 uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer;
6796 stream->write(&opcode_vkCmdCopyBuffer, sizeof(uint32_t));
6797 stream->write(&packetSize_vkCmdCopyBuffer, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006798 uint64_t cgen_var_547;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006799 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_547, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006800 stream->write((uint64_t*)&cgen_var_547, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006801 uint64_t cgen_var_548;
6802 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_548, 1);
6803 stream->write((uint64_t*)&cgen_var_548, 1 * 8);
6804 uint64_t cgen_var_549;
6805 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_549, 1);
6806 stream->write((uint64_t*)&cgen_var_549, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006807 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006808 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6809 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006810 marshal_VkBufferCopy(stream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006811 }
6812}
6813
6814void VkEncoder::vkCmdCopyImage(
6815 VkCommandBuffer commandBuffer,
6816 VkImage srcImage,
6817 VkImageLayout srcImageLayout,
6818 VkImage dstImage,
6819 VkImageLayout dstImageLayout,
6820 uint32_t regionCount,
6821 const VkImageCopy* pRegions)
6822{
6823 auto stream = mImpl->stream();
6824 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006825 auto resources = mImpl->resources();
6826 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006827 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006828 VkCommandBuffer local_commandBuffer;
6829 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006830 VkImage local_srcImage;
6831 local_srcImage = srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006832 VkImageLayout local_srcImageLayout;
6833 local_srcImageLayout = srcImageLayout;
6834 VkImage local_dstImage;
6835 local_dstImage = dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006836 VkImageLayout local_dstImageLayout;
6837 local_dstImageLayout = dstImageLayout;
6838 uint32_t local_regionCount;
6839 local_regionCount = regionCount;
6840 VkImageCopy* local_pRegions;
6841 local_pRegions = nullptr;
6842 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006843 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006844 local_pRegions = (VkImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006845 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6846 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006847 deepcopy_VkImageCopy(pool, pRegions + i, (VkImageCopy*)(local_pRegions + i));
6848 }
6849 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006850 countingStream->rewind();
6851 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08006852 uint64_t cgen_var_550;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006853 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_550, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006854 countingStream->write((uint64_t*)&cgen_var_550, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006855 uint64_t cgen_var_551;
6856 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_551, 1);
6857 countingStream->write((uint64_t*)&cgen_var_551, 1 * 8);
6858 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
6859 uint64_t cgen_var_552;
6860 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_552, 1);
6861 countingStream->write((uint64_t*)&cgen_var_552, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006862 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6863 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6864 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6865 {
6866 marshal_VkImageCopy(countingStream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006867 }
6868 }
6869 uint32_t packetSize_vkCmdCopyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6870 countingStream->rewind();
6871 uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage;
6872 stream->write(&opcode_vkCmdCopyImage, sizeof(uint32_t));
6873 stream->write(&packetSize_vkCmdCopyImage, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006874 uint64_t cgen_var_553;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006875 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_553, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006876 stream->write((uint64_t*)&cgen_var_553, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006877 uint64_t cgen_var_554;
6878 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_554, 1);
6879 stream->write((uint64_t*)&cgen_var_554, 1 * 8);
6880 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
6881 uint64_t cgen_var_555;
6882 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_555, 1);
6883 stream->write((uint64_t*)&cgen_var_555, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006884 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6885 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006886 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6887 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006888 marshal_VkImageCopy(stream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006889 }
6890}
6891
6892void VkEncoder::vkCmdBlitImage(
6893 VkCommandBuffer commandBuffer,
6894 VkImage srcImage,
6895 VkImageLayout srcImageLayout,
6896 VkImage dstImage,
6897 VkImageLayout dstImageLayout,
6898 uint32_t regionCount,
6899 const VkImageBlit* pRegions,
6900 VkFilter filter)
6901{
6902 auto stream = mImpl->stream();
6903 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006904 auto resources = mImpl->resources();
6905 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006906 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006907 VkCommandBuffer local_commandBuffer;
6908 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006909 VkImage local_srcImage;
6910 local_srcImage = srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006911 VkImageLayout local_srcImageLayout;
6912 local_srcImageLayout = srcImageLayout;
6913 VkImage local_dstImage;
6914 local_dstImage = dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006915 VkImageLayout local_dstImageLayout;
6916 local_dstImageLayout = dstImageLayout;
6917 uint32_t local_regionCount;
6918 local_regionCount = regionCount;
6919 VkImageBlit* local_pRegions;
6920 local_pRegions = nullptr;
6921 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006922 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006923 local_pRegions = (VkImageBlit*)pool->alloc(((regionCount)) * sizeof(const VkImageBlit));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006924 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6925 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006926 deepcopy_VkImageBlit(pool, pRegions + i, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006927 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006928 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006929 VkFilter local_filter;
6930 local_filter = filter;
6931 countingStream->rewind();
6932 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08006933 uint64_t cgen_var_556;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006934 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_556, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006935 countingStream->write((uint64_t*)&cgen_var_556, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006936 uint64_t cgen_var_557;
6937 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_557, 1);
6938 countingStream->write((uint64_t*)&cgen_var_557, 1 * 8);
6939 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
6940 uint64_t cgen_var_558;
6941 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_558, 1);
6942 countingStream->write((uint64_t*)&cgen_var_558, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006943 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6944 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6945 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6946 {
6947 marshal_VkImageBlit(countingStream, (VkImageBlit*)(local_pRegions + i));
6948 }
6949 countingStream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006950 }
6951 uint32_t packetSize_vkCmdBlitImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6952 countingStream->rewind();
6953 uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage;
6954 stream->write(&opcode_vkCmdBlitImage, sizeof(uint32_t));
6955 stream->write(&packetSize_vkCmdBlitImage, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006956 uint64_t cgen_var_559;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006957 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_559, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006958 stream->write((uint64_t*)&cgen_var_559, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006959 uint64_t cgen_var_560;
6960 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_560, 1);
6961 stream->write((uint64_t*)&cgen_var_560, 1 * 8);
6962 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
6963 uint64_t cgen_var_561;
6964 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_561, 1);
6965 stream->write((uint64_t*)&cgen_var_561, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006966 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6967 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006968 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6969 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006970 marshal_VkImageBlit(stream, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006971 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006972 stream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006973}
6974
6975void VkEncoder::vkCmdCopyBufferToImage(
6976 VkCommandBuffer commandBuffer,
6977 VkBuffer srcBuffer,
6978 VkImage dstImage,
6979 VkImageLayout dstImageLayout,
6980 uint32_t regionCount,
6981 const VkBufferImageCopy* pRegions)
6982{
6983 auto stream = mImpl->stream();
6984 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006985 auto resources = mImpl->resources();
6986 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006987 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006988 VkCommandBuffer local_commandBuffer;
6989 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006990 VkBuffer local_srcBuffer;
6991 local_srcBuffer = srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006992 VkImage local_dstImage;
6993 local_dstImage = dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006994 VkImageLayout local_dstImageLayout;
6995 local_dstImageLayout = dstImageLayout;
6996 uint32_t local_regionCount;
6997 local_regionCount = regionCount;
6998 VkBufferImageCopy* local_pRegions;
6999 local_pRegions = nullptr;
7000 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007001 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007002 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007003 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7004 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007005 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7006 }
7007 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007008 countingStream->rewind();
7009 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08007010 uint64_t cgen_var_562;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007011 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_562, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08007012 countingStream->write((uint64_t*)&cgen_var_562, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007013 uint64_t cgen_var_563;
7014 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_563, 1);
7015 countingStream->write((uint64_t*)&cgen_var_563, 1 * 8);
7016 uint64_t cgen_var_564;
7017 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_564, 1);
7018 countingStream->write((uint64_t*)&cgen_var_564, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007019 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7020 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7021 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7022 {
7023 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007024 }
7025 }
7026 uint32_t packetSize_vkCmdCopyBufferToImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7027 countingStream->rewind();
7028 uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage;
7029 stream->write(&opcode_vkCmdCopyBufferToImage, sizeof(uint32_t));
7030 stream->write(&packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007031 uint64_t cgen_var_565;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007032 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_565, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08007033 stream->write((uint64_t*)&cgen_var_565, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007034 uint64_t cgen_var_566;
7035 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_566, 1);
7036 stream->write((uint64_t*)&cgen_var_566, 1 * 8);
7037 uint64_t cgen_var_567;
7038 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_567, 1);
7039 stream->write((uint64_t*)&cgen_var_567, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007040 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7041 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007042 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7043 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007044 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007045 }
7046}
7047
7048void VkEncoder::vkCmdCopyImageToBuffer(
7049 VkCommandBuffer commandBuffer,
7050 VkImage srcImage,
7051 VkImageLayout srcImageLayout,
7052 VkBuffer dstBuffer,
7053 uint32_t regionCount,
7054 const VkBufferImageCopy* pRegions)
7055{
7056 auto stream = mImpl->stream();
7057 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007058 auto resources = mImpl->resources();
7059 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007060 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007061 VkCommandBuffer local_commandBuffer;
7062 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007063 VkImage local_srcImage;
7064 local_srcImage = srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007065 VkImageLayout local_srcImageLayout;
7066 local_srcImageLayout = srcImageLayout;
7067 VkBuffer local_dstBuffer;
7068 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007069 uint32_t local_regionCount;
7070 local_regionCount = regionCount;
7071 VkBufferImageCopy* local_pRegions;
7072 local_pRegions = nullptr;
7073 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007074 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007075 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007076 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7077 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007078 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7079 }
7080 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007081 countingStream->rewind();
7082 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08007083 uint64_t cgen_var_568;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007084 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_568, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08007085 countingStream->write((uint64_t*)&cgen_var_568, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007086 uint64_t cgen_var_569;
7087 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_569, 1);
7088 countingStream->write((uint64_t*)&cgen_var_569, 1 * 8);
7089 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
7090 uint64_t cgen_var_570;
7091 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_570, 1);
7092 countingStream->write((uint64_t*)&cgen_var_570, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007093 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7094 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7095 {
7096 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007097 }
7098 }
7099 uint32_t packetSize_vkCmdCopyImageToBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7100 countingStream->rewind();
7101 uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer;
7102 stream->write(&opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t));
7103 stream->write(&packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007104 uint64_t cgen_var_571;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007105 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_571, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08007106 stream->write((uint64_t*)&cgen_var_571, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007107 uint64_t cgen_var_572;
7108 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_572, 1);
7109 stream->write((uint64_t*)&cgen_var_572, 1 * 8);
7110 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
7111 uint64_t cgen_var_573;
7112 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_573, 1);
7113 stream->write((uint64_t*)&cgen_var_573, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007114 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007115 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7116 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007117 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007118 }
7119}
7120
7121void VkEncoder::vkCmdUpdateBuffer(
7122 VkCommandBuffer commandBuffer,
7123 VkBuffer dstBuffer,
7124 VkDeviceSize dstOffset,
7125 VkDeviceSize dataSize,
7126 const void* pData)
7127{
7128 auto stream = mImpl->stream();
7129 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007130 auto resources = mImpl->resources();
7131 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007132 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007133 VkCommandBuffer local_commandBuffer;
7134 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007135 VkBuffer local_dstBuffer;
7136 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007137 VkDeviceSize local_dstOffset;
7138 local_dstOffset = dstOffset;
7139 VkDeviceSize local_dataSize;
7140 local_dataSize = dataSize;
7141 void* local_pData;
7142 local_pData = nullptr;
7143 if (pData)
7144 {
7145 local_pData = (void*)pool->dupArray(pData, ((dataSize)) * sizeof(const uint8_t));
7146 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007147 countingStream->rewind();
7148 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007149 uint64_t cgen_var_574;
7150 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_574, 1);
7151 countingStream->write((uint64_t*)&cgen_var_574, 1 * 8);
7152 uint64_t cgen_var_575;
7153 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_575, 1);
7154 countingStream->write((uint64_t*)&cgen_var_575, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007155 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7156 countingStream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7157 countingStream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007158 }
7159 uint32_t packetSize_vkCmdUpdateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7160 countingStream->rewind();
7161 uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer;
7162 stream->write(&opcode_vkCmdUpdateBuffer, sizeof(uint32_t));
7163 stream->write(&packetSize_vkCmdUpdateBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007164 uint64_t cgen_var_576;
7165 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_576, 1);
7166 stream->write((uint64_t*)&cgen_var_576, 1 * 8);
7167 uint64_t cgen_var_577;
7168 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_577, 1);
7169 stream->write((uint64_t*)&cgen_var_577, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007170 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7171 stream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7172 stream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007173}
7174
7175void VkEncoder::vkCmdFillBuffer(
7176 VkCommandBuffer commandBuffer,
7177 VkBuffer dstBuffer,
7178 VkDeviceSize dstOffset,
7179 VkDeviceSize size,
7180 uint32_t data)
7181{
7182 auto stream = mImpl->stream();
7183 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007184 auto resources = mImpl->resources();
7185 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007186 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007187 VkCommandBuffer local_commandBuffer;
7188 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007189 VkBuffer local_dstBuffer;
7190 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007191 VkDeviceSize local_dstOffset;
7192 local_dstOffset = dstOffset;
7193 VkDeviceSize local_size;
7194 local_size = size;
7195 uint32_t local_data;
7196 local_data = data;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007197 countingStream->rewind();
7198 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007199 uint64_t cgen_var_578;
7200 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_578, 1);
7201 countingStream->write((uint64_t*)&cgen_var_578, 1 * 8);
7202 uint64_t cgen_var_579;
7203 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_579, 1);
7204 countingStream->write((uint64_t*)&cgen_var_579, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007205 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7206 countingStream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7207 countingStream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007208 }
7209 uint32_t packetSize_vkCmdFillBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7210 countingStream->rewind();
7211 uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer;
7212 stream->write(&opcode_vkCmdFillBuffer, sizeof(uint32_t));
7213 stream->write(&packetSize_vkCmdFillBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007214 uint64_t cgen_var_580;
7215 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_580, 1);
7216 stream->write((uint64_t*)&cgen_var_580, 1 * 8);
7217 uint64_t cgen_var_581;
7218 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_581, 1);
7219 stream->write((uint64_t*)&cgen_var_581, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007220 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7221 stream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7222 stream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007223}
7224
7225void VkEncoder::vkCmdClearColorImage(
7226 VkCommandBuffer commandBuffer,
7227 VkImage image,
7228 VkImageLayout imageLayout,
7229 const VkClearColorValue* pColor,
7230 uint32_t rangeCount,
7231 const VkImageSubresourceRange* pRanges)
7232{
7233 auto stream = mImpl->stream();
7234 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007235 auto resources = mImpl->resources();
7236 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007237 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007238 VkCommandBuffer local_commandBuffer;
7239 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007240 VkImage local_image;
7241 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007242 VkImageLayout local_imageLayout;
7243 local_imageLayout = imageLayout;
7244 VkClearColorValue* local_pColor;
7245 local_pColor = nullptr;
7246 if (pColor)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007247 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007248 local_pColor = (VkClearColorValue*)pool->alloc(sizeof(const VkClearColorValue));
7249 deepcopy_VkClearColorValue(pool, pColor, (VkClearColorValue*)(local_pColor));
7250 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007251 uint32_t local_rangeCount;
7252 local_rangeCount = rangeCount;
7253 VkImageSubresourceRange* local_pRanges;
7254 local_pRanges = nullptr;
7255 if (pRanges)
7256 {
7257 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007258 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7259 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007260 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
7261 }
7262 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007263 countingStream->rewind();
7264 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007265 uint64_t cgen_var_582;
7266 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_582, 1);
7267 countingStream->write((uint64_t*)&cgen_var_582, 1 * 8);
7268 uint64_t cgen_var_583;
7269 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_583, 1);
7270 countingStream->write((uint64_t*)&cgen_var_583, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007271 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7272 marshal_VkClearColorValue(countingStream, (VkClearColorValue*)(local_pColor));
7273 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
7274 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7275 {
7276 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007277 }
7278 }
7279 uint32_t packetSize_vkCmdClearColorImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7280 countingStream->rewind();
7281 uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage;
7282 stream->write(&opcode_vkCmdClearColorImage, sizeof(uint32_t));
7283 stream->write(&packetSize_vkCmdClearColorImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007284 uint64_t cgen_var_584;
7285 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_584, 1);
7286 stream->write((uint64_t*)&cgen_var_584, 1 * 8);
7287 uint64_t cgen_var_585;
7288 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_585, 1);
7289 stream->write((uint64_t*)&cgen_var_585, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007290 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7291 marshal_VkClearColorValue(stream, (VkClearColorValue*)(local_pColor));
7292 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007293 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7294 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007295 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007296 }
7297}
7298
7299void VkEncoder::vkCmdClearDepthStencilImage(
7300 VkCommandBuffer commandBuffer,
7301 VkImage image,
7302 VkImageLayout imageLayout,
7303 const VkClearDepthStencilValue* pDepthStencil,
7304 uint32_t rangeCount,
7305 const VkImageSubresourceRange* pRanges)
7306{
7307 auto stream = mImpl->stream();
7308 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007309 auto resources = mImpl->resources();
7310 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007311 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007312 VkCommandBuffer local_commandBuffer;
7313 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007314 VkImage local_image;
7315 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007316 VkImageLayout local_imageLayout;
7317 local_imageLayout = imageLayout;
7318 VkClearDepthStencilValue* local_pDepthStencil;
7319 local_pDepthStencil = nullptr;
7320 if (pDepthStencil)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007321 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007322 local_pDepthStencil = (VkClearDepthStencilValue*)pool->alloc(sizeof(const VkClearDepthStencilValue));
7323 deepcopy_VkClearDepthStencilValue(pool, pDepthStencil, (VkClearDepthStencilValue*)(local_pDepthStencil));
7324 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007325 uint32_t local_rangeCount;
7326 local_rangeCount = rangeCount;
7327 VkImageSubresourceRange* local_pRanges;
7328 local_pRanges = nullptr;
7329 if (pRanges)
7330 {
7331 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007332 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7333 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007334 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
7335 }
7336 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007337 countingStream->rewind();
7338 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007339 uint64_t cgen_var_586;
7340 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_586, 1);
7341 countingStream->write((uint64_t*)&cgen_var_586, 1 * 8);
7342 uint64_t cgen_var_587;
7343 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_587, 1);
7344 countingStream->write((uint64_t*)&cgen_var_587, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007345 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7346 marshal_VkClearDepthStencilValue(countingStream, (VkClearDepthStencilValue*)(local_pDepthStencil));
7347 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
7348 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7349 {
7350 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007351 }
7352 }
7353 uint32_t packetSize_vkCmdClearDepthStencilImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7354 countingStream->rewind();
7355 uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage;
7356 stream->write(&opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t));
7357 stream->write(&packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007358 uint64_t cgen_var_588;
7359 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_588, 1);
7360 stream->write((uint64_t*)&cgen_var_588, 1 * 8);
7361 uint64_t cgen_var_589;
7362 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_589, 1);
7363 stream->write((uint64_t*)&cgen_var_589, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007364 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7365 marshal_VkClearDepthStencilValue(stream, (VkClearDepthStencilValue*)(local_pDepthStencil));
7366 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007367 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7368 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007369 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007370 }
7371}
7372
7373void VkEncoder::vkCmdClearAttachments(
7374 VkCommandBuffer commandBuffer,
7375 uint32_t attachmentCount,
7376 const VkClearAttachment* pAttachments,
7377 uint32_t rectCount,
7378 const VkClearRect* pRects)
7379{
7380 auto stream = mImpl->stream();
7381 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007382 auto resources = mImpl->resources();
7383 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007384 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007385 VkCommandBuffer local_commandBuffer;
7386 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007387 uint32_t local_attachmentCount;
7388 local_attachmentCount = attachmentCount;
7389 VkClearAttachment* local_pAttachments;
7390 local_pAttachments = nullptr;
7391 if (pAttachments)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007392 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007393 local_pAttachments = (VkClearAttachment*)pool->alloc(((attachmentCount)) * sizeof(const VkClearAttachment));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007394 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7395 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007396 deepcopy_VkClearAttachment(pool, pAttachments + i, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007397 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007398 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007399 uint32_t local_rectCount;
7400 local_rectCount = rectCount;
7401 VkClearRect* local_pRects;
7402 local_pRects = nullptr;
7403 if (pRects)
7404 {
7405 local_pRects = (VkClearRect*)pool->alloc(((rectCount)) * sizeof(const VkClearRect));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007406 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7407 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007408 deepcopy_VkClearRect(pool, pRects + i, (VkClearRect*)(local_pRects + i));
7409 }
7410 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007411 countingStream->rewind();
7412 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007413 uint64_t cgen_var_590;
7414 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_590, 1);
7415 countingStream->write((uint64_t*)&cgen_var_590, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007416 countingStream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
7417 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7418 {
7419 marshal_VkClearAttachment(countingStream, (VkClearAttachment*)(local_pAttachments + i));
7420 }
7421 countingStream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
7422 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7423 {
7424 marshal_VkClearRect(countingStream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007425 }
7426 }
7427 uint32_t packetSize_vkCmdClearAttachments = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7428 countingStream->rewind();
7429 uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments;
7430 stream->write(&opcode_vkCmdClearAttachments, sizeof(uint32_t));
7431 stream->write(&packetSize_vkCmdClearAttachments, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007432 uint64_t cgen_var_591;
7433 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_591, 1);
7434 stream->write((uint64_t*)&cgen_var_591, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007435 stream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007436 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7437 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007438 marshal_VkClearAttachment(stream, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007439 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007440 stream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007441 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7442 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007443 marshal_VkClearRect(stream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007444 }
7445}
7446
7447void VkEncoder::vkCmdResolveImage(
7448 VkCommandBuffer commandBuffer,
7449 VkImage srcImage,
7450 VkImageLayout srcImageLayout,
7451 VkImage dstImage,
7452 VkImageLayout dstImageLayout,
7453 uint32_t regionCount,
7454 const VkImageResolve* pRegions)
7455{
7456 auto stream = mImpl->stream();
7457 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007458 auto resources = mImpl->resources();
7459 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007460 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007461 VkCommandBuffer local_commandBuffer;
7462 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007463 VkImage local_srcImage;
7464 local_srcImage = srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007465 VkImageLayout local_srcImageLayout;
7466 local_srcImageLayout = srcImageLayout;
7467 VkImage local_dstImage;
7468 local_dstImage = dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007469 VkImageLayout local_dstImageLayout;
7470 local_dstImageLayout = dstImageLayout;
7471 uint32_t local_regionCount;
7472 local_regionCount = regionCount;
7473 VkImageResolve* local_pRegions;
7474 local_pRegions = nullptr;
7475 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007476 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007477 local_pRegions = (VkImageResolve*)pool->alloc(((regionCount)) * sizeof(const VkImageResolve));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007478 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7479 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007480 deepcopy_VkImageResolve(pool, pRegions + i, (VkImageResolve*)(local_pRegions + i));
7481 }
7482 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007483 countingStream->rewind();
7484 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08007485 uint64_t cgen_var_592;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007486 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_592, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08007487 countingStream->write((uint64_t*)&cgen_var_592, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007488 uint64_t cgen_var_593;
7489 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_593, 1);
7490 countingStream->write((uint64_t*)&cgen_var_593, 1 * 8);
7491 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
7492 uint64_t cgen_var_594;
7493 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_594, 1);
7494 countingStream->write((uint64_t*)&cgen_var_594, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007495 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7496 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7497 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7498 {
7499 marshal_VkImageResolve(countingStream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007500 }
7501 }
7502 uint32_t packetSize_vkCmdResolveImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7503 countingStream->rewind();
7504 uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage;
7505 stream->write(&opcode_vkCmdResolveImage, sizeof(uint32_t));
7506 stream->write(&packetSize_vkCmdResolveImage, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007507 uint64_t cgen_var_595;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007508 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_595, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08007509 stream->write((uint64_t*)&cgen_var_595, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007510 uint64_t cgen_var_596;
7511 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_596, 1);
7512 stream->write((uint64_t*)&cgen_var_596, 1 * 8);
7513 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
7514 uint64_t cgen_var_597;
7515 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_597, 1);
7516 stream->write((uint64_t*)&cgen_var_597, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007517 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7518 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007519 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7520 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007521 marshal_VkImageResolve(stream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007522 }
7523}
7524
7525void VkEncoder::vkCmdSetEvent(
7526 VkCommandBuffer commandBuffer,
7527 VkEvent event,
7528 VkPipelineStageFlags stageMask)
7529{
7530 auto stream = mImpl->stream();
7531 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007532 auto resources = mImpl->resources();
7533 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007534 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007535 VkCommandBuffer local_commandBuffer;
7536 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007537 VkEvent local_event;
7538 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007539 VkPipelineStageFlags local_stageMask;
7540 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007541 countingStream->rewind();
7542 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007543 uint64_t cgen_var_598;
7544 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_598, 1);
7545 countingStream->write((uint64_t*)&cgen_var_598, 1 * 8);
7546 uint64_t cgen_var_599;
7547 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_599, 1);
7548 countingStream->write((uint64_t*)&cgen_var_599, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007549 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007550 }
7551 uint32_t packetSize_vkCmdSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7552 countingStream->rewind();
7553 uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent;
7554 stream->write(&opcode_vkCmdSetEvent, sizeof(uint32_t));
7555 stream->write(&packetSize_vkCmdSetEvent, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007556 uint64_t cgen_var_600;
7557 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_600, 1);
7558 stream->write((uint64_t*)&cgen_var_600, 1 * 8);
7559 uint64_t cgen_var_601;
7560 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_601, 1);
7561 stream->write((uint64_t*)&cgen_var_601, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007562 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007563}
7564
7565void VkEncoder::vkCmdResetEvent(
7566 VkCommandBuffer commandBuffer,
7567 VkEvent event,
7568 VkPipelineStageFlags stageMask)
7569{
7570 auto stream = mImpl->stream();
7571 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007572 auto resources = mImpl->resources();
7573 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007574 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007575 VkCommandBuffer local_commandBuffer;
7576 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007577 VkEvent local_event;
7578 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007579 VkPipelineStageFlags local_stageMask;
7580 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007581 countingStream->rewind();
7582 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007583 uint64_t cgen_var_602;
7584 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_602, 1);
7585 countingStream->write((uint64_t*)&cgen_var_602, 1 * 8);
7586 uint64_t cgen_var_603;
7587 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_603, 1);
7588 countingStream->write((uint64_t*)&cgen_var_603, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007589 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007590 }
7591 uint32_t packetSize_vkCmdResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7592 countingStream->rewind();
7593 uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent;
7594 stream->write(&opcode_vkCmdResetEvent, sizeof(uint32_t));
7595 stream->write(&packetSize_vkCmdResetEvent, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007596 uint64_t cgen_var_604;
7597 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_604, 1);
7598 stream->write((uint64_t*)&cgen_var_604, 1 * 8);
7599 uint64_t cgen_var_605;
7600 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_605, 1);
7601 stream->write((uint64_t*)&cgen_var_605, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007602 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007603}
7604
7605void VkEncoder::vkCmdWaitEvents(
7606 VkCommandBuffer commandBuffer,
7607 uint32_t eventCount,
7608 const VkEvent* pEvents,
7609 VkPipelineStageFlags srcStageMask,
7610 VkPipelineStageFlags dstStageMask,
7611 uint32_t memoryBarrierCount,
7612 const VkMemoryBarrier* pMemoryBarriers,
7613 uint32_t bufferMemoryBarrierCount,
7614 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
7615 uint32_t imageMemoryBarrierCount,
7616 const VkImageMemoryBarrier* pImageMemoryBarriers)
7617{
7618 auto stream = mImpl->stream();
7619 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007620 auto resources = mImpl->resources();
7621 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007622 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007623 VkCommandBuffer local_commandBuffer;
7624 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007625 uint32_t local_eventCount;
7626 local_eventCount = eventCount;
7627 VkEvent* local_pEvents;
7628 local_pEvents = nullptr;
7629 if (pEvents)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007630 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007631 local_pEvents = (VkEvent*)pool->dupArray(pEvents, ((eventCount)) * sizeof(const VkEvent));
7632 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007633 VkPipelineStageFlags local_srcStageMask;
7634 local_srcStageMask = srcStageMask;
7635 VkPipelineStageFlags local_dstStageMask;
7636 local_dstStageMask = dstStageMask;
7637 uint32_t local_memoryBarrierCount;
7638 local_memoryBarrierCount = memoryBarrierCount;
7639 VkMemoryBarrier* local_pMemoryBarriers;
7640 local_pMemoryBarriers = nullptr;
7641 if (pMemoryBarriers)
7642 {
7643 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007644 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7645 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007646 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007647 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007648 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007649 uint32_t local_bufferMemoryBarrierCount;
7650 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
7651 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
7652 local_pBufferMemoryBarriers = nullptr;
7653 if (pBufferMemoryBarriers)
7654 {
7655 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007656 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7657 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007658 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007659 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007660 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007661 uint32_t local_imageMemoryBarrierCount;
7662 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
7663 VkImageMemoryBarrier* local_pImageMemoryBarriers;
7664 local_pImageMemoryBarriers = nullptr;
7665 if (pImageMemoryBarriers)
7666 {
7667 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007668 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7669 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007670 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
7671 }
7672 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007673 countingStream->rewind();
7674 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007675 uint64_t cgen_var_606;
7676 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_606, 1);
7677 countingStream->write((uint64_t*)&cgen_var_606, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007678 countingStream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007679 if (((eventCount)))
7680 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007681 uint64_t* cgen_var_607;
7682 countingStream->alloc((void**)&cgen_var_607, ((eventCount)) * 8);
7683 countingStream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_607, ((eventCount)));
7684 countingStream->write((uint64_t*)cgen_var_607, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007685 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007686 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7687 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7688 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
7689 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7690 {
7691 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
7692 }
7693 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
7694 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7695 {
7696 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
7697 }
7698 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
7699 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7700 {
7701 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007702 }
7703 }
7704 uint32_t packetSize_vkCmdWaitEvents = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7705 countingStream->rewind();
7706 uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents;
7707 stream->write(&opcode_vkCmdWaitEvents, sizeof(uint32_t));
7708 stream->write(&packetSize_vkCmdWaitEvents, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007709 uint64_t cgen_var_608;
7710 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_608, 1);
7711 stream->write((uint64_t*)&cgen_var_608, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007712 stream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007713 if (((eventCount)))
7714 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007715 uint64_t* cgen_var_609;
7716 stream->alloc((void**)&cgen_var_609, ((eventCount)) * 8);
7717 stream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_609, ((eventCount)));
7718 stream->write((uint64_t*)cgen_var_609, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007719 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007720 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7721 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7722 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007723 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7724 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007725 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007726 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007727 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007728 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7729 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007730 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007731 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007732 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007733 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7734 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007735 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007736 }
7737}
7738
7739void VkEncoder::vkCmdPipelineBarrier(
7740 VkCommandBuffer commandBuffer,
7741 VkPipelineStageFlags srcStageMask,
7742 VkPipelineStageFlags dstStageMask,
7743 VkDependencyFlags dependencyFlags,
7744 uint32_t memoryBarrierCount,
7745 const VkMemoryBarrier* pMemoryBarriers,
7746 uint32_t bufferMemoryBarrierCount,
7747 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
7748 uint32_t imageMemoryBarrierCount,
7749 const VkImageMemoryBarrier* pImageMemoryBarriers)
7750{
7751 auto stream = mImpl->stream();
7752 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007753 auto resources = mImpl->resources();
7754 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007755 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007756 VkCommandBuffer local_commandBuffer;
7757 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007758 VkPipelineStageFlags local_srcStageMask;
7759 local_srcStageMask = srcStageMask;
7760 VkPipelineStageFlags local_dstStageMask;
7761 local_dstStageMask = dstStageMask;
7762 VkDependencyFlags local_dependencyFlags;
7763 local_dependencyFlags = dependencyFlags;
7764 uint32_t local_memoryBarrierCount;
7765 local_memoryBarrierCount = memoryBarrierCount;
7766 VkMemoryBarrier* local_pMemoryBarriers;
7767 local_pMemoryBarriers = nullptr;
7768 if (pMemoryBarriers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007769 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007770 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007771 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7772 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007773 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007774 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007775 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007776 uint32_t local_bufferMemoryBarrierCount;
7777 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
7778 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
7779 local_pBufferMemoryBarriers = nullptr;
7780 if (pBufferMemoryBarriers)
7781 {
7782 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007783 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7784 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007785 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007786 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007787 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007788 uint32_t local_imageMemoryBarrierCount;
7789 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
7790 VkImageMemoryBarrier* local_pImageMemoryBarriers;
7791 local_pImageMemoryBarriers = nullptr;
7792 if (pImageMemoryBarriers)
7793 {
7794 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007795 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7796 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007797 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
7798 }
7799 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007800 countingStream->rewind();
7801 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007802 uint64_t cgen_var_610;
7803 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_610, 1);
7804 countingStream->write((uint64_t*)&cgen_var_610, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007805 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7806 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7807 countingStream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
7808 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
7809 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7810 {
7811 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
7812 }
7813 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
7814 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7815 {
7816 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
7817 }
7818 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
7819 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7820 {
7821 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007822 }
7823 }
7824 uint32_t packetSize_vkCmdPipelineBarrier = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7825 countingStream->rewind();
7826 uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier;
7827 stream->write(&opcode_vkCmdPipelineBarrier, sizeof(uint32_t));
7828 stream->write(&packetSize_vkCmdPipelineBarrier, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007829 uint64_t cgen_var_611;
7830 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_611, 1);
7831 stream->write((uint64_t*)&cgen_var_611, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007832 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7833 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7834 stream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
7835 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007836 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7837 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007838 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007839 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007840 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007841 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7842 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007843 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007844 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007845 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007846 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7847 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007848 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007849 }
7850}
7851
7852void VkEncoder::vkCmdBeginQuery(
7853 VkCommandBuffer commandBuffer,
7854 VkQueryPool queryPool,
7855 uint32_t query,
7856 VkQueryControlFlags flags)
7857{
7858 auto stream = mImpl->stream();
7859 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007860 auto resources = mImpl->resources();
7861 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007862 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007863 VkCommandBuffer local_commandBuffer;
7864 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007865 VkQueryPool local_queryPool;
7866 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007867 uint32_t local_query;
7868 local_query = query;
7869 VkQueryControlFlags local_flags;
7870 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007871 countingStream->rewind();
7872 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007873 uint64_t cgen_var_612;
7874 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_612, 1);
7875 countingStream->write((uint64_t*)&cgen_var_612, 1 * 8);
7876 uint64_t cgen_var_613;
7877 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_613, 1);
7878 countingStream->write((uint64_t*)&cgen_var_613, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007879 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
7880 countingStream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007881 }
7882 uint32_t packetSize_vkCmdBeginQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7883 countingStream->rewind();
7884 uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery;
7885 stream->write(&opcode_vkCmdBeginQuery, sizeof(uint32_t));
7886 stream->write(&packetSize_vkCmdBeginQuery, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007887 uint64_t cgen_var_614;
7888 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_614, 1);
7889 stream->write((uint64_t*)&cgen_var_614, 1 * 8);
7890 uint64_t cgen_var_615;
7891 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_615, 1);
7892 stream->write((uint64_t*)&cgen_var_615, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007893 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
7894 stream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007895}
7896
7897void VkEncoder::vkCmdEndQuery(
7898 VkCommandBuffer commandBuffer,
7899 VkQueryPool queryPool,
7900 uint32_t query)
7901{
7902 auto stream = mImpl->stream();
7903 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007904 auto resources = mImpl->resources();
7905 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007906 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007907 VkCommandBuffer local_commandBuffer;
7908 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007909 VkQueryPool local_queryPool;
7910 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007911 uint32_t local_query;
7912 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007913 countingStream->rewind();
7914 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007915 uint64_t cgen_var_616;
7916 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_616, 1);
7917 countingStream->write((uint64_t*)&cgen_var_616, 1 * 8);
7918 uint64_t cgen_var_617;
7919 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_617, 1);
7920 countingStream->write((uint64_t*)&cgen_var_617, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007921 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007922 }
7923 uint32_t packetSize_vkCmdEndQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7924 countingStream->rewind();
7925 uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery;
7926 stream->write(&opcode_vkCmdEndQuery, sizeof(uint32_t));
7927 stream->write(&packetSize_vkCmdEndQuery, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007928 uint64_t cgen_var_618;
7929 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_618, 1);
7930 stream->write((uint64_t*)&cgen_var_618, 1 * 8);
7931 uint64_t cgen_var_619;
7932 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_619, 1);
7933 stream->write((uint64_t*)&cgen_var_619, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007934 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007935}
7936
7937void VkEncoder::vkCmdResetQueryPool(
7938 VkCommandBuffer commandBuffer,
7939 VkQueryPool queryPool,
7940 uint32_t firstQuery,
7941 uint32_t queryCount)
7942{
7943 auto stream = mImpl->stream();
7944 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007945 auto resources = mImpl->resources();
7946 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007947 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007948 VkCommandBuffer local_commandBuffer;
7949 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007950 VkQueryPool local_queryPool;
7951 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007952 uint32_t local_firstQuery;
7953 local_firstQuery = firstQuery;
7954 uint32_t local_queryCount;
7955 local_queryCount = queryCount;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007956 countingStream->rewind();
7957 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007958 uint64_t cgen_var_620;
7959 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_620, 1);
7960 countingStream->write((uint64_t*)&cgen_var_620, 1 * 8);
7961 uint64_t cgen_var_621;
7962 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_621, 1);
7963 countingStream->write((uint64_t*)&cgen_var_621, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007964 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
7965 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007966 }
7967 uint32_t packetSize_vkCmdResetQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7968 countingStream->rewind();
7969 uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool;
7970 stream->write(&opcode_vkCmdResetQueryPool, sizeof(uint32_t));
7971 stream->write(&packetSize_vkCmdResetQueryPool, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007972 uint64_t cgen_var_622;
7973 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_622, 1);
7974 stream->write((uint64_t*)&cgen_var_622, 1 * 8);
7975 uint64_t cgen_var_623;
7976 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_623, 1);
7977 stream->write((uint64_t*)&cgen_var_623, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007978 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
7979 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007980}
7981
7982void VkEncoder::vkCmdWriteTimestamp(
7983 VkCommandBuffer commandBuffer,
7984 VkPipelineStageFlagBits pipelineStage,
7985 VkQueryPool queryPool,
7986 uint32_t query)
7987{
7988 auto stream = mImpl->stream();
7989 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007990 auto resources = mImpl->resources();
7991 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007992 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007993 VkCommandBuffer local_commandBuffer;
7994 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007995 VkPipelineStageFlagBits local_pipelineStage;
7996 local_pipelineStage = pipelineStage;
7997 VkQueryPool local_queryPool;
7998 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007999 uint32_t local_query;
8000 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008001 countingStream->rewind();
8002 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008003 uint64_t cgen_var_624;
8004 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_624, 1);
8005 countingStream->write((uint64_t*)&cgen_var_624, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008006 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008007 uint64_t cgen_var_625;
8008 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_625, 1);
8009 countingStream->write((uint64_t*)&cgen_var_625, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008010 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008011 }
8012 uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8013 countingStream->rewind();
8014 uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp;
8015 stream->write(&opcode_vkCmdWriteTimestamp, sizeof(uint32_t));
8016 stream->write(&packetSize_vkCmdWriteTimestamp, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008017 uint64_t cgen_var_626;
8018 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_626, 1);
8019 stream->write((uint64_t*)&cgen_var_626, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008020 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008021 uint64_t cgen_var_627;
8022 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_627, 1);
8023 stream->write((uint64_t*)&cgen_var_627, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008024 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008025}
8026
8027void VkEncoder::vkCmdCopyQueryPoolResults(
8028 VkCommandBuffer commandBuffer,
8029 VkQueryPool queryPool,
8030 uint32_t firstQuery,
8031 uint32_t queryCount,
8032 VkBuffer dstBuffer,
8033 VkDeviceSize dstOffset,
8034 VkDeviceSize stride,
8035 VkQueryResultFlags flags)
8036{
8037 auto stream = mImpl->stream();
8038 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008039 auto resources = mImpl->resources();
8040 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008041 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008042 VkCommandBuffer local_commandBuffer;
8043 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008044 VkQueryPool local_queryPool;
8045 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008046 uint32_t local_firstQuery;
8047 local_firstQuery = firstQuery;
8048 uint32_t local_queryCount;
8049 local_queryCount = queryCount;
8050 VkBuffer local_dstBuffer;
8051 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008052 VkDeviceSize local_dstOffset;
8053 local_dstOffset = dstOffset;
8054 VkDeviceSize local_stride;
8055 local_stride = stride;
8056 VkQueryResultFlags local_flags;
8057 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008058 countingStream->rewind();
8059 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008060 uint64_t cgen_var_628;
8061 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_628, 1);
8062 countingStream->write((uint64_t*)&cgen_var_628, 1 * 8);
8063 uint64_t cgen_var_629;
8064 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_629, 1);
8065 countingStream->write((uint64_t*)&cgen_var_629, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008066 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8067 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008068 uint64_t cgen_var_630;
8069 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_630, 1);
8070 countingStream->write((uint64_t*)&cgen_var_630, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008071 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8072 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8073 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008074 }
8075 uint32_t packetSize_vkCmdCopyQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8076 countingStream->rewind();
8077 uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults;
8078 stream->write(&opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
8079 stream->write(&packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008080 uint64_t cgen_var_631;
8081 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_631, 1);
8082 stream->write((uint64_t*)&cgen_var_631, 1 * 8);
8083 uint64_t cgen_var_632;
8084 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_632, 1);
8085 stream->write((uint64_t*)&cgen_var_632, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008086 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8087 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008088 uint64_t cgen_var_633;
8089 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_633, 1);
8090 stream->write((uint64_t*)&cgen_var_633, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008091 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8092 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8093 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008094}
8095
8096void VkEncoder::vkCmdPushConstants(
8097 VkCommandBuffer commandBuffer,
8098 VkPipelineLayout layout,
8099 VkShaderStageFlags stageFlags,
8100 uint32_t offset,
8101 uint32_t size,
8102 const void* pValues)
8103{
8104 auto stream = mImpl->stream();
8105 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008106 auto resources = mImpl->resources();
8107 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008108 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008109 VkCommandBuffer local_commandBuffer;
8110 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008111 VkPipelineLayout local_layout;
8112 local_layout = layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008113 VkShaderStageFlags local_stageFlags;
8114 local_stageFlags = stageFlags;
8115 uint32_t local_offset;
8116 local_offset = offset;
8117 uint32_t local_size;
8118 local_size = size;
8119 void* local_pValues;
8120 local_pValues = nullptr;
8121 if (pValues)
8122 {
8123 local_pValues = (void*)pool->dupArray(pValues, ((size)) * sizeof(const uint8_t));
8124 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008125 countingStream->rewind();
8126 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008127 uint64_t cgen_var_634;
8128 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_634, 1);
8129 countingStream->write((uint64_t*)&cgen_var_634, 1 * 8);
8130 uint64_t cgen_var_635;
8131 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_635, 1);
8132 countingStream->write((uint64_t*)&cgen_var_635, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008133 countingStream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8134 countingStream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8135 countingStream->write((uint32_t*)&local_size, sizeof(uint32_t));
8136 countingStream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008137 }
8138 uint32_t packetSize_vkCmdPushConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8139 countingStream->rewind();
8140 uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants;
8141 stream->write(&opcode_vkCmdPushConstants, sizeof(uint32_t));
8142 stream->write(&packetSize_vkCmdPushConstants, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008143 uint64_t cgen_var_636;
8144 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_636, 1);
8145 stream->write((uint64_t*)&cgen_var_636, 1 * 8);
8146 uint64_t cgen_var_637;
8147 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_637, 1);
8148 stream->write((uint64_t*)&cgen_var_637, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008149 stream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8150 stream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8151 stream->write((uint32_t*)&local_size, sizeof(uint32_t));
8152 stream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008153}
8154
8155void VkEncoder::vkCmdBeginRenderPass(
8156 VkCommandBuffer commandBuffer,
8157 const VkRenderPassBeginInfo* pRenderPassBegin,
8158 VkSubpassContents contents)
8159{
8160 auto stream = mImpl->stream();
8161 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008162 auto resources = mImpl->resources();
8163 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008164 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008165 VkCommandBuffer local_commandBuffer;
8166 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008167 VkRenderPassBeginInfo* local_pRenderPassBegin;
8168 local_pRenderPassBegin = nullptr;
8169 if (pRenderPassBegin)
8170 {
8171 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
8172 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8173 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008174 VkSubpassContents local_contents;
8175 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008176 countingStream->rewind();
8177 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008178 uint64_t cgen_var_638;
8179 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_638, 1);
8180 countingStream->write((uint64_t*)&cgen_var_638, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008181 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8182 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008183 }
8184 uint32_t packetSize_vkCmdBeginRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8185 countingStream->rewind();
8186 uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass;
8187 stream->write(&opcode_vkCmdBeginRenderPass, sizeof(uint32_t));
8188 stream->write(&packetSize_vkCmdBeginRenderPass, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008189 uint64_t cgen_var_639;
8190 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_639, 1);
8191 stream->write((uint64_t*)&cgen_var_639, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008192 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8193 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008194}
8195
8196void VkEncoder::vkCmdNextSubpass(
8197 VkCommandBuffer commandBuffer,
8198 VkSubpassContents contents)
8199{
8200 auto stream = mImpl->stream();
8201 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008202 auto resources = mImpl->resources();
8203 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008204 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008205 VkCommandBuffer local_commandBuffer;
8206 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008207 VkSubpassContents local_contents;
8208 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008209 countingStream->rewind();
8210 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008211 uint64_t cgen_var_640;
8212 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_640, 1);
8213 countingStream->write((uint64_t*)&cgen_var_640, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008214 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008215 }
8216 uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8217 countingStream->rewind();
8218 uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass;
8219 stream->write(&opcode_vkCmdNextSubpass, sizeof(uint32_t));
8220 stream->write(&packetSize_vkCmdNextSubpass, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008221 uint64_t cgen_var_641;
8222 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_641, 1);
8223 stream->write((uint64_t*)&cgen_var_641, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008224 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008225}
8226
8227void VkEncoder::vkCmdEndRenderPass(
8228 VkCommandBuffer commandBuffer)
8229{
8230 auto stream = mImpl->stream();
8231 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008232 auto resources = mImpl->resources();
8233 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008234 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008235 VkCommandBuffer local_commandBuffer;
8236 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008237 countingStream->rewind();
8238 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008239 uint64_t cgen_var_642;
8240 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_642, 1);
8241 countingStream->write((uint64_t*)&cgen_var_642, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008242 }
8243 uint32_t packetSize_vkCmdEndRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8244 countingStream->rewind();
8245 uint32_t opcode_vkCmdEndRenderPass = OP_vkCmdEndRenderPass;
8246 stream->write(&opcode_vkCmdEndRenderPass, sizeof(uint32_t));
8247 stream->write(&packetSize_vkCmdEndRenderPass, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008248 uint64_t cgen_var_643;
8249 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_643, 1);
8250 stream->write((uint64_t*)&cgen_var_643, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008251}
8252
8253void VkEncoder::vkCmdExecuteCommands(
8254 VkCommandBuffer commandBuffer,
8255 uint32_t commandBufferCount,
8256 const VkCommandBuffer* pCommandBuffers)
8257{
8258 auto stream = mImpl->stream();
8259 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008260 auto resources = mImpl->resources();
8261 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008262 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008263 VkCommandBuffer local_commandBuffer;
8264 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008265 uint32_t local_commandBufferCount;
8266 local_commandBufferCount = commandBufferCount;
8267 VkCommandBuffer* local_pCommandBuffers;
8268 local_pCommandBuffers = nullptr;
8269 if (pCommandBuffers)
8270 {
8271 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
8272 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008273 countingStream->rewind();
8274 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008275 uint64_t cgen_var_644;
8276 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_644, 1);
8277 countingStream->write((uint64_t*)&cgen_var_644, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008278 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008279 if (((commandBufferCount)))
8280 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008281 uint64_t* cgen_var_645;
8282 countingStream->alloc((void**)&cgen_var_645, ((commandBufferCount)) * 8);
8283 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_645, ((commandBufferCount)));
8284 countingStream->write((uint64_t*)cgen_var_645, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008285 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008286 }
8287 uint32_t packetSize_vkCmdExecuteCommands = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8288 countingStream->rewind();
8289 uint32_t opcode_vkCmdExecuteCommands = OP_vkCmdExecuteCommands;
8290 stream->write(&opcode_vkCmdExecuteCommands, sizeof(uint32_t));
8291 stream->write(&packetSize_vkCmdExecuteCommands, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008292 uint64_t cgen_var_646;
8293 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_646, 1);
8294 stream->write((uint64_t*)&cgen_var_646, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008295 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008296 if (((commandBufferCount)))
8297 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008298 uint64_t* cgen_var_647;
8299 stream->alloc((void**)&cgen_var_647, ((commandBufferCount)) * 8);
8300 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_647, ((commandBufferCount)));
8301 stream->write((uint64_t*)cgen_var_647, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008302 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008303}
8304
8305#endif
8306#ifdef VK_VERSION_1_1
8307VkResult VkEncoder::vkEnumerateInstanceVersion(
8308 uint32_t* pApiVersion)
8309{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008310 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008311 vkEnumerateInstanceVersion_VkResult_return = goldfish_vkEnumerateInstanceVersion(pApiVersion);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008312 return vkEnumerateInstanceVersion_VkResult_return;
8313}
8314
8315VkResult VkEncoder::vkBindBufferMemory2(
8316 VkDevice device,
8317 uint32_t bindInfoCount,
8318 const VkBindBufferMemoryInfo* pBindInfos)
8319{
8320 auto stream = mImpl->stream();
8321 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008322 auto resources = mImpl->resources();
8323 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008324 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008325 VkDevice local_device;
8326 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008327 uint32_t local_bindInfoCount;
8328 local_bindInfoCount = bindInfoCount;
8329 VkBindBufferMemoryInfo* local_pBindInfos;
8330 local_pBindInfos = nullptr;
8331 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008332 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008333 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008334 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8335 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008336 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
8337 }
8338 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008339 countingStream->rewind();
8340 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008341 uint64_t cgen_var_648;
8342 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_648, 1);
8343 countingStream->write((uint64_t*)&cgen_var_648, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008344 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
8345 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8346 {
8347 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008348 }
8349 }
8350 uint32_t packetSize_vkBindBufferMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8351 countingStream->rewind();
8352 uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2;
8353 stream->write(&opcode_vkBindBufferMemory2, sizeof(uint32_t));
8354 stream->write(&packetSize_vkBindBufferMemory2, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008355 uint64_t cgen_var_649;
8356 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_649, 1);
8357 stream->write((uint64_t*)&cgen_var_649, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008358 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008359 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8360 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008361 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008362 }
8363 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
8364 stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008365 countingStream->clearPool();
8366 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008367 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008368 return vkBindBufferMemory2_VkResult_return;
8369}
8370
8371VkResult VkEncoder::vkBindImageMemory2(
8372 VkDevice device,
8373 uint32_t bindInfoCount,
8374 const VkBindImageMemoryInfo* pBindInfos)
8375{
8376 auto stream = mImpl->stream();
8377 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008378 auto resources = mImpl->resources();
8379 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008380 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008381 VkDevice local_device;
8382 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008383 uint32_t local_bindInfoCount;
8384 local_bindInfoCount = bindInfoCount;
8385 VkBindImageMemoryInfo* local_pBindInfos;
8386 local_pBindInfos = nullptr;
8387 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008388 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008389 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008390 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8391 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008392 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
8393 }
8394 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008395 countingStream->rewind();
8396 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008397 uint64_t cgen_var_650;
8398 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_650, 1);
8399 countingStream->write((uint64_t*)&cgen_var_650, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008400 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
8401 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8402 {
8403 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008404 }
8405 }
8406 uint32_t packetSize_vkBindImageMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8407 countingStream->rewind();
8408 uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2;
8409 stream->write(&opcode_vkBindImageMemory2, sizeof(uint32_t));
8410 stream->write(&packetSize_vkBindImageMemory2, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008411 uint64_t cgen_var_651;
8412 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_651, 1);
8413 stream->write((uint64_t*)&cgen_var_651, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008414 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008415 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8416 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008417 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008418 }
8419 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
8420 stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008421 countingStream->clearPool();
8422 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008423 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008424 return vkBindImageMemory2_VkResult_return;
8425}
8426
8427void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures(
8428 VkDevice device,
8429 uint32_t heapIndex,
8430 uint32_t localDeviceIndex,
8431 uint32_t remoteDeviceIndex,
8432 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
8433{
8434 auto stream = mImpl->stream();
8435 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008436 auto resources = mImpl->resources();
8437 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008438 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008439 VkDevice local_device;
8440 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008441 uint32_t local_heapIndex;
8442 local_heapIndex = heapIndex;
8443 uint32_t local_localDeviceIndex;
8444 local_localDeviceIndex = localDeviceIndex;
8445 uint32_t local_remoteDeviceIndex;
8446 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008447 countingStream->rewind();
8448 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008449 uint64_t cgen_var_652;
8450 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_652, 1);
8451 countingStream->write((uint64_t*)&cgen_var_652, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008452 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
8453 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
8454 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008455 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8456 }
8457 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8458 countingStream->rewind();
8459 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures;
8460 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
8461 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008462 uint64_t cgen_var_653;
8463 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_653, 1);
8464 stream->write((uint64_t*)&cgen_var_653, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008465 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
8466 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
8467 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008468 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8469 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8470}
8471
8472void VkEncoder::vkCmdSetDeviceMask(
8473 VkCommandBuffer commandBuffer,
8474 uint32_t deviceMask)
8475{
8476 auto stream = mImpl->stream();
8477 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008478 auto resources = mImpl->resources();
8479 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008480 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008481 VkCommandBuffer local_commandBuffer;
8482 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008483 uint32_t local_deviceMask;
8484 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008485 countingStream->rewind();
8486 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008487 uint64_t cgen_var_654;
8488 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_654, 1);
8489 countingStream->write((uint64_t*)&cgen_var_654, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008490 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008491 }
8492 uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8493 countingStream->rewind();
8494 uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask;
8495 stream->write(&opcode_vkCmdSetDeviceMask, sizeof(uint32_t));
8496 stream->write(&packetSize_vkCmdSetDeviceMask, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008497 uint64_t cgen_var_655;
8498 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_655, 1);
8499 stream->write((uint64_t*)&cgen_var_655, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008500 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008501}
8502
8503void VkEncoder::vkCmdDispatchBase(
8504 VkCommandBuffer commandBuffer,
8505 uint32_t baseGroupX,
8506 uint32_t baseGroupY,
8507 uint32_t baseGroupZ,
8508 uint32_t groupCountX,
8509 uint32_t groupCountY,
8510 uint32_t groupCountZ)
8511{
8512 auto stream = mImpl->stream();
8513 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008514 auto resources = mImpl->resources();
8515 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008516 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008517 VkCommandBuffer local_commandBuffer;
8518 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008519 uint32_t local_baseGroupX;
8520 local_baseGroupX = baseGroupX;
8521 uint32_t local_baseGroupY;
8522 local_baseGroupY = baseGroupY;
8523 uint32_t local_baseGroupZ;
8524 local_baseGroupZ = baseGroupZ;
8525 uint32_t local_groupCountX;
8526 local_groupCountX = groupCountX;
8527 uint32_t local_groupCountY;
8528 local_groupCountY = groupCountY;
8529 uint32_t local_groupCountZ;
8530 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008531 countingStream->rewind();
8532 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008533 uint64_t cgen_var_656;
8534 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_656, 1);
8535 countingStream->write((uint64_t*)&cgen_var_656, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008536 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
8537 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
8538 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
8539 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
8540 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
8541 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008542 }
8543 uint32_t packetSize_vkCmdDispatchBase = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8544 countingStream->rewind();
8545 uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase;
8546 stream->write(&opcode_vkCmdDispatchBase, sizeof(uint32_t));
8547 stream->write(&packetSize_vkCmdDispatchBase, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008548 uint64_t cgen_var_657;
8549 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_657, 1);
8550 stream->write((uint64_t*)&cgen_var_657, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008551 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
8552 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
8553 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
8554 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
8555 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
8556 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008557}
8558
8559VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups(
8560 VkInstance instance,
8561 uint32_t* pPhysicalDeviceGroupCount,
8562 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
8563{
8564 auto stream = mImpl->stream();
8565 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008566 auto resources = mImpl->resources();
8567 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008568 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008569 VkInstance local_instance;
8570 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008571 countingStream->rewind();
8572 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008573 uint64_t cgen_var_658;
8574 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_658, 1);
8575 countingStream->write((uint64_t*)&cgen_var_658, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008576 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008577 uint64_t cgen_var_659 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
8578 countingStream->putBe64(cgen_var_659);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008579 if (pPhysicalDeviceGroupCount)
8580 {
8581 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8582 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008583 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008584 uint64_t cgen_var_660 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
8585 countingStream->putBe64(cgen_var_660);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008586 if (pPhysicalDeviceGroupProperties)
8587 {
8588 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8589 {
8590 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8591 }
8592 }
8593 }
8594 uint32_t packetSize_vkEnumeratePhysicalDeviceGroups = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8595 countingStream->rewind();
8596 uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups;
8597 stream->write(&opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
8598 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008599 uint64_t cgen_var_661;
8600 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_661, 1);
8601 stream->write((uint64_t*)&cgen_var_661, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008602 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008603 uint64_t cgen_var_662 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
8604 stream->putBe64(cgen_var_662);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008605 if (pPhysicalDeviceGroupCount)
8606 {
8607 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8608 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008609 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008610 uint64_t cgen_var_663 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
8611 stream->putBe64(cgen_var_663);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008612 if (pPhysicalDeviceGroupProperties)
8613 {
8614 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8615 {
8616 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8617 }
8618 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008619 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008620 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008621 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008622 if (pPhysicalDeviceGroupCount)
8623 {
8624 if (!(check_pPhysicalDeviceGroupCount))
8625 {
8626 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
8627 }
8628 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8629 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008630 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008631 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008632 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008633 if (pPhysicalDeviceGroupProperties)
8634 {
8635 if (!(check_pPhysicalDeviceGroupProperties))
8636 {
8637 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
8638 }
8639 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8640 {
8641 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8642 }
8643 }
8644 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
8645 stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008646 countingStream->clearPool();
8647 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008648 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008649 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
8650}
8651
8652void VkEncoder::vkGetImageMemoryRequirements2(
8653 VkDevice device,
8654 const VkImageMemoryRequirementsInfo2* pInfo,
8655 VkMemoryRequirements2* pMemoryRequirements)
8656{
8657 auto stream = mImpl->stream();
8658 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008659 auto resources = mImpl->resources();
8660 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008661 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008662 VkDevice local_device;
8663 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008664 VkImageMemoryRequirementsInfo2* local_pInfo;
8665 local_pInfo = nullptr;
8666 if (pInfo)
8667 {
8668 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
8669 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
8670 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008671 countingStream->rewind();
8672 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008673 uint64_t cgen_var_666;
8674 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_666, 1);
8675 countingStream->write((uint64_t*)&cgen_var_666, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008676 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008677 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
8678 }
8679 uint32_t packetSize_vkGetImageMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8680 countingStream->rewind();
8681 uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2;
8682 stream->write(&opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t));
8683 stream->write(&packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008684 uint64_t cgen_var_667;
8685 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_667, 1);
8686 stream->write((uint64_t*)&cgen_var_667, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008687 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008688 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8689 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8690}
8691
8692void VkEncoder::vkGetBufferMemoryRequirements2(
8693 VkDevice device,
8694 const VkBufferMemoryRequirementsInfo2* pInfo,
8695 VkMemoryRequirements2* pMemoryRequirements)
8696{
8697 auto stream = mImpl->stream();
8698 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008699 auto resources = mImpl->resources();
8700 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008701 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008702 VkDevice local_device;
8703 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008704 VkBufferMemoryRequirementsInfo2* local_pInfo;
8705 local_pInfo = nullptr;
8706 if (pInfo)
8707 {
8708 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
8709 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
8710 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008711 countingStream->rewind();
8712 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008713 uint64_t cgen_var_668;
8714 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_668, 1);
8715 countingStream->write((uint64_t*)&cgen_var_668, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008716 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008717 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
8718 }
8719 uint32_t packetSize_vkGetBufferMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8720 countingStream->rewind();
8721 uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2;
8722 stream->write(&opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
8723 stream->write(&packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008724 uint64_t cgen_var_669;
8725 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_669, 1);
8726 stream->write((uint64_t*)&cgen_var_669, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008727 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008728 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8729 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8730}
8731
8732void VkEncoder::vkGetImageSparseMemoryRequirements2(
8733 VkDevice device,
8734 const VkImageSparseMemoryRequirementsInfo2* pInfo,
8735 uint32_t* pSparseMemoryRequirementCount,
8736 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
8737{
8738 auto stream = mImpl->stream();
8739 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008740 auto resources = mImpl->resources();
8741 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008742 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008743 VkDevice local_device;
8744 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008745 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
8746 local_pInfo = nullptr;
8747 if (pInfo)
8748 {
8749 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
8750 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
8751 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008752 countingStream->rewind();
8753 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008754 uint64_t cgen_var_670;
8755 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_670, 1);
8756 countingStream->write((uint64_t*)&cgen_var_670, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008757 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008758 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008759 uint64_t cgen_var_671 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
8760 countingStream->putBe64(cgen_var_671);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008761 if (pSparseMemoryRequirementCount)
8762 {
8763 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8764 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008765 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008766 uint64_t cgen_var_672 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
8767 countingStream->putBe64(cgen_var_672);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008768 if (pSparseMemoryRequirements)
8769 {
8770 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8771 {
8772 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8773 }
8774 }
8775 }
8776 uint32_t packetSize_vkGetImageSparseMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8777 countingStream->rewind();
8778 uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2;
8779 stream->write(&opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
8780 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008781 uint64_t cgen_var_673;
8782 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_673, 1);
8783 stream->write((uint64_t*)&cgen_var_673, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008784 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008785 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008786 uint64_t cgen_var_674 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
8787 stream->putBe64(cgen_var_674);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008788 if (pSparseMemoryRequirementCount)
8789 {
8790 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8791 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008792 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008793 uint64_t cgen_var_675 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
8794 stream->putBe64(cgen_var_675);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008795 if (pSparseMemoryRequirements)
8796 {
8797 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8798 {
8799 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8800 }
8801 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008802 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008803 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008804 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008805 if (pSparseMemoryRequirementCount)
8806 {
8807 if (!(check_pSparseMemoryRequirementCount))
8808 {
8809 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
8810 }
8811 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8812 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008813 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008814 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008815 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008816 if (pSparseMemoryRequirements)
8817 {
8818 if (!(check_pSparseMemoryRequirements))
8819 {
8820 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
8821 }
8822 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8823 {
8824 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8825 }
8826 }
8827}
8828
8829void VkEncoder::vkGetPhysicalDeviceFeatures2(
8830 VkPhysicalDevice physicalDevice,
8831 VkPhysicalDeviceFeatures2* pFeatures)
8832{
8833 auto stream = mImpl->stream();
8834 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008835 auto resources = mImpl->resources();
8836 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008837 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008838 VkPhysicalDevice local_physicalDevice;
8839 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008840 countingStream->rewind();
8841 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008842 uint64_t cgen_var_678;
8843 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_678, 1);
8844 countingStream->write((uint64_t*)&cgen_var_678, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008845 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8846 }
8847 uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8848 countingStream->rewind();
8849 uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2;
8850 stream->write(&opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
8851 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008852 uint64_t cgen_var_679;
8853 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_679, 1);
8854 stream->write((uint64_t*)&cgen_var_679, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008855 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8856 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8857}
8858
8859void VkEncoder::vkGetPhysicalDeviceProperties2(
8860 VkPhysicalDevice physicalDevice,
8861 VkPhysicalDeviceProperties2* pProperties)
8862{
Lingfeng Yang9d02e102018-11-10 01:51:46 -08008863 goldfish_vkGetPhysicalDeviceProperties2(physicalDevice, pProperties);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008864}
8865
8866void VkEncoder::vkGetPhysicalDeviceFormatProperties2(
8867 VkPhysicalDevice physicalDevice,
8868 VkFormat format,
8869 VkFormatProperties2* pFormatProperties)
8870{
8871 auto stream = mImpl->stream();
8872 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008873 auto resources = mImpl->resources();
8874 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008875 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008876 VkPhysicalDevice local_physicalDevice;
8877 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008878 VkFormat local_format;
8879 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008880 countingStream->rewind();
8881 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008882 uint64_t cgen_var_680;
8883 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_680, 1);
8884 countingStream->write((uint64_t*)&cgen_var_680, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008885 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008886 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
8887 }
8888 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8889 countingStream->rewind();
8890 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2;
8891 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
8892 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008893 uint64_t cgen_var_681;
8894 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_681, 1);
8895 stream->write((uint64_t*)&cgen_var_681, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008896 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008897 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
8898 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
8899}
8900
8901VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2(
8902 VkPhysicalDevice physicalDevice,
8903 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
8904 VkImageFormatProperties2* pImageFormatProperties)
8905{
8906 auto stream = mImpl->stream();
8907 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008908 auto resources = mImpl->resources();
8909 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008910 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008911 VkPhysicalDevice local_physicalDevice;
8912 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008913 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
8914 local_pImageFormatInfo = nullptr;
8915 if (pImageFormatInfo)
8916 {
8917 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
8918 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
8919 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008920 countingStream->rewind();
8921 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008922 uint64_t cgen_var_682;
8923 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_682, 1);
8924 countingStream->write((uint64_t*)&cgen_var_682, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008925 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008926 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
8927 }
8928 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8929 countingStream->rewind();
8930 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2;
8931 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
8932 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008933 uint64_t cgen_var_683;
8934 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_683, 1);
8935 stream->write((uint64_t*)&cgen_var_683, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008936 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008937 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
8938 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
8939 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
8940 stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008941 countingStream->clearPool();
8942 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008943 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008944 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
8945}
8946
8947void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2(
8948 VkPhysicalDevice physicalDevice,
8949 uint32_t* pQueueFamilyPropertyCount,
8950 VkQueueFamilyProperties2* pQueueFamilyProperties)
8951{
8952 auto stream = mImpl->stream();
8953 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008954 auto resources = mImpl->resources();
8955 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008956 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008957 VkPhysicalDevice local_physicalDevice;
8958 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008959 countingStream->rewind();
8960 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008961 uint64_t cgen_var_684;
8962 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_684, 1);
8963 countingStream->write((uint64_t*)&cgen_var_684, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008964 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008965 uint64_t cgen_var_685 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
8966 countingStream->putBe64(cgen_var_685);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008967 if (pQueueFamilyPropertyCount)
8968 {
8969 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
8970 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008971 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008972 uint64_t cgen_var_686 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
8973 countingStream->putBe64(cgen_var_686);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008974 if (pQueueFamilyProperties)
8975 {
8976 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
8977 {
8978 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
8979 }
8980 }
8981 }
8982 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8983 countingStream->rewind();
8984 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2;
8985 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
8986 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008987 uint64_t cgen_var_687;
8988 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_687, 1);
8989 stream->write((uint64_t*)&cgen_var_687, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008990 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008991 uint64_t cgen_var_688 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
8992 stream->putBe64(cgen_var_688);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008993 if (pQueueFamilyPropertyCount)
8994 {
8995 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
8996 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008997 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008998 uint64_t cgen_var_689 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
8999 stream->putBe64(cgen_var_689);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009000 if (pQueueFamilyProperties)
9001 {
9002 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9003 {
9004 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9005 }
9006 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009007 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009008 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009009 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009010 if (pQueueFamilyPropertyCount)
9011 {
9012 if (!(check_pQueueFamilyPropertyCount))
9013 {
9014 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
9015 }
9016 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9017 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009018 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009019 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009020 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009021 if (pQueueFamilyProperties)
9022 {
9023 if (!(check_pQueueFamilyProperties))
9024 {
9025 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
9026 }
9027 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9028 {
9029 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9030 }
9031 }
9032}
9033
9034void VkEncoder::vkGetPhysicalDeviceMemoryProperties2(
9035 VkPhysicalDevice physicalDevice,
9036 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
9037{
9038 auto stream = mImpl->stream();
9039 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009040 auto resources = mImpl->resources();
9041 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009042 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009043 VkPhysicalDevice local_physicalDevice;
9044 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009045 countingStream->rewind();
9046 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009047 uint64_t cgen_var_692;
9048 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_692, 1);
9049 countingStream->write((uint64_t*)&cgen_var_692, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009050 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9051 }
9052 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9053 countingStream->rewind();
9054 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2;
9055 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
9056 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009057 uint64_t cgen_var_693;
9058 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_693, 1);
9059 stream->write((uint64_t*)&cgen_var_693, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009060 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9061 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9062}
9063
9064void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2(
9065 VkPhysicalDevice physicalDevice,
9066 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
9067 uint32_t* pPropertyCount,
9068 VkSparseImageFormatProperties2* pProperties)
9069{
9070 auto stream = mImpl->stream();
9071 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009072 auto resources = mImpl->resources();
9073 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009074 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009075 VkPhysicalDevice local_physicalDevice;
9076 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009077 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
9078 local_pFormatInfo = nullptr;
9079 if (pFormatInfo)
9080 {
9081 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
9082 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
9083 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009084 countingStream->rewind();
9085 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009086 uint64_t cgen_var_694;
9087 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_694, 1);
9088 countingStream->write((uint64_t*)&cgen_var_694, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009089 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009090 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009091 uint64_t cgen_var_695 = (uint64_t)(uintptr_t)pPropertyCount;
9092 countingStream->putBe64(cgen_var_695);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009093 if (pPropertyCount)
9094 {
9095 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
9096 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009097 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009098 uint64_t cgen_var_696 = (uint64_t)(uintptr_t)pProperties;
9099 countingStream->putBe64(cgen_var_696);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009100 if (pProperties)
9101 {
9102 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9103 {
9104 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
9105 }
9106 }
9107 }
9108 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9109 countingStream->rewind();
9110 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2;
9111 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
9112 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009113 uint64_t cgen_var_697;
9114 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_697, 1);
9115 stream->write((uint64_t*)&cgen_var_697, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009116 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009117 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009118 uint64_t cgen_var_698 = (uint64_t)(uintptr_t)pPropertyCount;
9119 stream->putBe64(cgen_var_698);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009120 if (pPropertyCount)
9121 {
9122 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
9123 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009124 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009125 uint64_t cgen_var_699 = (uint64_t)(uintptr_t)pProperties;
9126 stream->putBe64(cgen_var_699);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009127 if (pProperties)
9128 {
9129 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9130 {
9131 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
9132 }
9133 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009134 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009135 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009136 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009137 if (pPropertyCount)
9138 {
9139 if (!(check_pPropertyCount))
9140 {
9141 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
9142 }
9143 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
9144 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009145 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009146 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009147 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009148 if (pProperties)
9149 {
9150 if (!(check_pProperties))
9151 {
9152 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
9153 }
9154 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9155 {
9156 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
9157 }
9158 }
9159}
9160
9161void VkEncoder::vkTrimCommandPool(
9162 VkDevice device,
9163 VkCommandPool commandPool,
9164 VkCommandPoolTrimFlags flags)
9165{
9166 auto stream = mImpl->stream();
9167 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009168 auto resources = mImpl->resources();
9169 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009170 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009171 VkDevice local_device;
9172 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009173 VkCommandPool local_commandPool;
9174 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009175 VkCommandPoolTrimFlags local_flags;
9176 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009177 countingStream->rewind();
9178 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009179 uint64_t cgen_var_702;
9180 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_702, 1);
9181 countingStream->write((uint64_t*)&cgen_var_702, 1 * 8);
9182 uint64_t cgen_var_703;
9183 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_703, 1);
9184 countingStream->write((uint64_t*)&cgen_var_703, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009185 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009186 }
9187 uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9188 countingStream->rewind();
9189 uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool;
9190 stream->write(&opcode_vkTrimCommandPool, sizeof(uint32_t));
9191 stream->write(&packetSize_vkTrimCommandPool, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009192 uint64_t cgen_var_704;
9193 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_704, 1);
9194 stream->write((uint64_t*)&cgen_var_704, 1 * 8);
9195 uint64_t cgen_var_705;
9196 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_705, 1);
9197 stream->write((uint64_t*)&cgen_var_705, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009198 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009199}
9200
9201void VkEncoder::vkGetDeviceQueue2(
9202 VkDevice device,
9203 const VkDeviceQueueInfo2* pQueueInfo,
9204 VkQueue* pQueue)
9205{
9206 auto stream = mImpl->stream();
9207 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009208 auto resources = mImpl->resources();
9209 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009210 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009211 VkDevice local_device;
9212 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009213 VkDeviceQueueInfo2* local_pQueueInfo;
9214 local_pQueueInfo = nullptr;
9215 if (pQueueInfo)
9216 {
9217 local_pQueueInfo = (VkDeviceQueueInfo2*)pool->alloc(sizeof(const VkDeviceQueueInfo2));
9218 deepcopy_VkDeviceQueueInfo2(pool, pQueueInfo, (VkDeviceQueueInfo2*)(local_pQueueInfo));
9219 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009220 countingStream->rewind();
9221 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009222 uint64_t cgen_var_706;
9223 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_706, 1);
9224 countingStream->write((uint64_t*)&cgen_var_706, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009225 marshal_VkDeviceQueueInfo2(countingStream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009226 uint64_t cgen_var_707;
9227 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_707, 1);
9228 countingStream->write((uint64_t*)&cgen_var_707, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009229 }
9230 uint32_t packetSize_vkGetDeviceQueue2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9231 countingStream->rewind();
9232 uint32_t opcode_vkGetDeviceQueue2 = OP_vkGetDeviceQueue2;
9233 stream->write(&opcode_vkGetDeviceQueue2, sizeof(uint32_t));
9234 stream->write(&packetSize_vkGetDeviceQueue2, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009235 uint64_t cgen_var_708;
9236 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_708, 1);
9237 stream->write((uint64_t*)&cgen_var_708, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009238 marshal_VkDeviceQueueInfo2(stream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08009239 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009240 uint64_t cgen_var_709;
9241 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_709, 1);
9242 stream->write((uint64_t*)&cgen_var_709, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009243 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009244 uint64_t cgen_var_710;
9245 stream->read((uint64_t*)&cgen_var_710, 8);
9246 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_710, (VkQueue*)pQueue, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009247}
9248
9249VkResult VkEncoder::vkCreateSamplerYcbcrConversion(
9250 VkDevice device,
9251 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
9252 const VkAllocationCallbacks* pAllocator,
9253 VkSamplerYcbcrConversion* pYcbcrConversion)
9254{
9255 auto stream = mImpl->stream();
9256 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009257 auto resources = mImpl->resources();
9258 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009259 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009260 VkDevice local_device;
9261 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009262 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
9263 local_pCreateInfo = nullptr;
9264 if (pCreateInfo)
9265 {
9266 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
9267 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
9268 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009269 VkAllocationCallbacks* local_pAllocator;
9270 local_pAllocator = nullptr;
9271 if (pAllocator)
9272 {
9273 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9274 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9275 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009276 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009277 countingStream->rewind();
9278 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009279 uint64_t cgen_var_711;
9280 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_711, 1);
9281 countingStream->write((uint64_t*)&cgen_var_711, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009282 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009283 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009284 uint64_t cgen_var_712 = (uint64_t)(uintptr_t)local_pAllocator;
9285 countingStream->putBe64(cgen_var_712);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009286 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009287 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009288 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009289 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009290 uint64_t cgen_var_713;
9291 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_713, 1);
9292 countingStream->write((uint64_t*)&cgen_var_713, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009293 }
9294 uint32_t packetSize_vkCreateSamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9295 countingStream->rewind();
9296 uint32_t opcode_vkCreateSamplerYcbcrConversion = OP_vkCreateSamplerYcbcrConversion;
9297 stream->write(&opcode_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
9298 stream->write(&packetSize_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009299 uint64_t cgen_var_714;
9300 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_714, 1);
9301 stream->write((uint64_t*)&cgen_var_714, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009302 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009303 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009304 uint64_t cgen_var_715 = (uint64_t)(uintptr_t)local_pAllocator;
9305 stream->putBe64(cgen_var_715);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009306 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009307 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009308 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009309 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08009310 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009311 uint64_t cgen_var_716;
9312 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_716, 1);
9313 stream->write((uint64_t*)&cgen_var_716, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009314 stream->setHandleMapping(resources->unwrapMapping());
9315 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009316 uint64_t cgen_var_717;
9317 stream->read((uint64_t*)&cgen_var_717, 8);
9318 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_717, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009319 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009320 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
9321 stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009322 countingStream->clearPool();
9323 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009324 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009325 return vkCreateSamplerYcbcrConversion_VkResult_return;
9326}
9327
9328void VkEncoder::vkDestroySamplerYcbcrConversion(
9329 VkDevice device,
9330 VkSamplerYcbcrConversion ycbcrConversion,
9331 const VkAllocationCallbacks* pAllocator)
9332{
9333 auto stream = mImpl->stream();
9334 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009335 auto resources = mImpl->resources();
9336 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009337 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009338 VkDevice local_device;
9339 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009340 VkSamplerYcbcrConversion local_ycbcrConversion;
9341 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009342 VkAllocationCallbacks* local_pAllocator;
9343 local_pAllocator = nullptr;
9344 if (pAllocator)
9345 {
9346 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9347 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9348 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009349 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009350 countingStream->rewind();
9351 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009352 uint64_t cgen_var_718;
9353 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_718, 1);
9354 countingStream->write((uint64_t*)&cgen_var_718, 1 * 8);
9355 uint64_t cgen_var_719;
9356 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_719, 1);
9357 countingStream->write((uint64_t*)&cgen_var_719, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009358 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009359 uint64_t cgen_var_720 = (uint64_t)(uintptr_t)local_pAllocator;
9360 countingStream->putBe64(cgen_var_720);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009361 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009362 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009363 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009364 }
9365 }
9366 uint32_t packetSize_vkDestroySamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9367 countingStream->rewind();
9368 uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion;
9369 stream->write(&opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
9370 stream->write(&packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009371 uint64_t cgen_var_721;
9372 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_721, 1);
9373 stream->write((uint64_t*)&cgen_var_721, 1 * 8);
9374 uint64_t cgen_var_722;
9375 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_722, 1);
9376 stream->write((uint64_t*)&cgen_var_722, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009377 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009378 uint64_t cgen_var_723 = (uint64_t)(uintptr_t)local_pAllocator;
9379 stream->putBe64(cgen_var_723);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009380 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009381 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009382 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009383 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009384 resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009385}
9386
9387VkResult VkEncoder::vkCreateDescriptorUpdateTemplate(
9388 VkDevice device,
9389 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
9390 const VkAllocationCallbacks* pAllocator,
9391 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
9392{
9393 auto stream = mImpl->stream();
9394 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009395 auto resources = mImpl->resources();
9396 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009397 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009398 VkDevice local_device;
9399 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009400 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
9401 local_pCreateInfo = nullptr;
9402 if (pCreateInfo)
9403 {
9404 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
9405 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
9406 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009407 VkAllocationCallbacks* local_pAllocator;
9408 local_pAllocator = nullptr;
9409 if (pAllocator)
9410 {
9411 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9412 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9413 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009414 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009415 countingStream->rewind();
9416 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009417 uint64_t cgen_var_724;
9418 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_724, 1);
9419 countingStream->write((uint64_t*)&cgen_var_724, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009420 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009421 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009422 uint64_t cgen_var_725 = (uint64_t)(uintptr_t)local_pAllocator;
9423 countingStream->putBe64(cgen_var_725);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009424 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009425 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009426 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009427 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009428 uint64_t cgen_var_726;
9429 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_726, 1);
9430 countingStream->write((uint64_t*)&cgen_var_726, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009431 }
9432 uint32_t packetSize_vkCreateDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9433 countingStream->rewind();
9434 uint32_t opcode_vkCreateDescriptorUpdateTemplate = OP_vkCreateDescriptorUpdateTemplate;
9435 stream->write(&opcode_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
9436 stream->write(&packetSize_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009437 uint64_t cgen_var_727;
9438 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_727, 1);
9439 stream->write((uint64_t*)&cgen_var_727, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009440 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009441 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009442 uint64_t cgen_var_728 = (uint64_t)(uintptr_t)local_pAllocator;
9443 stream->putBe64(cgen_var_728);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009444 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009445 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009446 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009447 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08009448 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009449 uint64_t cgen_var_729;
9450 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_729, 1);
9451 stream->write((uint64_t*)&cgen_var_729, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009452 stream->setHandleMapping(resources->unwrapMapping());
9453 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009454 uint64_t cgen_var_730;
9455 stream->read((uint64_t*)&cgen_var_730, 8);
9456 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_730, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009457 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009458 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
9459 stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009460 countingStream->clearPool();
9461 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009462 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009463 return vkCreateDescriptorUpdateTemplate_VkResult_return;
9464}
9465
9466void VkEncoder::vkDestroyDescriptorUpdateTemplate(
9467 VkDevice device,
9468 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
9469 const VkAllocationCallbacks* pAllocator)
9470{
9471 auto stream = mImpl->stream();
9472 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009473 auto resources = mImpl->resources();
9474 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009475 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009476 VkDevice local_device;
9477 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009478 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
9479 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009480 VkAllocationCallbacks* local_pAllocator;
9481 local_pAllocator = nullptr;
9482 if (pAllocator)
9483 {
9484 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9485 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9486 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009487 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009488 countingStream->rewind();
9489 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009490 uint64_t cgen_var_731;
9491 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_731, 1);
9492 countingStream->write((uint64_t*)&cgen_var_731, 1 * 8);
9493 uint64_t cgen_var_732;
9494 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_732, 1);
9495 countingStream->write((uint64_t*)&cgen_var_732, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009496 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009497 uint64_t cgen_var_733 = (uint64_t)(uintptr_t)local_pAllocator;
9498 countingStream->putBe64(cgen_var_733);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009499 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009500 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009501 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009502 }
9503 }
9504 uint32_t packetSize_vkDestroyDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9505 countingStream->rewind();
9506 uint32_t opcode_vkDestroyDescriptorUpdateTemplate = OP_vkDestroyDescriptorUpdateTemplate;
9507 stream->write(&opcode_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
9508 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009509 uint64_t cgen_var_734;
9510 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_734, 1);
9511 stream->write((uint64_t*)&cgen_var_734, 1 * 8);
9512 uint64_t cgen_var_735;
9513 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_735, 1);
9514 stream->write((uint64_t*)&cgen_var_735, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009515 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009516 uint64_t cgen_var_736 = (uint64_t)(uintptr_t)local_pAllocator;
9517 stream->putBe64(cgen_var_736);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009518 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009519 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009520 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009521 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009522 resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009523}
9524
9525void VkEncoder::vkUpdateDescriptorSetWithTemplate(
9526 VkDevice device,
9527 VkDescriptorSet descriptorSet,
9528 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
9529 const void* pData)
9530{
9531 auto stream = mImpl->stream();
9532 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009533 auto resources = mImpl->resources();
9534 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009535 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009536 VkDevice local_device;
9537 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009538 VkDescriptorSet local_descriptorSet;
9539 local_descriptorSet = descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009540 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
9541 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009542 void* local_pData;
9543 local_pData = nullptr;
9544 if (pData)
9545 {
9546 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
9547 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009548 countingStream->rewind();
9549 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08009550 uint64_t cgen_var_737;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009551 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_737, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009552 countingStream->write((uint64_t*)&cgen_var_737, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009553 uint64_t cgen_var_738;
9554 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_738, 1);
9555 countingStream->write((uint64_t*)&cgen_var_738, 1 * 8);
9556 uint64_t cgen_var_739;
9557 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_739, 1);
9558 countingStream->write((uint64_t*)&cgen_var_739, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009559 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009560 uint64_t cgen_var_740 = (uint64_t)(uintptr_t)local_pData;
9561 countingStream->putBe64(cgen_var_740);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009562 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009563 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009564 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009565 }
9566 }
9567 uint32_t packetSize_vkUpdateDescriptorSetWithTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9568 countingStream->rewind();
9569 uint32_t opcode_vkUpdateDescriptorSetWithTemplate = OP_vkUpdateDescriptorSetWithTemplate;
9570 stream->write(&opcode_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
9571 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009572 uint64_t cgen_var_741;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009573 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_741, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009574 stream->write((uint64_t*)&cgen_var_741, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009575 uint64_t cgen_var_742;
9576 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_742, 1);
9577 stream->write((uint64_t*)&cgen_var_742, 1 * 8);
9578 uint64_t cgen_var_743;
9579 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_743, 1);
9580 stream->write((uint64_t*)&cgen_var_743, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009581 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009582 uint64_t cgen_var_744 = (uint64_t)(uintptr_t)local_pData;
9583 stream->putBe64(cgen_var_744);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009584 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009585 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009586 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009587 }
9588}
9589
9590void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties(
9591 VkPhysicalDevice physicalDevice,
9592 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
9593 VkExternalBufferProperties* pExternalBufferProperties)
9594{
9595 auto stream = mImpl->stream();
9596 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009597 auto resources = mImpl->resources();
9598 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009599 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009600 VkPhysicalDevice local_physicalDevice;
9601 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009602 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
9603 local_pExternalBufferInfo = nullptr;
9604 if (pExternalBufferInfo)
9605 {
9606 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
9607 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
9608 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009609 countingStream->rewind();
9610 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009611 uint64_t cgen_var_745;
9612 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_745, 1);
9613 countingStream->write((uint64_t*)&cgen_var_745, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009614 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009615 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9616 }
9617 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9618 countingStream->rewind();
9619 uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties;
9620 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
9621 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009622 uint64_t cgen_var_746;
9623 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_746, 1);
9624 stream->write((uint64_t*)&cgen_var_746, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009625 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009626 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9627 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9628}
9629
9630void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties(
9631 VkPhysicalDevice physicalDevice,
9632 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
9633 VkExternalFenceProperties* pExternalFenceProperties)
9634{
9635 auto stream = mImpl->stream();
9636 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009637 auto resources = mImpl->resources();
9638 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009639 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009640 VkPhysicalDevice local_physicalDevice;
9641 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009642 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
9643 local_pExternalFenceInfo = nullptr;
9644 if (pExternalFenceInfo)
9645 {
9646 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
9647 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
9648 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009649 countingStream->rewind();
9650 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009651 uint64_t cgen_var_747;
9652 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_747, 1);
9653 countingStream->write((uint64_t*)&cgen_var_747, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009654 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009655 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9656 }
9657 uint32_t packetSize_vkGetPhysicalDeviceExternalFenceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9658 countingStream->rewind();
9659 uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties;
9660 stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
9661 stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009662 uint64_t cgen_var_748;
9663 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_748, 1);
9664 stream->write((uint64_t*)&cgen_var_748, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009665 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009666 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9667 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9668}
9669
9670void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties(
9671 VkPhysicalDevice physicalDevice,
9672 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
9673 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
9674{
9675 auto stream = mImpl->stream();
9676 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009677 auto resources = mImpl->resources();
9678 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009679 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009680 VkPhysicalDevice local_physicalDevice;
9681 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009682 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
9683 local_pExternalSemaphoreInfo = nullptr;
9684 if (pExternalSemaphoreInfo)
9685 {
9686 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
9687 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
9688 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009689 countingStream->rewind();
9690 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009691 uint64_t cgen_var_749;
9692 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_749, 1);
9693 countingStream->write((uint64_t*)&cgen_var_749, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009694 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009695 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9696 }
9697 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9698 countingStream->rewind();
9699 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
9700 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
9701 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009702 uint64_t cgen_var_750;
9703 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_750, 1);
9704 stream->write((uint64_t*)&cgen_var_750, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009705 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009706 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9707 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9708}
9709
9710void VkEncoder::vkGetDescriptorSetLayoutSupport(
9711 VkDevice device,
9712 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
9713 VkDescriptorSetLayoutSupport* pSupport)
9714{
9715 auto stream = mImpl->stream();
9716 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009717 auto resources = mImpl->resources();
9718 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009719 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009720 VkDevice local_device;
9721 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009722 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
9723 local_pCreateInfo = nullptr;
9724 if (pCreateInfo)
9725 {
9726 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
9727 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
9728 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009729 countingStream->rewind();
9730 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009731 uint64_t cgen_var_751;
9732 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_751, 1);
9733 countingStream->write((uint64_t*)&cgen_var_751, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009734 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009735 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
9736 }
9737 uint32_t packetSize_vkGetDescriptorSetLayoutSupport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9738 countingStream->rewind();
9739 uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport;
9740 stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
9741 stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009742 uint64_t cgen_var_752;
9743 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_752, 1);
9744 stream->write((uint64_t*)&cgen_var_752, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009745 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009746 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
9747 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
9748}
9749
9750#endif
9751#ifdef VK_KHR_surface
9752void VkEncoder::vkDestroySurfaceKHR(
9753 VkInstance instance,
9754 VkSurfaceKHR surface,
9755 const VkAllocationCallbacks* pAllocator)
9756{
9757 auto stream = mImpl->stream();
9758 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009759 auto resources = mImpl->resources();
9760 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009761 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009762 VkInstance local_instance;
9763 local_instance = instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009764 VkSurfaceKHR local_surface;
9765 local_surface = surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009766 VkAllocationCallbacks* local_pAllocator;
9767 local_pAllocator = nullptr;
9768 if (pAllocator)
9769 {
9770 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9771 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9772 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009773 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009774 countingStream->rewind();
9775 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009776 uint64_t cgen_var_753;
9777 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_753, 1);
9778 countingStream->write((uint64_t*)&cgen_var_753, 1 * 8);
9779 uint64_t cgen_var_754;
9780 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_754, 1);
9781 countingStream->write((uint64_t*)&cgen_var_754, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009782 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009783 uint64_t cgen_var_755 = (uint64_t)(uintptr_t)local_pAllocator;
9784 countingStream->putBe64(cgen_var_755);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009785 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009786 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009787 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009788 }
9789 }
9790 uint32_t packetSize_vkDestroySurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9791 countingStream->rewind();
9792 uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR;
9793 stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t));
9794 stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009795 uint64_t cgen_var_756;
9796 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_756, 1);
9797 stream->write((uint64_t*)&cgen_var_756, 1 * 8);
9798 uint64_t cgen_var_757;
9799 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_757, 1);
9800 stream->write((uint64_t*)&cgen_var_757, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009801 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009802 uint64_t cgen_var_758 = (uint64_t)(uintptr_t)local_pAllocator;
9803 stream->putBe64(cgen_var_758);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009804 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009805 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009806 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009807 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009808 resources->destroyMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&surface);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009809}
9810
9811VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR(
9812 VkPhysicalDevice physicalDevice,
9813 uint32_t queueFamilyIndex,
9814 VkSurfaceKHR surface,
9815 VkBool32* pSupported)
9816{
9817 auto stream = mImpl->stream();
9818 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009819 auto resources = mImpl->resources();
9820 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009821 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009822 VkPhysicalDevice local_physicalDevice;
9823 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009824 uint32_t local_queueFamilyIndex;
9825 local_queueFamilyIndex = queueFamilyIndex;
9826 VkSurfaceKHR local_surface;
9827 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009828 countingStream->rewind();
9829 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009830 uint64_t cgen_var_759;
9831 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_759, 1);
9832 countingStream->write((uint64_t*)&cgen_var_759, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009833 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009834 uint64_t cgen_var_760;
9835 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_760, 1);
9836 countingStream->write((uint64_t*)&cgen_var_760, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009837 countingStream->write((VkBool32*)pSupported, sizeof(VkBool32));
9838 }
9839 uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9840 countingStream->rewind();
9841 uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
9842 stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
9843 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009844 uint64_t cgen_var_761;
9845 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_761, 1);
9846 stream->write((uint64_t*)&cgen_var_761, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009847 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009848 uint64_t cgen_var_762;
9849 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_762, 1);
9850 stream->write((uint64_t*)&cgen_var_762, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009851 stream->write((VkBool32*)pSupported, sizeof(VkBool32));
9852 stream->read((VkBool32*)pSupported, sizeof(VkBool32));
9853 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
9854 stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009855 countingStream->clearPool();
9856 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009857 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009858 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
9859}
9860
9861VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
9862 VkPhysicalDevice physicalDevice,
9863 VkSurfaceKHR surface,
9864 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
9865{
9866 auto stream = mImpl->stream();
9867 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009868 auto resources = mImpl->resources();
9869 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009870 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009871 VkPhysicalDevice local_physicalDevice;
9872 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009873 VkSurfaceKHR local_surface;
9874 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009875 countingStream->rewind();
9876 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009877 uint64_t cgen_var_763;
9878 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_763, 1);
9879 countingStream->write((uint64_t*)&cgen_var_763, 1 * 8);
9880 uint64_t cgen_var_764;
9881 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_764, 1);
9882 countingStream->write((uint64_t*)&cgen_var_764, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009883 marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9884 }
9885 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9886 countingStream->rewind();
9887 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
9888 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
9889 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009890 uint64_t cgen_var_765;
9891 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_765, 1);
9892 stream->write((uint64_t*)&cgen_var_765, 1 * 8);
9893 uint64_t cgen_var_766;
9894 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_766, 1);
9895 stream->write((uint64_t*)&cgen_var_766, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009896 marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9897 unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9898 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
9899 stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009900 countingStream->clearPool();
9901 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009902 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009903 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
9904}
9905
9906VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR(
9907 VkPhysicalDevice physicalDevice,
9908 VkSurfaceKHR surface,
9909 uint32_t* pSurfaceFormatCount,
9910 VkSurfaceFormatKHR* pSurfaceFormats)
9911{
9912 auto stream = mImpl->stream();
9913 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009914 auto resources = mImpl->resources();
9915 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009916 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009917 VkPhysicalDevice local_physicalDevice;
9918 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009919 VkSurfaceKHR local_surface;
9920 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009921 countingStream->rewind();
9922 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009923 uint64_t cgen_var_767;
9924 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_767, 1);
9925 countingStream->write((uint64_t*)&cgen_var_767, 1 * 8);
9926 uint64_t cgen_var_768;
9927 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_768, 1);
9928 countingStream->write((uint64_t*)&cgen_var_768, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009929 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009930 uint64_t cgen_var_769 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
9931 countingStream->putBe64(cgen_var_769);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009932 if (pSurfaceFormatCount)
9933 {
9934 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
9935 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009936 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009937 uint64_t cgen_var_770 = (uint64_t)(uintptr_t)pSurfaceFormats;
9938 countingStream->putBe64(cgen_var_770);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009939 if (pSurfaceFormats)
9940 {
9941 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
9942 {
9943 marshal_VkSurfaceFormatKHR(countingStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
9944 }
9945 }
9946 }
9947 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9948 countingStream->rewind();
9949 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
9950 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
9951 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009952 uint64_t cgen_var_771;
9953 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_771, 1);
9954 stream->write((uint64_t*)&cgen_var_771, 1 * 8);
9955 uint64_t cgen_var_772;
9956 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_772, 1);
9957 stream->write((uint64_t*)&cgen_var_772, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009958 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009959 uint64_t cgen_var_773 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
9960 stream->putBe64(cgen_var_773);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009961 if (pSurfaceFormatCount)
9962 {
9963 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
9964 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009965 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08009966 uint64_t cgen_var_774 = (uint64_t)(uintptr_t)pSurfaceFormats;
9967 stream->putBe64(cgen_var_774);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009968 if (pSurfaceFormats)
9969 {
9970 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
9971 {
9972 marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
9973 }
9974 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009975 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009976 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009977 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009978 if (pSurfaceFormatCount)
9979 {
9980 if (!(check_pSurfaceFormatCount))
9981 {
9982 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
9983 }
9984 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
9985 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009986 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009987 VkSurfaceFormatKHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009988 check_pSurfaceFormats = (VkSurfaceFormatKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009989 if (pSurfaceFormats)
9990 {
9991 if (!(check_pSurfaceFormats))
9992 {
9993 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
9994 }
9995 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
9996 {
9997 unmarshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
9998 }
9999 }
10000 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
10001 stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010002 countingStream->clearPool();
10003 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010004 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010005 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
10006}
10007
10008VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR(
10009 VkPhysicalDevice physicalDevice,
10010 VkSurfaceKHR surface,
10011 uint32_t* pPresentModeCount,
10012 VkPresentModeKHR* pPresentModes)
10013{
10014 auto stream = mImpl->stream();
10015 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010016 auto resources = mImpl->resources();
10017 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010018 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010019 VkPhysicalDevice local_physicalDevice;
10020 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010021 VkSurfaceKHR local_surface;
10022 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010023 countingStream->rewind();
10024 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010025 uint64_t cgen_var_777;
10026 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_777, 1);
10027 countingStream->write((uint64_t*)&cgen_var_777, 1 * 8);
10028 uint64_t cgen_var_778;
10029 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_778, 1);
10030 countingStream->write((uint64_t*)&cgen_var_778, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010031 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010032 uint64_t cgen_var_779 = (uint64_t)(uintptr_t)pPresentModeCount;
10033 countingStream->putBe64(cgen_var_779);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010034 if (pPresentModeCount)
10035 {
10036 countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10037 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010038 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010039 uint64_t cgen_var_780 = (uint64_t)(uintptr_t)pPresentModes;
10040 countingStream->putBe64(cgen_var_780);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010041 if (pPresentModes)
10042 {
10043 countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10044 }
10045 }
10046 uint32_t packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10047 countingStream->rewind();
10048 uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
10049 stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
10050 stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010051 uint64_t cgen_var_781;
10052 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_781, 1);
10053 stream->write((uint64_t*)&cgen_var_781, 1 * 8);
10054 uint64_t cgen_var_782;
10055 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_782, 1);
10056 stream->write((uint64_t*)&cgen_var_782, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010057 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010058 uint64_t cgen_var_783 = (uint64_t)(uintptr_t)pPresentModeCount;
10059 stream->putBe64(cgen_var_783);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010060 if (pPresentModeCount)
10061 {
10062 stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10063 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010064 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010065 uint64_t cgen_var_784 = (uint64_t)(uintptr_t)pPresentModes;
10066 stream->putBe64(cgen_var_784);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010067 if (pPresentModes)
10068 {
10069 stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10070 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010071 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010072 uint32_t* check_pPresentModeCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010073 check_pPresentModeCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010074 if (pPresentModeCount)
10075 {
10076 if (!(check_pPresentModeCount))
10077 {
10078 fprintf(stderr, "fatal: pPresentModeCount inconsistent between guest and host\n");
10079 }
10080 stream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10081 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010082 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010083 VkPresentModeKHR* check_pPresentModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010084 check_pPresentModes = (VkPresentModeKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010085 if (pPresentModes)
10086 {
10087 if (!(check_pPresentModes))
10088 {
10089 fprintf(stderr, "fatal: pPresentModes inconsistent between guest and host\n");
10090 }
10091 stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10092 }
10093 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
10094 stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010095 countingStream->clearPool();
10096 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010097 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010098 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
10099}
10100
10101#endif
10102#ifdef VK_KHR_swapchain
10103VkResult VkEncoder::vkCreateSwapchainKHR(
10104 VkDevice device,
10105 const VkSwapchainCreateInfoKHR* pCreateInfo,
10106 const VkAllocationCallbacks* pAllocator,
10107 VkSwapchainKHR* pSwapchain)
10108{
10109 auto stream = mImpl->stream();
10110 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010111 auto resources = mImpl->resources();
10112 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010113 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010114 VkDevice local_device;
10115 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010116 VkSwapchainCreateInfoKHR* local_pCreateInfo;
10117 local_pCreateInfo = nullptr;
10118 if (pCreateInfo)
10119 {
10120 local_pCreateInfo = (VkSwapchainCreateInfoKHR*)pool->alloc(sizeof(const VkSwapchainCreateInfoKHR));
10121 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfo, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
10122 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010123 VkAllocationCallbacks* local_pAllocator;
10124 local_pAllocator = nullptr;
10125 if (pAllocator)
10126 {
10127 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10128 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10129 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010130 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010131 countingStream->rewind();
10132 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010133 uint64_t cgen_var_787;
10134 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_787, 1);
10135 countingStream->write((uint64_t*)&cgen_var_787, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010136 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010137 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010138 uint64_t cgen_var_788 = (uint64_t)(uintptr_t)local_pAllocator;
10139 countingStream->putBe64(cgen_var_788);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010140 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010141 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010142 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010143 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010144 uint64_t cgen_var_789;
10145 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_789, 1);
10146 countingStream->write((uint64_t*)&cgen_var_789, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010147 }
10148 uint32_t packetSize_vkCreateSwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10149 countingStream->rewind();
10150 uint32_t opcode_vkCreateSwapchainKHR = OP_vkCreateSwapchainKHR;
10151 stream->write(&opcode_vkCreateSwapchainKHR, sizeof(uint32_t));
10152 stream->write(&packetSize_vkCreateSwapchainKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010153 uint64_t cgen_var_790;
10154 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_790, 1);
10155 stream->write((uint64_t*)&cgen_var_790, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010156 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010157 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010158 uint64_t cgen_var_791 = (uint64_t)(uintptr_t)local_pAllocator;
10159 stream->putBe64(cgen_var_791);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010160 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010161 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010162 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010163 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010164 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010165 uint64_t cgen_var_792;
10166 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_792, 1);
10167 stream->write((uint64_t*)&cgen_var_792, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010168 stream->setHandleMapping(resources->unwrapMapping());
10169 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010170 uint64_t cgen_var_793;
10171 stream->read((uint64_t*)&cgen_var_793, 8);
10172 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_793, (VkSwapchainKHR*)pSwapchain, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010173 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010174 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
10175 stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010176 countingStream->clearPool();
10177 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010178 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010179 return vkCreateSwapchainKHR_VkResult_return;
10180}
10181
10182void VkEncoder::vkDestroySwapchainKHR(
10183 VkDevice device,
10184 VkSwapchainKHR swapchain,
10185 const VkAllocationCallbacks* pAllocator)
10186{
10187 auto stream = mImpl->stream();
10188 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010189 auto resources = mImpl->resources();
10190 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010191 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010192 VkDevice local_device;
10193 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010194 VkSwapchainKHR local_swapchain;
10195 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010196 VkAllocationCallbacks* local_pAllocator;
10197 local_pAllocator = nullptr;
10198 if (pAllocator)
10199 {
10200 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10201 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10202 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010203 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010204 countingStream->rewind();
10205 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010206 uint64_t cgen_var_794;
10207 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_794, 1);
10208 countingStream->write((uint64_t*)&cgen_var_794, 1 * 8);
10209 uint64_t cgen_var_795;
10210 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_795, 1);
10211 countingStream->write((uint64_t*)&cgen_var_795, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010212 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010213 uint64_t cgen_var_796 = (uint64_t)(uintptr_t)local_pAllocator;
10214 countingStream->putBe64(cgen_var_796);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010215 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010216 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010217 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010218 }
10219 }
10220 uint32_t packetSize_vkDestroySwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10221 countingStream->rewind();
10222 uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR;
10223 stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t));
10224 stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010225 uint64_t cgen_var_797;
10226 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_797, 1);
10227 stream->write((uint64_t*)&cgen_var_797, 1 * 8);
10228 uint64_t cgen_var_798;
10229 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_798, 1);
10230 stream->write((uint64_t*)&cgen_var_798, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010231 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010232 uint64_t cgen_var_799 = (uint64_t)(uintptr_t)local_pAllocator;
10233 stream->putBe64(cgen_var_799);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010234 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010235 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010236 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010237 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010238 resources->destroyMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&swapchain);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010239}
10240
10241VkResult VkEncoder::vkGetSwapchainImagesKHR(
10242 VkDevice device,
10243 VkSwapchainKHR swapchain,
10244 uint32_t* pSwapchainImageCount,
10245 VkImage* pSwapchainImages)
10246{
10247 auto stream = mImpl->stream();
10248 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010249 auto resources = mImpl->resources();
10250 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010251 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010252 VkDevice local_device;
10253 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010254 VkSwapchainKHR local_swapchain;
10255 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010256 countingStream->rewind();
10257 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010258 uint64_t cgen_var_800;
10259 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_800, 1);
10260 countingStream->write((uint64_t*)&cgen_var_800, 1 * 8);
10261 uint64_t cgen_var_801;
10262 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_801, 1);
10263 countingStream->write((uint64_t*)&cgen_var_801, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010264 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010265 uint64_t cgen_var_802 = (uint64_t)(uintptr_t)pSwapchainImageCount;
10266 countingStream->putBe64(cgen_var_802);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010267 if (pSwapchainImageCount)
10268 {
10269 countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10270 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010271 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010272 uint64_t cgen_var_803 = (uint64_t)(uintptr_t)pSwapchainImages;
10273 countingStream->putBe64(cgen_var_803);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010274 if (pSwapchainImages)
10275 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010276 if ((*(pSwapchainImageCount)))
10277 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010278 uint64_t* cgen_var_804;
10279 countingStream->alloc((void**)&cgen_var_804, (*(pSwapchainImageCount)) * 8);
10280 countingStream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_804, (*(pSwapchainImageCount)));
10281 countingStream->write((uint64_t*)cgen_var_804, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010282 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010283 }
10284 }
10285 uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10286 countingStream->rewind();
10287 uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR;
10288 stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t));
10289 stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010290 uint64_t cgen_var_805;
10291 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_805, 1);
10292 stream->write((uint64_t*)&cgen_var_805, 1 * 8);
10293 uint64_t cgen_var_806;
10294 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_806, 1);
10295 stream->write((uint64_t*)&cgen_var_806, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010296 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010297 uint64_t cgen_var_807 = (uint64_t)(uintptr_t)pSwapchainImageCount;
10298 stream->putBe64(cgen_var_807);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010299 if (pSwapchainImageCount)
10300 {
10301 stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10302 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010303 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010304 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010305 uint64_t cgen_var_808 = (uint64_t)(uintptr_t)pSwapchainImages;
10306 stream->putBe64(cgen_var_808);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010307 if (pSwapchainImages)
10308 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010309 if ((*(pSwapchainImageCount)))
10310 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010311 uint64_t* cgen_var_809;
10312 stream->alloc((void**)&cgen_var_809, (*(pSwapchainImageCount)) * 8);
10313 stream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_809, (*(pSwapchainImageCount)));
10314 stream->write((uint64_t*)cgen_var_809, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010315 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010316 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010317 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010318 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010319 uint32_t* check_pSwapchainImageCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010320 check_pSwapchainImageCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010321 if (pSwapchainImageCount)
10322 {
10323 if (!(check_pSwapchainImageCount))
10324 {
10325 fprintf(stderr, "fatal: pSwapchainImageCount inconsistent between guest and host\n");
10326 }
10327 stream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10328 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010329 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010330 VkImage* check_pSwapchainImages;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010331 check_pSwapchainImages = (VkImage*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010332 if (pSwapchainImages)
10333 {
10334 if (!(check_pSwapchainImages))
10335 {
10336 fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n");
10337 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080010338 if ((*(pSwapchainImageCount)))
10339 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010340 uint64_t* cgen_var_812;
10341 stream->alloc((void**)&cgen_var_812, (*(pSwapchainImageCount)) * 8);
10342 stream->read((uint64_t*)cgen_var_812, (*(pSwapchainImageCount)) * 8);
10343 stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_812, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010344 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010345 }
10346 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
10347 stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010348 countingStream->clearPool();
10349 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010350 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010351 return vkGetSwapchainImagesKHR_VkResult_return;
10352}
10353
10354VkResult VkEncoder::vkAcquireNextImageKHR(
10355 VkDevice device,
10356 VkSwapchainKHR swapchain,
10357 uint64_t timeout,
10358 VkSemaphore semaphore,
10359 VkFence fence,
10360 uint32_t* pImageIndex)
10361{
10362 auto stream = mImpl->stream();
10363 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010364 auto resources = mImpl->resources();
10365 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010366 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010367 VkDevice local_device;
10368 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010369 VkSwapchainKHR local_swapchain;
10370 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010371 uint64_t local_timeout;
10372 local_timeout = timeout;
10373 VkSemaphore local_semaphore;
10374 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010375 VkFence local_fence;
10376 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010377 countingStream->rewind();
10378 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010379 uint64_t cgen_var_813;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010380 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_813, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010381 countingStream->write((uint64_t*)&cgen_var_813, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010382 uint64_t cgen_var_814;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010383 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_814, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010384 countingStream->write((uint64_t*)&cgen_var_814, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010385 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
10386 uint64_t cgen_var_815;
10387 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_815, 1);
10388 countingStream->write((uint64_t*)&cgen_var_815, 1 * 8);
10389 uint64_t cgen_var_816;
10390 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_816, 1);
10391 countingStream->write((uint64_t*)&cgen_var_816, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010392 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10393 }
10394 uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10395 countingStream->rewind();
10396 uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR;
10397 stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t));
10398 stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010399 uint64_t cgen_var_817;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010400 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_817, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010401 stream->write((uint64_t*)&cgen_var_817, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010402 uint64_t cgen_var_818;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010403 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_818, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010404 stream->write((uint64_t*)&cgen_var_818, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010405 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
10406 uint64_t cgen_var_819;
10407 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_819, 1);
10408 stream->write((uint64_t*)&cgen_var_819, 1 * 8);
10409 uint64_t cgen_var_820;
10410 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_820, 1);
10411 stream->write((uint64_t*)&cgen_var_820, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010412 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10413 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
10414 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
10415 stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010416 countingStream->clearPool();
10417 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010418 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010419 return vkAcquireNextImageKHR_VkResult_return;
10420}
10421
10422VkResult VkEncoder::vkQueuePresentKHR(
10423 VkQueue queue,
10424 const VkPresentInfoKHR* pPresentInfo)
10425{
10426 auto stream = mImpl->stream();
10427 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010428 auto resources = mImpl->resources();
10429 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010430 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010431 VkQueue local_queue;
10432 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010433 VkPresentInfoKHR* local_pPresentInfo;
10434 local_pPresentInfo = nullptr;
10435 if (pPresentInfo)
10436 {
10437 local_pPresentInfo = (VkPresentInfoKHR*)pool->alloc(sizeof(const VkPresentInfoKHR));
10438 deepcopy_VkPresentInfoKHR(pool, pPresentInfo, (VkPresentInfoKHR*)(local_pPresentInfo));
10439 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010440 countingStream->rewind();
10441 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010442 uint64_t cgen_var_821;
10443 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_821, 1);
10444 countingStream->write((uint64_t*)&cgen_var_821, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010445 marshal_VkPresentInfoKHR(countingStream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010446 }
10447 uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10448 countingStream->rewind();
10449 uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR;
10450 stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t));
10451 stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010452 uint64_t cgen_var_822;
10453 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_822, 1);
10454 stream->write((uint64_t*)&cgen_var_822, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010455 marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010456 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
10457 stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010458 countingStream->clearPool();
10459 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010460 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010461 return vkQueuePresentKHR_VkResult_return;
10462}
10463
10464VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR(
10465 VkDevice device,
10466 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
10467{
10468 auto stream = mImpl->stream();
10469 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010470 auto resources = mImpl->resources();
10471 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010472 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010473 VkDevice local_device;
10474 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010475 countingStream->rewind();
10476 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010477 uint64_t cgen_var_823;
10478 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_823, 1);
10479 countingStream->write((uint64_t*)&cgen_var_823, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010480 marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10481 }
10482 uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10483 countingStream->rewind();
10484 uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
10485 stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
10486 stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010487 uint64_t cgen_var_824;
10488 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_824, 1);
10489 stream->write((uint64_t*)&cgen_var_824, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010490 marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10491 unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10492 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
10493 stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010494 countingStream->clearPool();
10495 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010496 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010497 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
10498}
10499
10500VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR(
10501 VkDevice device,
10502 VkSurfaceKHR surface,
10503 VkDeviceGroupPresentModeFlagsKHR* pModes)
10504{
10505 auto stream = mImpl->stream();
10506 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010507 auto resources = mImpl->resources();
10508 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010509 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010510 VkDevice local_device;
10511 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010512 VkSurfaceKHR local_surface;
10513 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010514 countingStream->rewind();
10515 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010516 uint64_t cgen_var_825;
10517 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_825, 1);
10518 countingStream->write((uint64_t*)&cgen_var_825, 1 * 8);
10519 uint64_t cgen_var_826;
10520 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_826, 1);
10521 countingStream->write((uint64_t*)&cgen_var_826, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010522 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010523 uint64_t cgen_var_827 = (uint64_t)(uintptr_t)pModes;
10524 countingStream->putBe64(cgen_var_827);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010525 if (pModes)
10526 {
10527 countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10528 }
10529 }
10530 uint32_t packetSize_vkGetDeviceGroupSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10531 countingStream->rewind();
10532 uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR;
10533 stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
10534 stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010535 uint64_t cgen_var_828;
10536 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_828, 1);
10537 stream->write((uint64_t*)&cgen_var_828, 1 * 8);
10538 uint64_t cgen_var_829;
10539 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_829, 1);
10540 stream->write((uint64_t*)&cgen_var_829, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010541 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010542 uint64_t cgen_var_830 = (uint64_t)(uintptr_t)pModes;
10543 stream->putBe64(cgen_var_830);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010544 if (pModes)
10545 {
10546 stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10547 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010548 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010549 VkDeviceGroupPresentModeFlagsKHR* check_pModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010550 check_pModes = (VkDeviceGroupPresentModeFlagsKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010551 if (pModes)
10552 {
10553 if (!(check_pModes))
10554 {
10555 fprintf(stderr, "fatal: pModes inconsistent between guest and host\n");
10556 }
10557 stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10558 }
10559 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
10560 stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010561 countingStream->clearPool();
10562 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010563 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010564 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
10565}
10566
10567VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR(
10568 VkPhysicalDevice physicalDevice,
10569 VkSurfaceKHR surface,
10570 uint32_t* pRectCount,
10571 VkRect2D* pRects)
10572{
10573 auto stream = mImpl->stream();
10574 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010575 auto resources = mImpl->resources();
10576 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010577 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010578 VkPhysicalDevice local_physicalDevice;
10579 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010580 VkSurfaceKHR local_surface;
10581 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010582 countingStream->rewind();
10583 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010584 uint64_t cgen_var_832;
10585 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_832, 1);
10586 countingStream->write((uint64_t*)&cgen_var_832, 1 * 8);
10587 uint64_t cgen_var_833;
10588 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_833, 1);
10589 countingStream->write((uint64_t*)&cgen_var_833, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010590 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010591 uint64_t cgen_var_834 = (uint64_t)(uintptr_t)pRectCount;
10592 countingStream->putBe64(cgen_var_834);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010593 if (pRectCount)
10594 {
10595 countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
10596 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010597 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010598 uint64_t cgen_var_835 = (uint64_t)(uintptr_t)pRects;
10599 countingStream->putBe64(cgen_var_835);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010600 if (pRects)
10601 {
10602 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10603 {
10604 marshal_VkRect2D(countingStream, (VkRect2D*)(pRects + i));
10605 }
10606 }
10607 }
10608 uint32_t packetSize_vkGetPhysicalDevicePresentRectanglesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10609 countingStream->rewind();
10610 uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR;
10611 stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
10612 stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010613 uint64_t cgen_var_836;
10614 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_836, 1);
10615 stream->write((uint64_t*)&cgen_var_836, 1 * 8);
10616 uint64_t cgen_var_837;
10617 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_837, 1);
10618 stream->write((uint64_t*)&cgen_var_837, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010619 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010620 uint64_t cgen_var_838 = (uint64_t)(uintptr_t)pRectCount;
10621 stream->putBe64(cgen_var_838);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010622 if (pRectCount)
10623 {
10624 stream->write((uint32_t*)pRectCount, sizeof(uint32_t));
10625 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010626 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010627 uint64_t cgen_var_839 = (uint64_t)(uintptr_t)pRects;
10628 stream->putBe64(cgen_var_839);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010629 if (pRects)
10630 {
10631 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10632 {
10633 marshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
10634 }
10635 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010636 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010637 uint32_t* check_pRectCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010638 check_pRectCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010639 if (pRectCount)
10640 {
10641 if (!(check_pRectCount))
10642 {
10643 fprintf(stderr, "fatal: pRectCount inconsistent between guest and host\n");
10644 }
10645 stream->read((uint32_t*)pRectCount, sizeof(uint32_t));
10646 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010647 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010648 VkRect2D* check_pRects;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010649 check_pRects = (VkRect2D*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010650 if (pRects)
10651 {
10652 if (!(check_pRects))
10653 {
10654 fprintf(stderr, "fatal: pRects inconsistent between guest and host\n");
10655 }
10656 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10657 {
10658 unmarshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
10659 }
10660 }
10661 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
10662 stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010663 countingStream->clearPool();
10664 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010665 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010666 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
10667}
10668
10669VkResult VkEncoder::vkAcquireNextImage2KHR(
10670 VkDevice device,
10671 const VkAcquireNextImageInfoKHR* pAcquireInfo,
10672 uint32_t* pImageIndex)
10673{
10674 auto stream = mImpl->stream();
10675 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010676 auto resources = mImpl->resources();
10677 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010678 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010679 VkDevice local_device;
10680 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010681 VkAcquireNextImageInfoKHR* local_pAcquireInfo;
10682 local_pAcquireInfo = nullptr;
10683 if (pAcquireInfo)
10684 {
10685 local_pAcquireInfo = (VkAcquireNextImageInfoKHR*)pool->alloc(sizeof(const VkAcquireNextImageInfoKHR));
10686 deepcopy_VkAcquireNextImageInfoKHR(pool, pAcquireInfo, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
10687 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010688 countingStream->rewind();
10689 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010690 uint64_t cgen_var_842;
10691 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_842, 1);
10692 countingStream->write((uint64_t*)&cgen_var_842, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010693 marshal_VkAcquireNextImageInfoKHR(countingStream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010694 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10695 }
10696 uint32_t packetSize_vkAcquireNextImage2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10697 countingStream->rewind();
10698 uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR;
10699 stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t));
10700 stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010701 uint64_t cgen_var_843;
10702 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_843, 1);
10703 stream->write((uint64_t*)&cgen_var_843, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010704 marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010705 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10706 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
10707 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
10708 stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010709 countingStream->clearPool();
10710 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010711 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010712 return vkAcquireNextImage2KHR_VkResult_return;
10713}
10714
10715#endif
10716#ifdef VK_KHR_display
10717VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR(
10718 VkPhysicalDevice physicalDevice,
10719 uint32_t* pPropertyCount,
10720 VkDisplayPropertiesKHR* pProperties)
10721{
10722 auto stream = mImpl->stream();
10723 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010724 auto resources = mImpl->resources();
10725 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010726 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010727 VkPhysicalDevice local_physicalDevice;
10728 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010729 countingStream->rewind();
10730 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010731 uint64_t cgen_var_844;
10732 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_844, 1);
10733 countingStream->write((uint64_t*)&cgen_var_844, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010734 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010735 uint64_t cgen_var_845 = (uint64_t)(uintptr_t)pPropertyCount;
10736 countingStream->putBe64(cgen_var_845);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010737 if (pPropertyCount)
10738 {
10739 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10740 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010741 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010742 uint64_t cgen_var_846 = (uint64_t)(uintptr_t)pProperties;
10743 countingStream->putBe64(cgen_var_846);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010744 if (pProperties)
10745 {
10746 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10747 {
10748 marshal_VkDisplayPropertiesKHR(countingStream, (VkDisplayPropertiesKHR*)(pProperties + i));
10749 }
10750 }
10751 }
10752 uint32_t packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10753 countingStream->rewind();
10754 uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
10755 stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
10756 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010757 uint64_t cgen_var_847;
10758 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_847, 1);
10759 stream->write((uint64_t*)&cgen_var_847, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010760 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010761 uint64_t cgen_var_848 = (uint64_t)(uintptr_t)pPropertyCount;
10762 stream->putBe64(cgen_var_848);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010763 if (pPropertyCount)
10764 {
10765 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10766 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010767 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010768 uint64_t cgen_var_849 = (uint64_t)(uintptr_t)pProperties;
10769 stream->putBe64(cgen_var_849);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010770 if (pProperties)
10771 {
10772 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10773 {
10774 marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
10775 }
10776 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010777 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010778 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010779 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010780 if (pPropertyCount)
10781 {
10782 if (!(check_pPropertyCount))
10783 {
10784 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10785 }
10786 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10787 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010788 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010789 VkDisplayPropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010790 check_pProperties = (VkDisplayPropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010791 if (pProperties)
10792 {
10793 if (!(check_pProperties))
10794 {
10795 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10796 }
10797 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10798 {
10799 unmarshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
10800 }
10801 }
10802 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
10803 stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010804 countingStream->clearPool();
10805 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010806 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010807 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
10808}
10809
10810VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
10811 VkPhysicalDevice physicalDevice,
10812 uint32_t* pPropertyCount,
10813 VkDisplayPlanePropertiesKHR* pProperties)
10814{
10815 auto stream = mImpl->stream();
10816 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010817 auto resources = mImpl->resources();
10818 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010819 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010820 VkPhysicalDevice local_physicalDevice;
10821 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010822 countingStream->rewind();
10823 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010824 uint64_t cgen_var_852;
10825 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_852, 1);
10826 countingStream->write((uint64_t*)&cgen_var_852, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010827 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010828 uint64_t cgen_var_853 = (uint64_t)(uintptr_t)pPropertyCount;
10829 countingStream->putBe64(cgen_var_853);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010830 if (pPropertyCount)
10831 {
10832 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10833 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010834 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010835 uint64_t cgen_var_854 = (uint64_t)(uintptr_t)pProperties;
10836 countingStream->putBe64(cgen_var_854);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010837 if (pProperties)
10838 {
10839 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10840 {
10841 marshal_VkDisplayPlanePropertiesKHR(countingStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10842 }
10843 }
10844 }
10845 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10846 countingStream->rewind();
10847 uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
10848 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
10849 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010850 uint64_t cgen_var_855;
10851 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_855, 1);
10852 stream->write((uint64_t*)&cgen_var_855, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010853 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010854 uint64_t cgen_var_856 = (uint64_t)(uintptr_t)pPropertyCount;
10855 stream->putBe64(cgen_var_856);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010856 if (pPropertyCount)
10857 {
10858 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10859 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010860 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010861 uint64_t cgen_var_857 = (uint64_t)(uintptr_t)pProperties;
10862 stream->putBe64(cgen_var_857);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010863 if (pProperties)
10864 {
10865 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10866 {
10867 marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10868 }
10869 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010870 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010871 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010872 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010873 if (pPropertyCount)
10874 {
10875 if (!(check_pPropertyCount))
10876 {
10877 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10878 }
10879 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10880 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010881 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010882 VkDisplayPlanePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010883 check_pProperties = (VkDisplayPlanePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010884 if (pProperties)
10885 {
10886 if (!(check_pProperties))
10887 {
10888 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10889 }
10890 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10891 {
10892 unmarshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10893 }
10894 }
10895 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
10896 stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010897 countingStream->clearPool();
10898 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010899 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010900 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
10901}
10902
10903VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR(
10904 VkPhysicalDevice physicalDevice,
10905 uint32_t planeIndex,
10906 uint32_t* pDisplayCount,
10907 VkDisplayKHR* pDisplays)
10908{
10909 auto stream = mImpl->stream();
10910 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010911 auto resources = mImpl->resources();
10912 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010913 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010914 VkPhysicalDevice local_physicalDevice;
10915 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010916 uint32_t local_planeIndex;
10917 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010918 countingStream->rewind();
10919 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010920 uint64_t cgen_var_860;
10921 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_860, 1);
10922 countingStream->write((uint64_t*)&cgen_var_860, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010923 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010924 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010925 uint64_t cgen_var_861 = (uint64_t)(uintptr_t)pDisplayCount;
10926 countingStream->putBe64(cgen_var_861);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010927 if (pDisplayCount)
10928 {
10929 countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
10930 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010931 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010932 uint64_t cgen_var_862 = (uint64_t)(uintptr_t)pDisplays;
10933 countingStream->putBe64(cgen_var_862);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010934 if (pDisplays)
10935 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010936 if ((*(pDisplayCount)))
10937 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010938 uint64_t* cgen_var_863;
10939 countingStream->alloc((void**)&cgen_var_863, (*(pDisplayCount)) * 8);
10940 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_863, (*(pDisplayCount)));
10941 countingStream->write((uint64_t*)cgen_var_863, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010942 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010943 }
10944 }
10945 uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10946 countingStream->rewind();
10947 uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
10948 stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
10949 stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010950 uint64_t cgen_var_864;
10951 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_864, 1);
10952 stream->write((uint64_t*)&cgen_var_864, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010953 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010954 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010955 uint64_t cgen_var_865 = (uint64_t)(uintptr_t)pDisplayCount;
10956 stream->putBe64(cgen_var_865);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010957 if (pDisplayCount)
10958 {
10959 stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
10960 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010961 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010962 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010963 uint64_t cgen_var_866 = (uint64_t)(uintptr_t)pDisplays;
10964 stream->putBe64(cgen_var_866);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010965 if (pDisplays)
10966 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010967 if ((*(pDisplayCount)))
10968 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010969 uint64_t* cgen_var_867;
10970 stream->alloc((void**)&cgen_var_867, (*(pDisplayCount)) * 8);
10971 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_867, (*(pDisplayCount)));
10972 stream->write((uint64_t*)cgen_var_867, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010973 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010974 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010975 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010976 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010977 uint32_t* check_pDisplayCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010978 check_pDisplayCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010979 if (pDisplayCount)
10980 {
10981 if (!(check_pDisplayCount))
10982 {
10983 fprintf(stderr, "fatal: pDisplayCount inconsistent between guest and host\n");
10984 }
10985 stream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
10986 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010987 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010988 VkDisplayKHR* check_pDisplays;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010989 check_pDisplays = (VkDisplayKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010990 if (pDisplays)
10991 {
10992 if (!(check_pDisplays))
10993 {
10994 fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n");
10995 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080010996 if ((*(pDisplayCount)))
10997 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010998 uint64_t* cgen_var_870;
10999 stream->alloc((void**)&cgen_var_870, (*(pDisplayCount)) * 8);
11000 stream->read((uint64_t*)cgen_var_870, (*(pDisplayCount)) * 8);
11001 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_870, (VkDisplayKHR*)pDisplays, (*(pDisplayCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011002 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011003 }
11004 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
11005 stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011006 countingStream->clearPool();
11007 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011008 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011009 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
11010}
11011
11012VkResult VkEncoder::vkGetDisplayModePropertiesKHR(
11013 VkPhysicalDevice physicalDevice,
11014 VkDisplayKHR display,
11015 uint32_t* pPropertyCount,
11016 VkDisplayModePropertiesKHR* pProperties)
11017{
11018 auto stream = mImpl->stream();
11019 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011020 auto resources = mImpl->resources();
11021 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011022 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011023 VkPhysicalDevice local_physicalDevice;
11024 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011025 VkDisplayKHR local_display;
11026 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011027 countingStream->rewind();
11028 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011029 uint64_t cgen_var_871;
11030 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_871, 1);
11031 countingStream->write((uint64_t*)&cgen_var_871, 1 * 8);
11032 uint64_t cgen_var_872;
11033 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_872, 1);
11034 countingStream->write((uint64_t*)&cgen_var_872, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011035 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011036 uint64_t cgen_var_873 = (uint64_t)(uintptr_t)pPropertyCount;
11037 countingStream->putBe64(cgen_var_873);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011038 if (pPropertyCount)
11039 {
11040 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11041 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011042 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011043 uint64_t cgen_var_874 = (uint64_t)(uintptr_t)pProperties;
11044 countingStream->putBe64(cgen_var_874);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011045 if (pProperties)
11046 {
11047 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11048 {
11049 marshal_VkDisplayModePropertiesKHR(countingStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11050 }
11051 }
11052 }
11053 uint32_t packetSize_vkGetDisplayModePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11054 countingStream->rewind();
11055 uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR;
11056 stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
11057 stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011058 uint64_t cgen_var_875;
11059 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_875, 1);
11060 stream->write((uint64_t*)&cgen_var_875, 1 * 8);
11061 uint64_t cgen_var_876;
11062 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_876, 1);
11063 stream->write((uint64_t*)&cgen_var_876, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011064 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011065 uint64_t cgen_var_877 = (uint64_t)(uintptr_t)pPropertyCount;
11066 stream->putBe64(cgen_var_877);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011067 if (pPropertyCount)
11068 {
11069 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11070 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011071 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011072 uint64_t cgen_var_878 = (uint64_t)(uintptr_t)pProperties;
11073 stream->putBe64(cgen_var_878);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011074 if (pProperties)
11075 {
11076 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11077 {
11078 marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11079 }
11080 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011081 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011082 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011083 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011084 if (pPropertyCount)
11085 {
11086 if (!(check_pPropertyCount))
11087 {
11088 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
11089 }
11090 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
11091 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011092 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011093 VkDisplayModePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011094 check_pProperties = (VkDisplayModePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011095 if (pProperties)
11096 {
11097 if (!(check_pProperties))
11098 {
11099 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
11100 }
11101 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11102 {
11103 unmarshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11104 }
11105 }
11106 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
11107 stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011108 countingStream->clearPool();
11109 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011110 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011111 return vkGetDisplayModePropertiesKHR_VkResult_return;
11112}
11113
11114VkResult VkEncoder::vkCreateDisplayModeKHR(
11115 VkPhysicalDevice physicalDevice,
11116 VkDisplayKHR display,
11117 const VkDisplayModeCreateInfoKHR* pCreateInfo,
11118 const VkAllocationCallbacks* pAllocator,
11119 VkDisplayModeKHR* pMode)
11120{
11121 auto stream = mImpl->stream();
11122 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011123 auto resources = mImpl->resources();
11124 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011125 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011126 VkPhysicalDevice local_physicalDevice;
11127 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011128 VkDisplayKHR local_display;
11129 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011130 VkDisplayModeCreateInfoKHR* local_pCreateInfo;
11131 local_pCreateInfo = nullptr;
11132 if (pCreateInfo)
11133 {
11134 local_pCreateInfo = (VkDisplayModeCreateInfoKHR*)pool->alloc(sizeof(const VkDisplayModeCreateInfoKHR));
11135 deepcopy_VkDisplayModeCreateInfoKHR(pool, pCreateInfo, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
11136 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011137 VkAllocationCallbacks* local_pAllocator;
11138 local_pAllocator = nullptr;
11139 if (pAllocator)
11140 {
11141 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11142 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11143 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011144 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011145 countingStream->rewind();
11146 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011147 uint64_t cgen_var_881;
11148 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_881, 1);
11149 countingStream->write((uint64_t*)&cgen_var_881, 1 * 8);
11150 uint64_t cgen_var_882;
11151 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_882, 1);
11152 countingStream->write((uint64_t*)&cgen_var_882, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011153 marshal_VkDisplayModeCreateInfoKHR(countingStream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011154 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011155 uint64_t cgen_var_883 = (uint64_t)(uintptr_t)local_pAllocator;
11156 countingStream->putBe64(cgen_var_883);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011157 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011158 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011159 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011160 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011161 uint64_t cgen_var_884;
11162 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_884, 1);
11163 countingStream->write((uint64_t*)&cgen_var_884, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011164 }
11165 uint32_t packetSize_vkCreateDisplayModeKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11166 countingStream->rewind();
11167 uint32_t opcode_vkCreateDisplayModeKHR = OP_vkCreateDisplayModeKHR;
11168 stream->write(&opcode_vkCreateDisplayModeKHR, sizeof(uint32_t));
11169 stream->write(&packetSize_vkCreateDisplayModeKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011170 uint64_t cgen_var_885;
11171 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_885, 1);
11172 stream->write((uint64_t*)&cgen_var_885, 1 * 8);
11173 uint64_t cgen_var_886;
11174 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_886, 1);
11175 stream->write((uint64_t*)&cgen_var_886, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011176 marshal_VkDisplayModeCreateInfoKHR(stream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011177 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011178 uint64_t cgen_var_887 = (uint64_t)(uintptr_t)local_pAllocator;
11179 stream->putBe64(cgen_var_887);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011180 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011181 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011182 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011183 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011184 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011185 uint64_t cgen_var_888;
11186 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_888, 1);
11187 stream->write((uint64_t*)&cgen_var_888, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011188 stream->setHandleMapping(resources->unwrapMapping());
11189 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011190 uint64_t cgen_var_889;
11191 stream->read((uint64_t*)&cgen_var_889, 8);
11192 stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_889, (VkDisplayModeKHR*)pMode, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011193 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011194 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
11195 stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011196 countingStream->clearPool();
11197 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011198 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011199 return vkCreateDisplayModeKHR_VkResult_return;
11200}
11201
11202VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR(
11203 VkPhysicalDevice physicalDevice,
11204 VkDisplayModeKHR mode,
11205 uint32_t planeIndex,
11206 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
11207{
11208 auto stream = mImpl->stream();
11209 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011210 auto resources = mImpl->resources();
11211 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011212 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011213 VkPhysicalDevice local_physicalDevice;
11214 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011215 VkDisplayModeKHR local_mode;
11216 local_mode = mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011217 uint32_t local_planeIndex;
11218 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011219 countingStream->rewind();
11220 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011221 uint64_t cgen_var_890;
11222 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_890, 1);
11223 countingStream->write((uint64_t*)&cgen_var_890, 1 * 8);
11224 uint64_t cgen_var_891;
11225 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_891, 1);
11226 countingStream->write((uint64_t*)&cgen_var_891, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011227 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011228 marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11229 }
11230 uint32_t packetSize_vkGetDisplayPlaneCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11231 countingStream->rewind();
11232 uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR;
11233 stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
11234 stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011235 uint64_t cgen_var_892;
11236 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_892, 1);
11237 stream->write((uint64_t*)&cgen_var_892, 1 * 8);
11238 uint64_t cgen_var_893;
11239 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_893, 1);
11240 stream->write((uint64_t*)&cgen_var_893, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011241 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011242 marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11243 unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11244 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
11245 stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011246 countingStream->clearPool();
11247 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011248 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011249 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
11250}
11251
11252VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR(
11253 VkInstance instance,
11254 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
11255 const VkAllocationCallbacks* pAllocator,
11256 VkSurfaceKHR* pSurface)
11257{
11258 auto stream = mImpl->stream();
11259 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011260 auto resources = mImpl->resources();
11261 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011262 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011263 VkInstance local_instance;
11264 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011265 VkDisplaySurfaceCreateInfoKHR* local_pCreateInfo;
11266 local_pCreateInfo = nullptr;
11267 if (pCreateInfo)
11268 {
11269 local_pCreateInfo = (VkDisplaySurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkDisplaySurfaceCreateInfoKHR));
11270 deepcopy_VkDisplaySurfaceCreateInfoKHR(pool, pCreateInfo, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
11271 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011272 VkAllocationCallbacks* local_pAllocator;
11273 local_pAllocator = nullptr;
11274 if (pAllocator)
11275 {
11276 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11277 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11278 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011279 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011280 countingStream->rewind();
11281 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011282 uint64_t cgen_var_894;
11283 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_894, 1);
11284 countingStream->write((uint64_t*)&cgen_var_894, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011285 marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011286 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011287 uint64_t cgen_var_895 = (uint64_t)(uintptr_t)local_pAllocator;
11288 countingStream->putBe64(cgen_var_895);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011289 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011290 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011291 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011292 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011293 uint64_t cgen_var_896;
11294 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_896, 1);
11295 countingStream->write((uint64_t*)&cgen_var_896, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011296 }
11297 uint32_t packetSize_vkCreateDisplayPlaneSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11298 countingStream->rewind();
11299 uint32_t opcode_vkCreateDisplayPlaneSurfaceKHR = OP_vkCreateDisplayPlaneSurfaceKHR;
11300 stream->write(&opcode_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
11301 stream->write(&packetSize_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011302 uint64_t cgen_var_897;
11303 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_897, 1);
11304 stream->write((uint64_t*)&cgen_var_897, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011305 marshal_VkDisplaySurfaceCreateInfoKHR(stream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011306 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011307 uint64_t cgen_var_898 = (uint64_t)(uintptr_t)local_pAllocator;
11308 stream->putBe64(cgen_var_898);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011309 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011310 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011311 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011312 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011313 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011314 uint64_t cgen_var_899;
11315 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_899, 1);
11316 stream->write((uint64_t*)&cgen_var_899, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011317 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011318 uint64_t cgen_var_900;
11319 stream->read((uint64_t*)&cgen_var_900, 8);
11320 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_900, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011321 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
11322 stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011323 countingStream->clearPool();
11324 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011325 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011326 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
11327}
11328
11329#endif
11330#ifdef VK_KHR_display_swapchain
11331VkResult VkEncoder::vkCreateSharedSwapchainsKHR(
11332 VkDevice device,
11333 uint32_t swapchainCount,
11334 const VkSwapchainCreateInfoKHR* pCreateInfos,
11335 const VkAllocationCallbacks* pAllocator,
11336 VkSwapchainKHR* pSwapchains)
11337{
11338 auto stream = mImpl->stream();
11339 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011340 auto resources = mImpl->resources();
11341 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011342 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011343 VkDevice local_device;
11344 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011345 uint32_t local_swapchainCount;
11346 local_swapchainCount = swapchainCount;
11347 VkSwapchainCreateInfoKHR* local_pCreateInfos;
11348 local_pCreateInfos = nullptr;
11349 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011350 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011351 local_pCreateInfos = (VkSwapchainCreateInfoKHR*)pool->alloc(((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011352 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11353 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011354 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfos + i, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011355 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011356 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011357 VkAllocationCallbacks* local_pAllocator;
11358 local_pAllocator = nullptr;
11359 if (pAllocator)
11360 {
11361 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11362 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11363 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011364 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011365 countingStream->rewind();
11366 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011367 uint64_t cgen_var_901;
11368 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_901, 1);
11369 countingStream->write((uint64_t*)&cgen_var_901, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011370 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
11371 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11372 {
11373 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
11374 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011375 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011376 uint64_t cgen_var_902 = (uint64_t)(uintptr_t)local_pAllocator;
11377 countingStream->putBe64(cgen_var_902);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011378 if (local_pAllocator)
11379 {
11380 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011381 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080011382 if (((swapchainCount)))
11383 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011384 uint64_t* cgen_var_903;
11385 countingStream->alloc((void**)&cgen_var_903, ((swapchainCount)) * 8);
11386 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_903, ((swapchainCount)));
11387 countingStream->write((uint64_t*)cgen_var_903, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011388 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011389 }
11390 uint32_t packetSize_vkCreateSharedSwapchainsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11391 countingStream->rewind();
11392 uint32_t opcode_vkCreateSharedSwapchainsKHR = OP_vkCreateSharedSwapchainsKHR;
11393 stream->write(&opcode_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
11394 stream->write(&packetSize_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011395 uint64_t cgen_var_904;
11396 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_904, 1);
11397 stream->write((uint64_t*)&cgen_var_904, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011398 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011399 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11400 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011401 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011402 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011403 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011404 uint64_t cgen_var_905 = (uint64_t)(uintptr_t)local_pAllocator;
11405 stream->putBe64(cgen_var_905);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011406 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011407 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011408 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011409 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011410 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -080011411 if (((swapchainCount)))
11412 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011413 uint64_t* cgen_var_906;
11414 stream->alloc((void**)&cgen_var_906, ((swapchainCount)) * 8);
11415 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_906, ((swapchainCount)));
11416 stream->write((uint64_t*)cgen_var_906, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011417 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011418 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -080011419 if (((swapchainCount)))
11420 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011421 uint64_t* cgen_var_907;
11422 stream->alloc((void**)&cgen_var_907, ((swapchainCount)) * 8);
11423 stream->read((uint64_t*)cgen_var_907, ((swapchainCount)) * 8);
11424 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_907, (VkSwapchainKHR*)pSwapchains, ((swapchainCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011425 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011426 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
11427 stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011428 countingStream->clearPool();
11429 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011430 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011431 return vkCreateSharedSwapchainsKHR_VkResult_return;
11432}
11433
11434#endif
11435#ifdef VK_KHR_xlib_surface
11436VkResult VkEncoder::vkCreateXlibSurfaceKHR(
11437 VkInstance instance,
11438 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
11439 const VkAllocationCallbacks* pAllocator,
11440 VkSurfaceKHR* pSurface)
11441{
11442 auto stream = mImpl->stream();
11443 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011444 auto resources = mImpl->resources();
11445 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011446 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011447 VkInstance local_instance;
11448 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011449 VkXlibSurfaceCreateInfoKHR* local_pCreateInfo;
11450 local_pCreateInfo = nullptr;
11451 if (pCreateInfo)
11452 {
11453 local_pCreateInfo = (VkXlibSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXlibSurfaceCreateInfoKHR));
11454 deepcopy_VkXlibSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
11455 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011456 VkAllocationCallbacks* local_pAllocator;
11457 local_pAllocator = nullptr;
11458 if (pAllocator)
11459 {
11460 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11461 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11462 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011463 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011464 countingStream->rewind();
11465 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011466 uint64_t cgen_var_908;
11467 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_908, 1);
11468 countingStream->write((uint64_t*)&cgen_var_908, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011469 marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011470 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011471 uint64_t cgen_var_909 = (uint64_t)(uintptr_t)local_pAllocator;
11472 countingStream->putBe64(cgen_var_909);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011473 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011474 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011475 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011476 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011477 uint64_t cgen_var_910;
11478 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_910, 1);
11479 countingStream->write((uint64_t*)&cgen_var_910, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011480 }
11481 uint32_t packetSize_vkCreateXlibSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11482 countingStream->rewind();
11483 uint32_t opcode_vkCreateXlibSurfaceKHR = OP_vkCreateXlibSurfaceKHR;
11484 stream->write(&opcode_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
11485 stream->write(&packetSize_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011486 uint64_t cgen_var_911;
11487 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_911, 1);
11488 stream->write((uint64_t*)&cgen_var_911, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011489 marshal_VkXlibSurfaceCreateInfoKHR(stream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011490 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011491 uint64_t cgen_var_912 = (uint64_t)(uintptr_t)local_pAllocator;
11492 stream->putBe64(cgen_var_912);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011493 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011494 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011495 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011496 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011497 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011498 uint64_t cgen_var_913;
11499 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_913, 1);
11500 stream->write((uint64_t*)&cgen_var_913, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011501 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011502 uint64_t cgen_var_914;
11503 stream->read((uint64_t*)&cgen_var_914, 8);
11504 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_914, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011505 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
11506 stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011507 countingStream->clearPool();
11508 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011509 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011510 return vkCreateXlibSurfaceKHR_VkResult_return;
11511}
11512
11513VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR(
11514 VkPhysicalDevice physicalDevice,
11515 uint32_t queueFamilyIndex,
11516 Display* dpy,
11517 VisualID visualID)
11518{
11519 auto stream = mImpl->stream();
11520 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011521 auto resources = mImpl->resources();
11522 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011523 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011524 VkPhysicalDevice local_physicalDevice;
11525 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011526 uint32_t local_queueFamilyIndex;
11527 local_queueFamilyIndex = queueFamilyIndex;
11528 VisualID local_visualID;
11529 local_visualID = visualID;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011530 countingStream->rewind();
11531 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011532 uint64_t cgen_var_915;
11533 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_915, 1);
11534 countingStream->write((uint64_t*)&cgen_var_915, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011535 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011536 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011537 countingStream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011538 }
11539 uint32_t packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11540 countingStream->rewind();
11541 uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
11542 stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
11543 stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011544 uint64_t cgen_var_916;
11545 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_916, 1);
11546 stream->write((uint64_t*)&cgen_var_916, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011547 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011548 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011549 stream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011550 stream->read((Display*)dpy, sizeof(Display));
11551 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11552 stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011553 countingStream->clearPool();
11554 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011555 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011556 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
11557}
11558
11559#endif
11560#ifdef VK_KHR_xcb_surface
11561VkResult VkEncoder::vkCreateXcbSurfaceKHR(
11562 VkInstance instance,
11563 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
11564 const VkAllocationCallbacks* pAllocator,
11565 VkSurfaceKHR* pSurface)
11566{
11567 auto stream = mImpl->stream();
11568 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011569 auto resources = mImpl->resources();
11570 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011571 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011572 VkInstance local_instance;
11573 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011574 VkXcbSurfaceCreateInfoKHR* local_pCreateInfo;
11575 local_pCreateInfo = nullptr;
11576 if (pCreateInfo)
11577 {
11578 local_pCreateInfo = (VkXcbSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXcbSurfaceCreateInfoKHR));
11579 deepcopy_VkXcbSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
11580 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011581 VkAllocationCallbacks* local_pAllocator;
11582 local_pAllocator = nullptr;
11583 if (pAllocator)
11584 {
11585 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11586 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11587 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011588 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011589 countingStream->rewind();
11590 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011591 uint64_t cgen_var_917;
11592 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_917, 1);
11593 countingStream->write((uint64_t*)&cgen_var_917, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011594 marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011595 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011596 uint64_t cgen_var_918 = (uint64_t)(uintptr_t)local_pAllocator;
11597 countingStream->putBe64(cgen_var_918);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011598 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011599 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011600 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011601 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011602 uint64_t cgen_var_919;
11603 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_919, 1);
11604 countingStream->write((uint64_t*)&cgen_var_919, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011605 }
11606 uint32_t packetSize_vkCreateXcbSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11607 countingStream->rewind();
11608 uint32_t opcode_vkCreateXcbSurfaceKHR = OP_vkCreateXcbSurfaceKHR;
11609 stream->write(&opcode_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
11610 stream->write(&packetSize_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011611 uint64_t cgen_var_920;
11612 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_920, 1);
11613 stream->write((uint64_t*)&cgen_var_920, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011614 marshal_VkXcbSurfaceCreateInfoKHR(stream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011615 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011616 uint64_t cgen_var_921 = (uint64_t)(uintptr_t)local_pAllocator;
11617 stream->putBe64(cgen_var_921);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011618 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011619 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011620 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011621 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011622 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011623 uint64_t cgen_var_922;
11624 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_922, 1);
11625 stream->write((uint64_t*)&cgen_var_922, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011626 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011627 uint64_t cgen_var_923;
11628 stream->read((uint64_t*)&cgen_var_923, 8);
11629 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_923, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011630 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
11631 stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011632 countingStream->clearPool();
11633 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011634 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011635 return vkCreateXcbSurfaceKHR_VkResult_return;
11636}
11637
11638VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR(
11639 VkPhysicalDevice physicalDevice,
11640 uint32_t queueFamilyIndex,
11641 xcb_connection_t* connection,
11642 xcb_visualid_t visual_id)
11643{
11644 auto stream = mImpl->stream();
11645 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011646 auto resources = mImpl->resources();
11647 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011648 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011649 VkPhysicalDevice local_physicalDevice;
11650 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011651 uint32_t local_queueFamilyIndex;
11652 local_queueFamilyIndex = queueFamilyIndex;
11653 xcb_visualid_t local_visual_id;
11654 local_visual_id = visual_id;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011655 countingStream->rewind();
11656 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011657 uint64_t cgen_var_924;
11658 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_924, 1);
11659 countingStream->write((uint64_t*)&cgen_var_924, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011660 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011661 countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011662 countingStream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011663 }
11664 uint32_t packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11665 countingStream->rewind();
11666 uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
11667 stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
11668 stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011669 uint64_t cgen_var_925;
11670 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_925, 1);
11671 stream->write((uint64_t*)&cgen_var_925, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011672 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011673 stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011674 stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011675 stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
11676 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11677 stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011678 countingStream->clearPool();
11679 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011680 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011681 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
11682}
11683
11684#endif
11685#ifdef VK_KHR_wayland_surface
11686VkResult VkEncoder::vkCreateWaylandSurfaceKHR(
11687 VkInstance instance,
11688 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
11689 const VkAllocationCallbacks* pAllocator,
11690 VkSurfaceKHR* pSurface)
11691{
11692 auto stream = mImpl->stream();
11693 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011694 auto resources = mImpl->resources();
11695 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011696 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011697 VkInstance local_instance;
11698 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011699 VkWaylandSurfaceCreateInfoKHR* local_pCreateInfo;
11700 local_pCreateInfo = nullptr;
11701 if (pCreateInfo)
11702 {
11703 local_pCreateInfo = (VkWaylandSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWaylandSurfaceCreateInfoKHR));
11704 deepcopy_VkWaylandSurfaceCreateInfoKHR(pool, pCreateInfo, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
11705 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011706 VkAllocationCallbacks* local_pAllocator;
11707 local_pAllocator = nullptr;
11708 if (pAllocator)
11709 {
11710 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11711 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11712 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011713 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011714 countingStream->rewind();
11715 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011716 uint64_t cgen_var_926;
11717 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_926, 1);
11718 countingStream->write((uint64_t*)&cgen_var_926, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011719 marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011720 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011721 uint64_t cgen_var_927 = (uint64_t)(uintptr_t)local_pAllocator;
11722 countingStream->putBe64(cgen_var_927);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011723 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011724 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011725 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011726 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011727 uint64_t cgen_var_928;
11728 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_928, 1);
11729 countingStream->write((uint64_t*)&cgen_var_928, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011730 }
11731 uint32_t packetSize_vkCreateWaylandSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11732 countingStream->rewind();
11733 uint32_t opcode_vkCreateWaylandSurfaceKHR = OP_vkCreateWaylandSurfaceKHR;
11734 stream->write(&opcode_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
11735 stream->write(&packetSize_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011736 uint64_t cgen_var_929;
11737 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_929, 1);
11738 stream->write((uint64_t*)&cgen_var_929, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011739 marshal_VkWaylandSurfaceCreateInfoKHR(stream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011740 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011741 uint64_t cgen_var_930 = (uint64_t)(uintptr_t)local_pAllocator;
11742 stream->putBe64(cgen_var_930);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011743 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011744 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011745 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011746 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011747 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011748 uint64_t cgen_var_931;
11749 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_931, 1);
11750 stream->write((uint64_t*)&cgen_var_931, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011751 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011752 uint64_t cgen_var_932;
11753 stream->read((uint64_t*)&cgen_var_932, 8);
11754 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_932, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011755 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
11756 stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011757 countingStream->clearPool();
11758 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011759 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011760 return vkCreateWaylandSurfaceKHR_VkResult_return;
11761}
11762
11763VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR(
11764 VkPhysicalDevice physicalDevice,
11765 uint32_t queueFamilyIndex,
11766 wl_display* display)
11767{
11768 auto stream = mImpl->stream();
11769 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011770 auto resources = mImpl->resources();
11771 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011772 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011773 VkPhysicalDevice local_physicalDevice;
11774 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011775 uint32_t local_queueFamilyIndex;
11776 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011777 countingStream->rewind();
11778 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011779 uint64_t cgen_var_933;
11780 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_933, 1);
11781 countingStream->write((uint64_t*)&cgen_var_933, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011782 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011783 countingStream->write((wl_display*)display, sizeof(wl_display));
11784 }
11785 uint32_t packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11786 countingStream->rewind();
11787 uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
11788 stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
11789 stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011790 uint64_t cgen_var_934;
11791 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_934, 1);
11792 stream->write((uint64_t*)&cgen_var_934, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011793 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011794 stream->write((wl_display*)display, sizeof(wl_display));
11795 stream->read((wl_display*)display, sizeof(wl_display));
11796 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11797 stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011798 countingStream->clearPool();
11799 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011800 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011801 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
11802}
11803
11804#endif
11805#ifdef VK_KHR_mir_surface
11806VkResult VkEncoder::vkCreateMirSurfaceKHR(
11807 VkInstance instance,
11808 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
11809 const VkAllocationCallbacks* pAllocator,
11810 VkSurfaceKHR* pSurface)
11811{
11812 auto stream = mImpl->stream();
11813 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011814 auto resources = mImpl->resources();
11815 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011816 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011817 VkInstance local_instance;
11818 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011819 VkMirSurfaceCreateInfoKHR* local_pCreateInfo;
11820 local_pCreateInfo = nullptr;
11821 if (pCreateInfo)
11822 {
11823 local_pCreateInfo = (VkMirSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkMirSurfaceCreateInfoKHR));
11824 deepcopy_VkMirSurfaceCreateInfoKHR(pool, pCreateInfo, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
11825 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011826 VkAllocationCallbacks* local_pAllocator;
11827 local_pAllocator = nullptr;
11828 if (pAllocator)
11829 {
11830 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11831 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11832 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011833 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011834 countingStream->rewind();
11835 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011836 uint64_t cgen_var_935;
11837 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_935, 1);
11838 countingStream->write((uint64_t*)&cgen_var_935, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011839 marshal_VkMirSurfaceCreateInfoKHR(countingStream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011840 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011841 uint64_t cgen_var_936 = (uint64_t)(uintptr_t)local_pAllocator;
11842 countingStream->putBe64(cgen_var_936);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011843 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011844 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011845 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011846 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011847 uint64_t cgen_var_937;
11848 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_937, 1);
11849 countingStream->write((uint64_t*)&cgen_var_937, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011850 }
11851 uint32_t packetSize_vkCreateMirSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11852 countingStream->rewind();
11853 uint32_t opcode_vkCreateMirSurfaceKHR = OP_vkCreateMirSurfaceKHR;
11854 stream->write(&opcode_vkCreateMirSurfaceKHR, sizeof(uint32_t));
11855 stream->write(&packetSize_vkCreateMirSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011856 uint64_t cgen_var_938;
11857 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_938, 1);
11858 stream->write((uint64_t*)&cgen_var_938, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011859 marshal_VkMirSurfaceCreateInfoKHR(stream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011860 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011861 uint64_t cgen_var_939 = (uint64_t)(uintptr_t)local_pAllocator;
11862 stream->putBe64(cgen_var_939);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011863 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011864 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011865 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011866 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011867 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011868 uint64_t cgen_var_940;
11869 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_940, 1);
11870 stream->write((uint64_t*)&cgen_var_940, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011871 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011872 uint64_t cgen_var_941;
11873 stream->read((uint64_t*)&cgen_var_941, 8);
11874 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_941, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011875 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
11876 stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011877 countingStream->clearPool();
11878 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011879 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011880 return vkCreateMirSurfaceKHR_VkResult_return;
11881}
11882
11883VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR(
11884 VkPhysicalDevice physicalDevice,
11885 uint32_t queueFamilyIndex,
11886 MirConnection* connection)
11887{
11888 auto stream = mImpl->stream();
11889 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011890 auto resources = mImpl->resources();
11891 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011892 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011893 VkPhysicalDevice local_physicalDevice;
11894 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011895 uint32_t local_queueFamilyIndex;
11896 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011897 countingStream->rewind();
11898 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011899 uint64_t cgen_var_942;
11900 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_942, 1);
11901 countingStream->write((uint64_t*)&cgen_var_942, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011902 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011903 countingStream->write((MirConnection*)connection, sizeof(MirConnection));
11904 }
11905 uint32_t packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11906 countingStream->rewind();
11907 uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
11908 stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
11909 stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011910 uint64_t cgen_var_943;
11911 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_943, 1);
11912 stream->write((uint64_t*)&cgen_var_943, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011913 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011914 stream->write((MirConnection*)connection, sizeof(MirConnection));
11915 stream->read((MirConnection*)connection, sizeof(MirConnection));
11916 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11917 stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011918 countingStream->clearPool();
11919 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011920 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011921 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
11922}
11923
11924#endif
11925#ifdef VK_KHR_android_surface
11926VkResult VkEncoder::vkCreateAndroidSurfaceKHR(
11927 VkInstance instance,
11928 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
11929 const VkAllocationCallbacks* pAllocator,
11930 VkSurfaceKHR* pSurface)
11931{
11932 auto stream = mImpl->stream();
11933 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011934 auto resources = mImpl->resources();
11935 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011936 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011937 VkInstance local_instance;
11938 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011939 VkAndroidSurfaceCreateInfoKHR* local_pCreateInfo;
11940 local_pCreateInfo = nullptr;
11941 if (pCreateInfo)
11942 {
11943 local_pCreateInfo = (VkAndroidSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkAndroidSurfaceCreateInfoKHR));
11944 deepcopy_VkAndroidSurfaceCreateInfoKHR(pool, pCreateInfo, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
11945 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011946 VkAllocationCallbacks* local_pAllocator;
11947 local_pAllocator = nullptr;
11948 if (pAllocator)
11949 {
11950 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11951 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11952 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011953 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011954 countingStream->rewind();
11955 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011956 uint64_t cgen_var_944;
11957 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_944, 1);
11958 countingStream->write((uint64_t*)&cgen_var_944, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011959 marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011960 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011961 uint64_t cgen_var_945 = (uint64_t)(uintptr_t)local_pAllocator;
11962 countingStream->putBe64(cgen_var_945);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011963 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011964 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011965 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011966 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011967 uint64_t cgen_var_946;
11968 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_946, 1);
11969 countingStream->write((uint64_t*)&cgen_var_946, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011970 }
11971 uint32_t packetSize_vkCreateAndroidSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11972 countingStream->rewind();
11973 uint32_t opcode_vkCreateAndroidSurfaceKHR = OP_vkCreateAndroidSurfaceKHR;
11974 stream->write(&opcode_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
11975 stream->write(&packetSize_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011976 uint64_t cgen_var_947;
11977 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_947, 1);
11978 stream->write((uint64_t*)&cgen_var_947, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011979 marshal_VkAndroidSurfaceCreateInfoKHR(stream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011980 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011981 uint64_t cgen_var_948 = (uint64_t)(uintptr_t)local_pAllocator;
11982 stream->putBe64(cgen_var_948);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011983 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011984 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011985 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011986 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011987 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011988 uint64_t cgen_var_949;
11989 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_949, 1);
11990 stream->write((uint64_t*)&cgen_var_949, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011991 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011992 uint64_t cgen_var_950;
11993 stream->read((uint64_t*)&cgen_var_950, 8);
11994 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_950, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011995 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
11996 stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011997 countingStream->clearPool();
11998 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011999 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012000 return vkCreateAndroidSurfaceKHR_VkResult_return;
12001}
12002
12003#endif
12004#ifdef VK_KHR_win32_surface
12005VkResult VkEncoder::vkCreateWin32SurfaceKHR(
12006 VkInstance instance,
12007 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
12008 const VkAllocationCallbacks* pAllocator,
12009 VkSurfaceKHR* pSurface)
12010{
12011 auto stream = mImpl->stream();
12012 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012013 auto resources = mImpl->resources();
12014 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012015 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012016 VkInstance local_instance;
12017 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012018 VkWin32SurfaceCreateInfoKHR* local_pCreateInfo;
12019 local_pCreateInfo = nullptr;
12020 if (pCreateInfo)
12021 {
12022 local_pCreateInfo = (VkWin32SurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWin32SurfaceCreateInfoKHR));
12023 deepcopy_VkWin32SurfaceCreateInfoKHR(pool, pCreateInfo, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
12024 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012025 VkAllocationCallbacks* local_pAllocator;
12026 local_pAllocator = nullptr;
12027 if (pAllocator)
12028 {
12029 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12030 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12031 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012032 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012033 countingStream->rewind();
12034 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012035 uint64_t cgen_var_951;
12036 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_951, 1);
12037 countingStream->write((uint64_t*)&cgen_var_951, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012038 marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012039 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012040 uint64_t cgen_var_952 = (uint64_t)(uintptr_t)local_pAllocator;
12041 countingStream->putBe64(cgen_var_952);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012042 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012043 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012044 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012045 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012046 uint64_t cgen_var_953;
12047 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_953, 1);
12048 countingStream->write((uint64_t*)&cgen_var_953, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012049 }
12050 uint32_t packetSize_vkCreateWin32SurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12051 countingStream->rewind();
12052 uint32_t opcode_vkCreateWin32SurfaceKHR = OP_vkCreateWin32SurfaceKHR;
12053 stream->write(&opcode_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
12054 stream->write(&packetSize_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012055 uint64_t cgen_var_954;
12056 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_954, 1);
12057 stream->write((uint64_t*)&cgen_var_954, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012058 marshal_VkWin32SurfaceCreateInfoKHR(stream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012059 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012060 uint64_t cgen_var_955 = (uint64_t)(uintptr_t)local_pAllocator;
12061 stream->putBe64(cgen_var_955);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012062 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012063 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012064 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012065 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012066 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012067 uint64_t cgen_var_956;
12068 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_956, 1);
12069 stream->write((uint64_t*)&cgen_var_956, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012070 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012071 uint64_t cgen_var_957;
12072 stream->read((uint64_t*)&cgen_var_957, 8);
12073 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_957, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012074 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
12075 stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012076 countingStream->clearPool();
12077 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012078 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012079 return vkCreateWin32SurfaceKHR_VkResult_return;
12080}
12081
12082VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR(
12083 VkPhysicalDevice physicalDevice,
12084 uint32_t queueFamilyIndex)
12085{
12086 auto stream = mImpl->stream();
12087 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012088 auto resources = mImpl->resources();
12089 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012090 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012091 VkPhysicalDevice local_physicalDevice;
12092 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012093 uint32_t local_queueFamilyIndex;
12094 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012095 countingStream->rewind();
12096 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012097 uint64_t cgen_var_958;
12098 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_958, 1);
12099 countingStream->write((uint64_t*)&cgen_var_958, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012100 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012101 }
12102 uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12103 countingStream->rewind();
12104 uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
12105 stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
12106 stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012107 uint64_t cgen_var_959;
12108 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_959, 1);
12109 stream->write((uint64_t*)&cgen_var_959, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012110 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012111 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
12112 stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012113 countingStream->clearPool();
12114 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012115 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012116 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
12117}
12118
12119#endif
12120#ifdef VK_KHR_sampler_mirror_clamp_to_edge
12121#endif
12122#ifdef VK_KHR_multiview
12123#endif
12124#ifdef VK_KHR_get_physical_device_properties2
12125void VkEncoder::vkGetPhysicalDeviceFeatures2KHR(
12126 VkPhysicalDevice physicalDevice,
12127 VkPhysicalDeviceFeatures2* pFeatures)
12128{
12129 auto stream = mImpl->stream();
12130 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012131 auto resources = mImpl->resources();
12132 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012133 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012134 VkPhysicalDevice local_physicalDevice;
12135 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012136 countingStream->rewind();
12137 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012138 uint64_t cgen_var_960;
12139 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_960, 1);
12140 countingStream->write((uint64_t*)&cgen_var_960, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012141 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12142 }
12143 uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12144 countingStream->rewind();
12145 uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR;
12146 stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
12147 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012148 uint64_t cgen_var_961;
12149 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_961, 1);
12150 stream->write((uint64_t*)&cgen_var_961, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012151 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12152 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12153}
12154
12155void VkEncoder::vkGetPhysicalDeviceProperties2KHR(
12156 VkPhysicalDevice physicalDevice,
12157 VkPhysicalDeviceProperties2* pProperties)
12158{
12159 auto stream = mImpl->stream();
12160 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012161 auto resources = mImpl->resources();
12162 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012163 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012164 VkPhysicalDevice local_physicalDevice;
12165 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012166 countingStream->rewind();
12167 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012168 uint64_t cgen_var_962;
12169 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_962, 1);
12170 countingStream->write((uint64_t*)&cgen_var_962, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012171 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
12172 }
12173 uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12174 countingStream->rewind();
12175 uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR;
12176 stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
12177 stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012178 uint64_t cgen_var_963;
12179 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_963, 1);
12180 stream->write((uint64_t*)&cgen_var_963, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012181 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
12182 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
12183}
12184
12185void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR(
12186 VkPhysicalDevice physicalDevice,
12187 VkFormat format,
12188 VkFormatProperties2* pFormatProperties)
12189{
12190 auto stream = mImpl->stream();
12191 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012192 auto resources = mImpl->resources();
12193 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012194 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012195 VkPhysicalDevice local_physicalDevice;
12196 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012197 VkFormat local_format;
12198 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012199 countingStream->rewind();
12200 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012201 uint64_t cgen_var_964;
12202 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_964, 1);
12203 countingStream->write((uint64_t*)&cgen_var_964, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012204 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012205 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
12206 }
12207 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12208 countingStream->rewind();
12209 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR;
12210 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
12211 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012212 uint64_t cgen_var_965;
12213 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_965, 1);
12214 stream->write((uint64_t*)&cgen_var_965, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012215 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012216 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
12217 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
12218}
12219
12220VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR(
12221 VkPhysicalDevice physicalDevice,
12222 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
12223 VkImageFormatProperties2* pImageFormatProperties)
12224{
12225 auto stream = mImpl->stream();
12226 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012227 auto resources = mImpl->resources();
12228 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012229 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012230 VkPhysicalDevice local_physicalDevice;
12231 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012232 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
12233 local_pImageFormatInfo = nullptr;
12234 if (pImageFormatInfo)
12235 {
12236 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
12237 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
12238 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012239 countingStream->rewind();
12240 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012241 uint64_t cgen_var_966;
12242 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_966, 1);
12243 countingStream->write((uint64_t*)&cgen_var_966, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012244 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012245 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
12246 }
12247 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12248 countingStream->rewind();
12249 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
12250 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
12251 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012252 uint64_t cgen_var_967;
12253 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_967, 1);
12254 stream->write((uint64_t*)&cgen_var_967, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012255 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012256 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
12257 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
12258 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
12259 stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012260 countingStream->clearPool();
12261 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012262 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012263 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
12264}
12265
12266void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR(
12267 VkPhysicalDevice physicalDevice,
12268 uint32_t* pQueueFamilyPropertyCount,
12269 VkQueueFamilyProperties2* pQueueFamilyProperties)
12270{
12271 auto stream = mImpl->stream();
12272 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012273 auto resources = mImpl->resources();
12274 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012275 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012276 VkPhysicalDevice local_physicalDevice;
12277 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012278 countingStream->rewind();
12279 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012280 uint64_t cgen_var_968;
12281 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_968, 1);
12282 countingStream->write((uint64_t*)&cgen_var_968, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012283 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012284 uint64_t cgen_var_969 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
12285 countingStream->putBe64(cgen_var_969);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012286 if (pQueueFamilyPropertyCount)
12287 {
12288 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12289 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012290 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012291 uint64_t cgen_var_970 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
12292 countingStream->putBe64(cgen_var_970);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012293 if (pQueueFamilyProperties)
12294 {
12295 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12296 {
12297 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12298 }
12299 }
12300 }
12301 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12302 countingStream->rewind();
12303 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
12304 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
12305 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012306 uint64_t cgen_var_971;
12307 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_971, 1);
12308 stream->write((uint64_t*)&cgen_var_971, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012309 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012310 uint64_t cgen_var_972 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
12311 stream->putBe64(cgen_var_972);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012312 if (pQueueFamilyPropertyCount)
12313 {
12314 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12315 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012316 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012317 uint64_t cgen_var_973 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
12318 stream->putBe64(cgen_var_973);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012319 if (pQueueFamilyProperties)
12320 {
12321 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12322 {
12323 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12324 }
12325 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012326 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012327 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012328 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012329 if (pQueueFamilyPropertyCount)
12330 {
12331 if (!(check_pQueueFamilyPropertyCount))
12332 {
12333 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
12334 }
12335 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12336 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012337 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012338 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012339 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012340 if (pQueueFamilyProperties)
12341 {
12342 if (!(check_pQueueFamilyProperties))
12343 {
12344 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
12345 }
12346 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12347 {
12348 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12349 }
12350 }
12351}
12352
12353void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR(
12354 VkPhysicalDevice physicalDevice,
12355 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
12356{
12357 auto stream = mImpl->stream();
12358 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012359 auto resources = mImpl->resources();
12360 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012361 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012362 VkPhysicalDevice local_physicalDevice;
12363 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012364 countingStream->rewind();
12365 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012366 uint64_t cgen_var_976;
12367 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_976, 1);
12368 countingStream->write((uint64_t*)&cgen_var_976, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012369 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12370 }
12371 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12372 countingStream->rewind();
12373 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
12374 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
12375 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012376 uint64_t cgen_var_977;
12377 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_977, 1);
12378 stream->write((uint64_t*)&cgen_var_977, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012379 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12380 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12381}
12382
12383void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
12384 VkPhysicalDevice physicalDevice,
12385 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
12386 uint32_t* pPropertyCount,
12387 VkSparseImageFormatProperties2* pProperties)
12388{
12389 auto stream = mImpl->stream();
12390 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012391 auto resources = mImpl->resources();
12392 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012393 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012394 VkPhysicalDevice local_physicalDevice;
12395 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012396 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
12397 local_pFormatInfo = nullptr;
12398 if (pFormatInfo)
12399 {
12400 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
12401 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
12402 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012403 countingStream->rewind();
12404 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012405 uint64_t cgen_var_978;
12406 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_978, 1);
12407 countingStream->write((uint64_t*)&cgen_var_978, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012408 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012409 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012410 uint64_t cgen_var_979 = (uint64_t)(uintptr_t)pPropertyCount;
12411 countingStream->putBe64(cgen_var_979);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012412 if (pPropertyCount)
12413 {
12414 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12415 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012416 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012417 uint64_t cgen_var_980 = (uint64_t)(uintptr_t)pProperties;
12418 countingStream->putBe64(cgen_var_980);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012419 if (pProperties)
12420 {
12421 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12422 {
12423 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
12424 }
12425 }
12426 }
12427 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12428 countingStream->rewind();
12429 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
12430 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
12431 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012432 uint64_t cgen_var_981;
12433 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_981, 1);
12434 stream->write((uint64_t*)&cgen_var_981, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012435 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012436 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012437 uint64_t cgen_var_982 = (uint64_t)(uintptr_t)pPropertyCount;
12438 stream->putBe64(cgen_var_982);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012439 if (pPropertyCount)
12440 {
12441 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12442 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012443 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012444 uint64_t cgen_var_983 = (uint64_t)(uintptr_t)pProperties;
12445 stream->putBe64(cgen_var_983);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012446 if (pProperties)
12447 {
12448 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12449 {
12450 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
12451 }
12452 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012453 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012454 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012455 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012456 if (pPropertyCount)
12457 {
12458 if (!(check_pPropertyCount))
12459 {
12460 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12461 }
12462 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12463 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012464 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012465 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012466 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012467 if (pProperties)
12468 {
12469 if (!(check_pProperties))
12470 {
12471 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12472 }
12473 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12474 {
12475 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
12476 }
12477 }
12478}
12479
12480#endif
12481#ifdef VK_KHR_device_group
12482void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR(
12483 VkDevice device,
12484 uint32_t heapIndex,
12485 uint32_t localDeviceIndex,
12486 uint32_t remoteDeviceIndex,
12487 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
12488{
12489 auto stream = mImpl->stream();
12490 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012491 auto resources = mImpl->resources();
12492 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012493 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012494 VkDevice local_device;
12495 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012496 uint32_t local_heapIndex;
12497 local_heapIndex = heapIndex;
12498 uint32_t local_localDeviceIndex;
12499 local_localDeviceIndex = localDeviceIndex;
12500 uint32_t local_remoteDeviceIndex;
12501 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012502 countingStream->rewind();
12503 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012504 uint64_t cgen_var_986;
12505 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_986, 1);
12506 countingStream->write((uint64_t*)&cgen_var_986, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012507 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
12508 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
12509 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012510 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12511 }
12512 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12513 countingStream->rewind();
12514 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
12515 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
12516 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012517 uint64_t cgen_var_987;
12518 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_987, 1);
12519 stream->write((uint64_t*)&cgen_var_987, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012520 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
12521 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
12522 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012523 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12524 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12525}
12526
12527void VkEncoder::vkCmdSetDeviceMaskKHR(
12528 VkCommandBuffer commandBuffer,
12529 uint32_t deviceMask)
12530{
12531 auto stream = mImpl->stream();
12532 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012533 auto resources = mImpl->resources();
12534 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012535 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012536 VkCommandBuffer local_commandBuffer;
12537 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012538 uint32_t local_deviceMask;
12539 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012540 countingStream->rewind();
12541 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012542 uint64_t cgen_var_988;
12543 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_988, 1);
12544 countingStream->write((uint64_t*)&cgen_var_988, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012545 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012546 }
12547 uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12548 countingStream->rewind();
12549 uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR;
12550 stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
12551 stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012552 uint64_t cgen_var_989;
12553 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_989, 1);
12554 stream->write((uint64_t*)&cgen_var_989, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012555 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012556}
12557
12558void VkEncoder::vkCmdDispatchBaseKHR(
12559 VkCommandBuffer commandBuffer,
12560 uint32_t baseGroupX,
12561 uint32_t baseGroupY,
12562 uint32_t baseGroupZ,
12563 uint32_t groupCountX,
12564 uint32_t groupCountY,
12565 uint32_t groupCountZ)
12566{
12567 auto stream = mImpl->stream();
12568 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012569 auto resources = mImpl->resources();
12570 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012571 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012572 VkCommandBuffer local_commandBuffer;
12573 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012574 uint32_t local_baseGroupX;
12575 local_baseGroupX = baseGroupX;
12576 uint32_t local_baseGroupY;
12577 local_baseGroupY = baseGroupY;
12578 uint32_t local_baseGroupZ;
12579 local_baseGroupZ = baseGroupZ;
12580 uint32_t local_groupCountX;
12581 local_groupCountX = groupCountX;
12582 uint32_t local_groupCountY;
12583 local_groupCountY = groupCountY;
12584 uint32_t local_groupCountZ;
12585 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012586 countingStream->rewind();
12587 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012588 uint64_t cgen_var_990;
12589 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_990, 1);
12590 countingStream->write((uint64_t*)&cgen_var_990, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012591 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
12592 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
12593 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
12594 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
12595 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
12596 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012597 }
12598 uint32_t packetSize_vkCmdDispatchBaseKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12599 countingStream->rewind();
12600 uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR;
12601 stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t));
12602 stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012603 uint64_t cgen_var_991;
12604 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_991, 1);
12605 stream->write((uint64_t*)&cgen_var_991, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012606 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
12607 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
12608 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
12609 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
12610 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
12611 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012612}
12613
12614#endif
12615#ifdef VK_KHR_shader_draw_parameters
12616#endif
12617#ifdef VK_KHR_maintenance1
12618void VkEncoder::vkTrimCommandPoolKHR(
12619 VkDevice device,
12620 VkCommandPool commandPool,
12621 VkCommandPoolTrimFlags flags)
12622{
12623 auto stream = mImpl->stream();
12624 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012625 auto resources = mImpl->resources();
12626 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012627 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012628 VkDevice local_device;
12629 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012630 VkCommandPool local_commandPool;
12631 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012632 VkCommandPoolTrimFlags local_flags;
12633 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012634 countingStream->rewind();
12635 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012636 uint64_t cgen_var_992;
12637 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_992, 1);
12638 countingStream->write((uint64_t*)&cgen_var_992, 1 * 8);
12639 uint64_t cgen_var_993;
12640 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_993, 1);
12641 countingStream->write((uint64_t*)&cgen_var_993, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012642 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012643 }
12644 uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12645 countingStream->rewind();
12646 uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR;
12647 stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t));
12648 stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012649 uint64_t cgen_var_994;
12650 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_994, 1);
12651 stream->write((uint64_t*)&cgen_var_994, 1 * 8);
12652 uint64_t cgen_var_995;
12653 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_995, 1);
12654 stream->write((uint64_t*)&cgen_var_995, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012655 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012656}
12657
12658#endif
12659#ifdef VK_KHR_device_group_creation
12660VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR(
12661 VkInstance instance,
12662 uint32_t* pPhysicalDeviceGroupCount,
12663 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
12664{
12665 auto stream = mImpl->stream();
12666 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012667 auto resources = mImpl->resources();
12668 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012669 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012670 VkInstance local_instance;
12671 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012672 countingStream->rewind();
12673 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012674 uint64_t cgen_var_996;
12675 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_996, 1);
12676 countingStream->write((uint64_t*)&cgen_var_996, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012677 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012678 uint64_t cgen_var_997 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
12679 countingStream->putBe64(cgen_var_997);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012680 if (pPhysicalDeviceGroupCount)
12681 {
12682 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12683 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012684 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012685 uint64_t cgen_var_998 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
12686 countingStream->putBe64(cgen_var_998);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012687 if (pPhysicalDeviceGroupProperties)
12688 {
12689 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12690 {
12691 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12692 }
12693 }
12694 }
12695 uint32_t packetSize_vkEnumeratePhysicalDeviceGroupsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12696 countingStream->rewind();
12697 uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR;
12698 stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
12699 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012700 uint64_t cgen_var_999;
12701 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_999, 1);
12702 stream->write((uint64_t*)&cgen_var_999, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012703 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012704 uint64_t cgen_var_1000 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
12705 stream->putBe64(cgen_var_1000);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012706 if (pPhysicalDeviceGroupCount)
12707 {
12708 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12709 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012710 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012711 uint64_t cgen_var_1001 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
12712 stream->putBe64(cgen_var_1001);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012713 if (pPhysicalDeviceGroupProperties)
12714 {
12715 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12716 {
12717 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12718 }
12719 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012720 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012721 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012722 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012723 if (pPhysicalDeviceGroupCount)
12724 {
12725 if (!(check_pPhysicalDeviceGroupCount))
12726 {
12727 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
12728 }
12729 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12730 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012731 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012732 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012733 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012734 if (pPhysicalDeviceGroupProperties)
12735 {
12736 if (!(check_pPhysicalDeviceGroupProperties))
12737 {
12738 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
12739 }
12740 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12741 {
12742 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12743 }
12744 }
12745 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
12746 stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012747 countingStream->clearPool();
12748 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012749 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012750 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
12751}
12752
12753#endif
12754#ifdef VK_KHR_external_memory_capabilities
12755void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR(
12756 VkPhysicalDevice physicalDevice,
12757 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
12758 VkExternalBufferProperties* pExternalBufferProperties)
12759{
12760 auto stream = mImpl->stream();
12761 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012762 auto resources = mImpl->resources();
12763 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012764 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012765 VkPhysicalDevice local_physicalDevice;
12766 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012767 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
12768 local_pExternalBufferInfo = nullptr;
12769 if (pExternalBufferInfo)
12770 {
12771 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
12772 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
12773 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012774 countingStream->rewind();
12775 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012776 uint64_t cgen_var_1004;
12777 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1004, 1);
12778 countingStream->write((uint64_t*)&cgen_var_1004, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012779 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012780 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12781 }
12782 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12783 countingStream->rewind();
12784 uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
12785 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
12786 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012787 uint64_t cgen_var_1005;
12788 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1005, 1);
12789 stream->write((uint64_t*)&cgen_var_1005, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012790 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012791 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12792 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12793}
12794
12795#endif
12796#ifdef VK_KHR_external_memory
12797#endif
12798#ifdef VK_KHR_external_memory_win32
12799VkResult VkEncoder::vkGetMemoryWin32HandleKHR(
12800 VkDevice device,
12801 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
12802 HANDLE* pHandle)
12803{
12804 auto stream = mImpl->stream();
12805 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012806 auto resources = mImpl->resources();
12807 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012808 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012809 VkDevice local_device;
12810 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012811 VkMemoryGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
12812 local_pGetWin32HandleInfo = nullptr;
12813 if (pGetWin32HandleInfo)
12814 {
12815 local_pGetWin32HandleInfo = (VkMemoryGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkMemoryGetWin32HandleInfoKHR));
12816 deepcopy_VkMemoryGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
12817 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012818 countingStream->rewind();
12819 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012820 uint64_t cgen_var_1006;
12821 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1006, 1);
12822 countingStream->write((uint64_t*)&cgen_var_1006, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012823 marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012824 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
12825 }
12826 uint32_t packetSize_vkGetMemoryWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12827 countingStream->rewind();
12828 uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR;
12829 stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
12830 stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012831 uint64_t cgen_var_1007;
12832 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1007, 1);
12833 stream->write((uint64_t*)&cgen_var_1007, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012834 marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012835 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
12836 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
12837 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
12838 stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012839 countingStream->clearPool();
12840 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012841 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012842 return vkGetMemoryWin32HandleKHR_VkResult_return;
12843}
12844
12845VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR(
12846 VkDevice device,
12847 VkExternalMemoryHandleTypeFlagBits handleType,
12848 HANDLE handle,
12849 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
12850{
12851 auto stream = mImpl->stream();
12852 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012853 auto resources = mImpl->resources();
12854 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012855 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012856 VkDevice local_device;
12857 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012858 VkExternalMemoryHandleTypeFlagBits local_handleType;
12859 local_handleType = handleType;
12860 HANDLE local_handle;
12861 local_handle = handle;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012862 countingStream->rewind();
12863 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012864 uint64_t cgen_var_1008;
12865 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1008, 1);
12866 countingStream->write((uint64_t*)&cgen_var_1008, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012867 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12868 countingStream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012869 marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12870 }
12871 uint32_t packetSize_vkGetMemoryWin32HandlePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12872 countingStream->rewind();
12873 uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR;
12874 stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
12875 stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012876 uint64_t cgen_var_1009;
12877 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1009, 1);
12878 stream->write((uint64_t*)&cgen_var_1009, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012879 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12880 stream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012881 marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12882 unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12883 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
12884 stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012885 countingStream->clearPool();
12886 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012887 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012888 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
12889}
12890
12891#endif
12892#ifdef VK_KHR_external_memory_fd
12893VkResult VkEncoder::vkGetMemoryFdKHR(
12894 VkDevice device,
12895 const VkMemoryGetFdInfoKHR* pGetFdInfo,
12896 int* pFd)
12897{
12898 auto stream = mImpl->stream();
12899 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012900 auto resources = mImpl->resources();
12901 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012902 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012903 VkDevice local_device;
12904 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012905 VkMemoryGetFdInfoKHR* local_pGetFdInfo;
12906 local_pGetFdInfo = nullptr;
12907 if (pGetFdInfo)
12908 {
12909 local_pGetFdInfo = (VkMemoryGetFdInfoKHR*)pool->alloc(sizeof(const VkMemoryGetFdInfoKHR));
12910 deepcopy_VkMemoryGetFdInfoKHR(pool, pGetFdInfo, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
12911 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012912 countingStream->rewind();
12913 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012914 uint64_t cgen_var_1010;
12915 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1010, 1);
12916 countingStream->write((uint64_t*)&cgen_var_1010, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012917 marshal_VkMemoryGetFdInfoKHR(countingStream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012918 countingStream->write((int*)pFd, sizeof(int));
12919 }
12920 uint32_t packetSize_vkGetMemoryFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12921 countingStream->rewind();
12922 uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR;
12923 stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t));
12924 stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012925 uint64_t cgen_var_1011;
12926 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1011, 1);
12927 stream->write((uint64_t*)&cgen_var_1011, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012928 marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012929 stream->write((int*)pFd, sizeof(int));
12930 stream->read((int*)pFd, sizeof(int));
12931 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
12932 stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012933 countingStream->clearPool();
12934 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012935 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012936 return vkGetMemoryFdKHR_VkResult_return;
12937}
12938
12939VkResult VkEncoder::vkGetMemoryFdPropertiesKHR(
12940 VkDevice device,
12941 VkExternalMemoryHandleTypeFlagBits handleType,
12942 int fd,
12943 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
12944{
12945 auto stream = mImpl->stream();
12946 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012947 auto resources = mImpl->resources();
12948 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012949 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012950 VkDevice local_device;
12951 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012952 VkExternalMemoryHandleTypeFlagBits local_handleType;
12953 local_handleType = handleType;
12954 int local_fd;
12955 local_fd = fd;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012956 countingStream->rewind();
12957 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012958 uint64_t cgen_var_1012;
12959 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1012, 1);
12960 countingStream->write((uint64_t*)&cgen_var_1012, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012961 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12962 countingStream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012963 marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
12964 }
12965 uint32_t packetSize_vkGetMemoryFdPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12966 countingStream->rewind();
12967 uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR;
12968 stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
12969 stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080012970 uint64_t cgen_var_1013;
12971 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1013, 1);
12972 stream->write((uint64_t*)&cgen_var_1013, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012973 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12974 stream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012975 marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
12976 unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
12977 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
12978 stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012979 countingStream->clearPool();
12980 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012981 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012982 return vkGetMemoryFdPropertiesKHR_VkResult_return;
12983}
12984
12985#endif
12986#ifdef VK_KHR_win32_keyed_mutex
12987#endif
12988#ifdef VK_KHR_external_semaphore_capabilities
12989void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
12990 VkPhysicalDevice physicalDevice,
12991 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
12992 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
12993{
12994 auto stream = mImpl->stream();
12995 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012996 auto resources = mImpl->resources();
12997 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012998 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012999 VkPhysicalDevice local_physicalDevice;
13000 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013001 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
13002 local_pExternalSemaphoreInfo = nullptr;
13003 if (pExternalSemaphoreInfo)
13004 {
13005 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
13006 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
13007 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013008 countingStream->rewind();
13009 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013010 uint64_t cgen_var_1014;
13011 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1014, 1);
13012 countingStream->write((uint64_t*)&cgen_var_1014, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013013 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013014 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13015 }
13016 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13017 countingStream->rewind();
13018 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
13019 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
13020 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013021 uint64_t cgen_var_1015;
13022 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1015, 1);
13023 stream->write((uint64_t*)&cgen_var_1015, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013024 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013025 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13026 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13027}
13028
13029#endif
13030#ifdef VK_KHR_external_semaphore
13031#endif
13032#ifdef VK_KHR_external_semaphore_win32
13033VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR(
13034 VkDevice device,
13035 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
13036{
13037 auto stream = mImpl->stream();
13038 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013039 auto resources = mImpl->resources();
13040 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013041 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013042 VkDevice local_device;
13043 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013044 VkImportSemaphoreWin32HandleInfoKHR* local_pImportSemaphoreWin32HandleInfo;
13045 local_pImportSemaphoreWin32HandleInfo = nullptr;
13046 if (pImportSemaphoreWin32HandleInfo)
13047 {
13048 local_pImportSemaphoreWin32HandleInfo = (VkImportSemaphoreWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreWin32HandleInfoKHR));
13049 deepcopy_VkImportSemaphoreWin32HandleInfoKHR(pool, pImportSemaphoreWin32HandleInfo, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
13050 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013051 countingStream->rewind();
13052 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013053 uint64_t cgen_var_1016;
13054 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1016, 1);
13055 countingStream->write((uint64_t*)&cgen_var_1016, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013056 marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013057 }
13058 uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13059 countingStream->rewind();
13060 uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR;
13061 stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
13062 stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013063 uint64_t cgen_var_1017;
13064 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1017, 1);
13065 stream->write((uint64_t*)&cgen_var_1017, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013066 marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013067 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
13068 stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013069 countingStream->clearPool();
13070 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013071 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013072 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
13073}
13074
13075VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR(
13076 VkDevice device,
13077 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
13078 HANDLE* pHandle)
13079{
13080 auto stream = mImpl->stream();
13081 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013082 auto resources = mImpl->resources();
13083 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013084 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013085 VkDevice local_device;
13086 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013087 VkSemaphoreGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
13088 local_pGetWin32HandleInfo = nullptr;
13089 if (pGetWin32HandleInfo)
13090 {
13091 local_pGetWin32HandleInfo = (VkSemaphoreGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetWin32HandleInfoKHR));
13092 deepcopy_VkSemaphoreGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
13093 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013094 countingStream->rewind();
13095 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013096 uint64_t cgen_var_1018;
13097 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1018, 1);
13098 countingStream->write((uint64_t*)&cgen_var_1018, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013099 marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013100 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
13101 }
13102 uint32_t packetSize_vkGetSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13103 countingStream->rewind();
13104 uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR;
13105 stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
13106 stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013107 uint64_t cgen_var_1019;
13108 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1019, 1);
13109 stream->write((uint64_t*)&cgen_var_1019, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013110 marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013111 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
13112 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
13113 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
13114 stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013115 countingStream->clearPool();
13116 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013117 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013118 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
13119}
13120
13121#endif
13122#ifdef VK_KHR_external_semaphore_fd
13123VkResult VkEncoder::vkImportSemaphoreFdKHR(
13124 VkDevice device,
13125 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
13126{
13127 auto stream = mImpl->stream();
13128 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013129 auto resources = mImpl->resources();
13130 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013131 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013132 VkDevice local_device;
13133 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013134 VkImportSemaphoreFdInfoKHR* local_pImportSemaphoreFdInfo;
13135 local_pImportSemaphoreFdInfo = nullptr;
13136 if (pImportSemaphoreFdInfo)
13137 {
13138 local_pImportSemaphoreFdInfo = (VkImportSemaphoreFdInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreFdInfoKHR));
13139 deepcopy_VkImportSemaphoreFdInfoKHR(pool, pImportSemaphoreFdInfo, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
13140 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013141 countingStream->rewind();
13142 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013143 uint64_t cgen_var_1020;
13144 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1020, 1);
13145 countingStream->write((uint64_t*)&cgen_var_1020, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013146 marshal_VkImportSemaphoreFdInfoKHR(countingStream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013147 }
13148 uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13149 countingStream->rewind();
13150 uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR;
13151 stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t));
13152 stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013153 uint64_t cgen_var_1021;
13154 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1021, 1);
13155 stream->write((uint64_t*)&cgen_var_1021, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013156 marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013157 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
13158 stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013159 countingStream->clearPool();
13160 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013161 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013162 return vkImportSemaphoreFdKHR_VkResult_return;
13163}
13164
13165VkResult VkEncoder::vkGetSemaphoreFdKHR(
13166 VkDevice device,
13167 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
13168 int* pFd)
13169{
13170 auto stream = mImpl->stream();
13171 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013172 auto resources = mImpl->resources();
13173 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013174 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013175 VkDevice local_device;
13176 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013177 VkSemaphoreGetFdInfoKHR* local_pGetFdInfo;
13178 local_pGetFdInfo = nullptr;
13179 if (pGetFdInfo)
13180 {
13181 local_pGetFdInfo = (VkSemaphoreGetFdInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetFdInfoKHR));
13182 deepcopy_VkSemaphoreGetFdInfoKHR(pool, pGetFdInfo, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
13183 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013184 countingStream->rewind();
13185 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013186 uint64_t cgen_var_1022;
13187 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1022, 1);
13188 countingStream->write((uint64_t*)&cgen_var_1022, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013189 marshal_VkSemaphoreGetFdInfoKHR(countingStream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013190 countingStream->write((int*)pFd, sizeof(int));
13191 }
13192 uint32_t packetSize_vkGetSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13193 countingStream->rewind();
13194 uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR;
13195 stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t));
13196 stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013197 uint64_t cgen_var_1023;
13198 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1023, 1);
13199 stream->write((uint64_t*)&cgen_var_1023, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013200 marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013201 stream->write((int*)pFd, sizeof(int));
13202 stream->read((int*)pFd, sizeof(int));
13203 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
13204 stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013205 countingStream->clearPool();
13206 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013207 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013208 return vkGetSemaphoreFdKHR_VkResult_return;
13209}
13210
13211#endif
13212#ifdef VK_KHR_push_descriptor
13213void VkEncoder::vkCmdPushDescriptorSetKHR(
13214 VkCommandBuffer commandBuffer,
13215 VkPipelineBindPoint pipelineBindPoint,
13216 VkPipelineLayout layout,
13217 uint32_t set,
13218 uint32_t descriptorWriteCount,
13219 const VkWriteDescriptorSet* pDescriptorWrites)
13220{
13221 auto stream = mImpl->stream();
13222 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013223 auto resources = mImpl->resources();
13224 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013225 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013226 VkCommandBuffer local_commandBuffer;
13227 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013228 VkPipelineBindPoint local_pipelineBindPoint;
13229 local_pipelineBindPoint = pipelineBindPoint;
13230 VkPipelineLayout local_layout;
13231 local_layout = layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013232 uint32_t local_set;
13233 local_set = set;
13234 uint32_t local_descriptorWriteCount;
13235 local_descriptorWriteCount = descriptorWriteCount;
13236 VkWriteDescriptorSet* local_pDescriptorWrites;
13237 local_pDescriptorWrites = nullptr;
13238 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013239 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013240 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013241 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13242 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013243 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
13244 }
13245 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013246 countingStream->rewind();
13247 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013248 uint64_t cgen_var_1024;
13249 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1024, 1);
13250 countingStream->write((uint64_t*)&cgen_var_1024, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013251 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013252 uint64_t cgen_var_1025;
13253 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1025, 1);
13254 countingStream->write((uint64_t*)&cgen_var_1025, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013255 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
13256 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
13257 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13258 {
13259 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013260 }
13261 }
13262 uint32_t packetSize_vkCmdPushDescriptorSetKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13263 countingStream->rewind();
13264 uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR;
13265 stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
13266 stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013267 uint64_t cgen_var_1026;
13268 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1026, 1);
13269 stream->write((uint64_t*)&cgen_var_1026, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013270 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013271 uint64_t cgen_var_1027;
13272 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1027, 1);
13273 stream->write((uint64_t*)&cgen_var_1027, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013274 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
13275 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013276 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13277 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013278 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013279 }
13280}
13281
13282void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR(
13283 VkCommandBuffer commandBuffer,
13284 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13285 VkPipelineLayout layout,
13286 uint32_t set,
13287 const void* pData)
13288{
13289 auto stream = mImpl->stream();
13290 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013291 auto resources = mImpl->resources();
13292 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013293 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013294 VkCommandBuffer local_commandBuffer;
13295 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013296 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
13297 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013298 VkPipelineLayout local_layout;
13299 local_layout = layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013300 uint32_t local_set;
13301 local_set = set;
13302 void* local_pData;
13303 local_pData = nullptr;
13304 if (pData)
13305 {
13306 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
13307 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013308 countingStream->rewind();
13309 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080013310 uint64_t cgen_var_1028;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013311 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1028, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013312 countingStream->write((uint64_t*)&cgen_var_1028, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013313 uint64_t cgen_var_1029;
13314 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1029, 1);
13315 countingStream->write((uint64_t*)&cgen_var_1029, 1 * 8);
13316 uint64_t cgen_var_1030;
13317 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1030, 1);
13318 countingStream->write((uint64_t*)&cgen_var_1030, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013319 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013320 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013321 uint64_t cgen_var_1031 = (uint64_t)(uintptr_t)local_pData;
13322 countingStream->putBe64(cgen_var_1031);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013323 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013324 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013325 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013326 }
13327 }
13328 uint32_t packetSize_vkCmdPushDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13329 countingStream->rewind();
13330 uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR;
13331 stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
13332 stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013333 uint64_t cgen_var_1032;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013334 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1032, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013335 stream->write((uint64_t*)&cgen_var_1032, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013336 uint64_t cgen_var_1033;
13337 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1033, 1);
13338 stream->write((uint64_t*)&cgen_var_1033, 1 * 8);
13339 uint64_t cgen_var_1034;
13340 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1034, 1);
13341 stream->write((uint64_t*)&cgen_var_1034, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013342 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013343 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013344 uint64_t cgen_var_1035 = (uint64_t)(uintptr_t)local_pData;
13345 stream->putBe64(cgen_var_1035);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013346 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013347 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013348 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013349 }
13350}
13351
13352#endif
13353#ifdef VK_KHR_16bit_storage
13354#endif
13355#ifdef VK_KHR_incremental_present
13356#endif
13357#ifdef VK_KHR_descriptor_update_template
13358VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR(
13359 VkDevice device,
13360 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
13361 const VkAllocationCallbacks* pAllocator,
13362 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
13363{
13364 auto stream = mImpl->stream();
13365 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013366 auto resources = mImpl->resources();
13367 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013368 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013369 VkDevice local_device;
13370 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013371 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
13372 local_pCreateInfo = nullptr;
13373 if (pCreateInfo)
13374 {
13375 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
13376 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
13377 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013378 VkAllocationCallbacks* local_pAllocator;
13379 local_pAllocator = nullptr;
13380 if (pAllocator)
13381 {
13382 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13383 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13384 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013385 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013386 countingStream->rewind();
13387 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013388 uint64_t cgen_var_1036;
13389 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1036, 1);
13390 countingStream->write((uint64_t*)&cgen_var_1036, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013391 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013392 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013393 uint64_t cgen_var_1037 = (uint64_t)(uintptr_t)local_pAllocator;
13394 countingStream->putBe64(cgen_var_1037);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013395 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013396 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013397 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013398 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013399 uint64_t cgen_var_1038;
13400 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1038, 1);
13401 countingStream->write((uint64_t*)&cgen_var_1038, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013402 }
13403 uint32_t packetSize_vkCreateDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13404 countingStream->rewind();
13405 uint32_t opcode_vkCreateDescriptorUpdateTemplateKHR = OP_vkCreateDescriptorUpdateTemplateKHR;
13406 stream->write(&opcode_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
13407 stream->write(&packetSize_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013408 uint64_t cgen_var_1039;
13409 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1039, 1);
13410 stream->write((uint64_t*)&cgen_var_1039, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013411 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013412 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013413 uint64_t cgen_var_1040 = (uint64_t)(uintptr_t)local_pAllocator;
13414 stream->putBe64(cgen_var_1040);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013415 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013416 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013417 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013418 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013419 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013420 uint64_t cgen_var_1041;
13421 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1041, 1);
13422 stream->write((uint64_t*)&cgen_var_1041, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013423 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013424 uint64_t cgen_var_1042;
13425 stream->read((uint64_t*)&cgen_var_1042, 8);
13426 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1042, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013427 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
13428 stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013429 countingStream->clearPool();
13430 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013431 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013432 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
13433}
13434
13435void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR(
13436 VkDevice device,
13437 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13438 const VkAllocationCallbacks* pAllocator)
13439{
13440 auto stream = mImpl->stream();
13441 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013442 auto resources = mImpl->resources();
13443 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013444 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013445 VkDevice local_device;
13446 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013447 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
13448 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013449 VkAllocationCallbacks* local_pAllocator;
13450 local_pAllocator = nullptr;
13451 if (pAllocator)
13452 {
13453 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13454 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13455 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013456 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013457 countingStream->rewind();
13458 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013459 uint64_t cgen_var_1043;
13460 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1043, 1);
13461 countingStream->write((uint64_t*)&cgen_var_1043, 1 * 8);
13462 uint64_t cgen_var_1044;
13463 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1044, 1);
13464 countingStream->write((uint64_t*)&cgen_var_1044, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013465 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013466 uint64_t cgen_var_1045 = (uint64_t)(uintptr_t)local_pAllocator;
13467 countingStream->putBe64(cgen_var_1045);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013468 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013469 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013470 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013471 }
13472 }
13473 uint32_t packetSize_vkDestroyDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13474 countingStream->rewind();
13475 uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR;
13476 stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
13477 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013478 uint64_t cgen_var_1046;
13479 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1046, 1);
13480 stream->write((uint64_t*)&cgen_var_1046, 1 * 8);
13481 uint64_t cgen_var_1047;
13482 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1047, 1);
13483 stream->write((uint64_t*)&cgen_var_1047, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013484 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013485 uint64_t cgen_var_1048 = (uint64_t)(uintptr_t)local_pAllocator;
13486 stream->putBe64(cgen_var_1048);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013487 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013488 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013489 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013490 }
13491}
13492
13493void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR(
13494 VkDevice device,
13495 VkDescriptorSet descriptorSet,
13496 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13497 const void* pData)
13498{
13499 auto stream = mImpl->stream();
13500 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013501 auto resources = mImpl->resources();
13502 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013503 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013504 VkDevice local_device;
13505 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013506 VkDescriptorSet local_descriptorSet;
13507 local_descriptorSet = descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013508 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
13509 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013510 void* local_pData;
13511 local_pData = nullptr;
13512 if (pData)
13513 {
13514 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
13515 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013516 countingStream->rewind();
13517 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080013518 uint64_t cgen_var_1049;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013519 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1049, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013520 countingStream->write((uint64_t*)&cgen_var_1049, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013521 uint64_t cgen_var_1050;
13522 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1050, 1);
13523 countingStream->write((uint64_t*)&cgen_var_1050, 1 * 8);
13524 uint64_t cgen_var_1051;
13525 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1051, 1);
13526 countingStream->write((uint64_t*)&cgen_var_1051, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013527 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013528 uint64_t cgen_var_1052 = (uint64_t)(uintptr_t)local_pData;
13529 countingStream->putBe64(cgen_var_1052);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013530 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013531 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013532 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013533 }
13534 }
13535 uint32_t packetSize_vkUpdateDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13536 countingStream->rewind();
13537 uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR;
13538 stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
13539 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013540 uint64_t cgen_var_1053;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013541 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1053, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013542 stream->write((uint64_t*)&cgen_var_1053, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013543 uint64_t cgen_var_1054;
13544 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1054, 1);
13545 stream->write((uint64_t*)&cgen_var_1054, 1 * 8);
13546 uint64_t cgen_var_1055;
13547 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1055, 1);
13548 stream->write((uint64_t*)&cgen_var_1055, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013549 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013550 uint64_t cgen_var_1056 = (uint64_t)(uintptr_t)local_pData;
13551 stream->putBe64(cgen_var_1056);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013552 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013553 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013554 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013555 }
13556}
13557
13558#endif
13559#ifdef VK_KHR_create_renderpass2
13560VkResult VkEncoder::vkCreateRenderPass2KHR(
13561 VkDevice device,
13562 const VkRenderPassCreateInfo2KHR* pCreateInfo,
13563 const VkAllocationCallbacks* pAllocator,
13564 VkRenderPass* pRenderPass)
13565{
13566 auto stream = mImpl->stream();
13567 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013568 auto resources = mImpl->resources();
13569 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013570 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013571 VkDevice local_device;
13572 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013573 VkRenderPassCreateInfo2KHR* local_pCreateInfo;
13574 local_pCreateInfo = nullptr;
13575 if (pCreateInfo)
13576 {
13577 local_pCreateInfo = (VkRenderPassCreateInfo2KHR*)pool->alloc(sizeof(const VkRenderPassCreateInfo2KHR));
13578 deepcopy_VkRenderPassCreateInfo2KHR(pool, pCreateInfo, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
13579 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013580 VkAllocationCallbacks* local_pAllocator;
13581 local_pAllocator = nullptr;
13582 if (pAllocator)
13583 {
13584 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13585 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13586 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013587 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013588 countingStream->rewind();
13589 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013590 uint64_t cgen_var_1057;
13591 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1057, 1);
13592 countingStream->write((uint64_t*)&cgen_var_1057, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013593 marshal_VkRenderPassCreateInfo2KHR(countingStream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013594 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013595 uint64_t cgen_var_1058 = (uint64_t)(uintptr_t)local_pAllocator;
13596 countingStream->putBe64(cgen_var_1058);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013597 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013598 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013599 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013600 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013601 uint64_t cgen_var_1059;
13602 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1059, 1);
13603 countingStream->write((uint64_t*)&cgen_var_1059, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013604 }
13605 uint32_t packetSize_vkCreateRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13606 countingStream->rewind();
13607 uint32_t opcode_vkCreateRenderPass2KHR = OP_vkCreateRenderPass2KHR;
13608 stream->write(&opcode_vkCreateRenderPass2KHR, sizeof(uint32_t));
13609 stream->write(&packetSize_vkCreateRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013610 uint64_t cgen_var_1060;
13611 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1060, 1);
13612 stream->write((uint64_t*)&cgen_var_1060, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013613 marshal_VkRenderPassCreateInfo2KHR(stream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013614 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013615 uint64_t cgen_var_1061 = (uint64_t)(uintptr_t)local_pAllocator;
13616 stream->putBe64(cgen_var_1061);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013617 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013618 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013619 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013620 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013621 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013622 uint64_t cgen_var_1062;
13623 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1062, 1);
13624 stream->write((uint64_t*)&cgen_var_1062, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013625 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013626 uint64_t cgen_var_1063;
13627 stream->read((uint64_t*)&cgen_var_1063, 8);
13628 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1063, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013629 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
13630 stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013631 countingStream->clearPool();
13632 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013633 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013634 return vkCreateRenderPass2KHR_VkResult_return;
13635}
13636
13637void VkEncoder::vkCmdBeginRenderPass2KHR(
13638 VkCommandBuffer commandBuffer,
13639 const VkRenderPassBeginInfo* pRenderPassBegin,
13640 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
13641{
13642 auto stream = mImpl->stream();
13643 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013644 auto resources = mImpl->resources();
13645 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013646 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013647 VkCommandBuffer local_commandBuffer;
13648 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013649 VkRenderPassBeginInfo* local_pRenderPassBegin;
13650 local_pRenderPassBegin = nullptr;
13651 if (pRenderPassBegin)
13652 {
13653 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
13654 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13655 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013656 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
13657 local_pSubpassBeginInfo = nullptr;
13658 if (pSubpassBeginInfo)
13659 {
13660 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
13661 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13662 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013663 countingStream->rewind();
13664 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013665 uint64_t cgen_var_1064;
13666 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1064, 1);
13667 countingStream->write((uint64_t*)&cgen_var_1064, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013668 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13669 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013670 }
13671 uint32_t packetSize_vkCmdBeginRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13672 countingStream->rewind();
13673 uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR;
13674 stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
13675 stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013676 uint64_t cgen_var_1065;
13677 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1065, 1);
13678 stream->write((uint64_t*)&cgen_var_1065, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013679 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13680 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013681}
13682
13683void VkEncoder::vkCmdNextSubpass2KHR(
13684 VkCommandBuffer commandBuffer,
13685 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
13686 const VkSubpassEndInfoKHR* pSubpassEndInfo)
13687{
13688 auto stream = mImpl->stream();
13689 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013690 auto resources = mImpl->resources();
13691 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013692 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013693 VkCommandBuffer local_commandBuffer;
13694 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013695 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
13696 local_pSubpassBeginInfo = nullptr;
13697 if (pSubpassBeginInfo)
13698 {
13699 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
13700 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13701 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013702 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
13703 local_pSubpassEndInfo = nullptr;
13704 if (pSubpassEndInfo)
13705 {
13706 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
13707 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
13708 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013709 countingStream->rewind();
13710 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013711 uint64_t cgen_var_1066;
13712 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1066, 1);
13713 countingStream->write((uint64_t*)&cgen_var_1066, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013714 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13715 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013716 }
13717 uint32_t packetSize_vkCmdNextSubpass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13718 countingStream->rewind();
13719 uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR;
13720 stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t));
13721 stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013722 uint64_t cgen_var_1067;
13723 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1067, 1);
13724 stream->write((uint64_t*)&cgen_var_1067, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013725 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13726 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013727}
13728
13729void VkEncoder::vkCmdEndRenderPass2KHR(
13730 VkCommandBuffer commandBuffer,
13731 const VkSubpassEndInfoKHR* pSubpassEndInfo)
13732{
13733 auto stream = mImpl->stream();
13734 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013735 auto resources = mImpl->resources();
13736 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013737 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013738 VkCommandBuffer local_commandBuffer;
13739 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013740 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
13741 local_pSubpassEndInfo = nullptr;
13742 if (pSubpassEndInfo)
13743 {
13744 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
13745 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
13746 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013747 countingStream->rewind();
13748 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013749 uint64_t cgen_var_1068;
13750 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1068, 1);
13751 countingStream->write((uint64_t*)&cgen_var_1068, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013752 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013753 }
13754 uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13755 countingStream->rewind();
13756 uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR;
13757 stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
13758 stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013759 uint64_t cgen_var_1069;
13760 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1069, 1);
13761 stream->write((uint64_t*)&cgen_var_1069, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013762 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013763}
13764
13765#endif
13766#ifdef VK_KHR_shared_presentable_image
13767VkResult VkEncoder::vkGetSwapchainStatusKHR(
13768 VkDevice device,
13769 VkSwapchainKHR swapchain)
13770{
13771 auto stream = mImpl->stream();
13772 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013773 auto resources = mImpl->resources();
13774 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013775 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013776 VkDevice local_device;
13777 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013778 VkSwapchainKHR local_swapchain;
13779 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013780 countingStream->rewind();
13781 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013782 uint64_t cgen_var_1070;
13783 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1070, 1);
13784 countingStream->write((uint64_t*)&cgen_var_1070, 1 * 8);
13785 uint64_t cgen_var_1071;
13786 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1071, 1);
13787 countingStream->write((uint64_t*)&cgen_var_1071, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013788 }
13789 uint32_t packetSize_vkGetSwapchainStatusKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13790 countingStream->rewind();
13791 uint32_t opcode_vkGetSwapchainStatusKHR = OP_vkGetSwapchainStatusKHR;
13792 stream->write(&opcode_vkGetSwapchainStatusKHR, sizeof(uint32_t));
13793 stream->write(&packetSize_vkGetSwapchainStatusKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013794 uint64_t cgen_var_1072;
13795 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1072, 1);
13796 stream->write((uint64_t*)&cgen_var_1072, 1 * 8);
13797 uint64_t cgen_var_1073;
13798 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1073, 1);
13799 stream->write((uint64_t*)&cgen_var_1073, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013800 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
13801 stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013802 countingStream->clearPool();
13803 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013804 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013805 return vkGetSwapchainStatusKHR_VkResult_return;
13806}
13807
13808#endif
13809#ifdef VK_KHR_external_fence_capabilities
13810void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR(
13811 VkPhysicalDevice physicalDevice,
13812 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
13813 VkExternalFenceProperties* pExternalFenceProperties)
13814{
13815 auto stream = mImpl->stream();
13816 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013817 auto resources = mImpl->resources();
13818 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013819 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013820 VkPhysicalDevice local_physicalDevice;
13821 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013822 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
13823 local_pExternalFenceInfo = nullptr;
13824 if (pExternalFenceInfo)
13825 {
13826 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
13827 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
13828 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013829 countingStream->rewind();
13830 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013831 uint64_t cgen_var_1074;
13832 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1074, 1);
13833 countingStream->write((uint64_t*)&cgen_var_1074, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013834 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013835 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13836 }
13837 uint32_t packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13838 countingStream->rewind();
13839 uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
13840 stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
13841 stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013842 uint64_t cgen_var_1075;
13843 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1075, 1);
13844 stream->write((uint64_t*)&cgen_var_1075, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013845 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013846 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13847 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13848}
13849
13850#endif
13851#ifdef VK_KHR_external_fence
13852#endif
13853#ifdef VK_KHR_external_fence_win32
13854VkResult VkEncoder::vkImportFenceWin32HandleKHR(
13855 VkDevice device,
13856 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
13857{
13858 auto stream = mImpl->stream();
13859 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013860 auto resources = mImpl->resources();
13861 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013862 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013863 VkDevice local_device;
13864 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013865 VkImportFenceWin32HandleInfoKHR* local_pImportFenceWin32HandleInfo;
13866 local_pImportFenceWin32HandleInfo = nullptr;
13867 if (pImportFenceWin32HandleInfo)
13868 {
13869 local_pImportFenceWin32HandleInfo = (VkImportFenceWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportFenceWin32HandleInfoKHR));
13870 deepcopy_VkImportFenceWin32HandleInfoKHR(pool, pImportFenceWin32HandleInfo, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
13871 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013872 countingStream->rewind();
13873 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013874 uint64_t cgen_var_1076;
13875 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1076, 1);
13876 countingStream->write((uint64_t*)&cgen_var_1076, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013877 marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013878 }
13879 uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13880 countingStream->rewind();
13881 uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR;
13882 stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
13883 stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013884 uint64_t cgen_var_1077;
13885 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1077, 1);
13886 stream->write((uint64_t*)&cgen_var_1077, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013887 marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013888 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
13889 stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013890 countingStream->clearPool();
13891 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013892 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013893 return vkImportFenceWin32HandleKHR_VkResult_return;
13894}
13895
13896VkResult VkEncoder::vkGetFenceWin32HandleKHR(
13897 VkDevice device,
13898 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
13899 HANDLE* pHandle)
13900{
13901 auto stream = mImpl->stream();
13902 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013903 auto resources = mImpl->resources();
13904 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013905 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013906 VkDevice local_device;
13907 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013908 VkFenceGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
13909 local_pGetWin32HandleInfo = nullptr;
13910 if (pGetWin32HandleInfo)
13911 {
13912 local_pGetWin32HandleInfo = (VkFenceGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkFenceGetWin32HandleInfoKHR));
13913 deepcopy_VkFenceGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
13914 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013915 countingStream->rewind();
13916 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013917 uint64_t cgen_var_1078;
13918 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1078, 1);
13919 countingStream->write((uint64_t*)&cgen_var_1078, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013920 marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013921 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
13922 }
13923 uint32_t packetSize_vkGetFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13924 countingStream->rewind();
13925 uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR;
13926 stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
13927 stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013928 uint64_t cgen_var_1079;
13929 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1079, 1);
13930 stream->write((uint64_t*)&cgen_var_1079, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013931 marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013932 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
13933 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
13934 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
13935 stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013936 countingStream->clearPool();
13937 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013938 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013939 return vkGetFenceWin32HandleKHR_VkResult_return;
13940}
13941
13942#endif
13943#ifdef VK_KHR_external_fence_fd
13944VkResult VkEncoder::vkImportFenceFdKHR(
13945 VkDevice device,
13946 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
13947{
13948 auto stream = mImpl->stream();
13949 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013950 auto resources = mImpl->resources();
13951 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013952 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013953 VkDevice local_device;
13954 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013955 VkImportFenceFdInfoKHR* local_pImportFenceFdInfo;
13956 local_pImportFenceFdInfo = nullptr;
13957 if (pImportFenceFdInfo)
13958 {
13959 local_pImportFenceFdInfo = (VkImportFenceFdInfoKHR*)pool->alloc(sizeof(const VkImportFenceFdInfoKHR));
13960 deepcopy_VkImportFenceFdInfoKHR(pool, pImportFenceFdInfo, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
13961 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013962 countingStream->rewind();
13963 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013964 uint64_t cgen_var_1080;
13965 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1080, 1);
13966 countingStream->write((uint64_t*)&cgen_var_1080, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013967 marshal_VkImportFenceFdInfoKHR(countingStream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013968 }
13969 uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13970 countingStream->rewind();
13971 uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR;
13972 stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t));
13973 stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080013974 uint64_t cgen_var_1081;
13975 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1081, 1);
13976 stream->write((uint64_t*)&cgen_var_1081, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013977 marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013978 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
13979 stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013980 countingStream->clearPool();
13981 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013982 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013983 return vkImportFenceFdKHR_VkResult_return;
13984}
13985
13986VkResult VkEncoder::vkGetFenceFdKHR(
13987 VkDevice device,
13988 const VkFenceGetFdInfoKHR* pGetFdInfo,
13989 int* pFd)
13990{
13991 auto stream = mImpl->stream();
13992 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013993 auto resources = mImpl->resources();
13994 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013995 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013996 VkDevice local_device;
13997 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013998 VkFenceGetFdInfoKHR* local_pGetFdInfo;
13999 local_pGetFdInfo = nullptr;
14000 if (pGetFdInfo)
14001 {
14002 local_pGetFdInfo = (VkFenceGetFdInfoKHR*)pool->alloc(sizeof(const VkFenceGetFdInfoKHR));
14003 deepcopy_VkFenceGetFdInfoKHR(pool, pGetFdInfo, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
14004 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014005 countingStream->rewind();
14006 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014007 uint64_t cgen_var_1082;
14008 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1082, 1);
14009 countingStream->write((uint64_t*)&cgen_var_1082, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014010 marshal_VkFenceGetFdInfoKHR(countingStream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014011 countingStream->write((int*)pFd, sizeof(int));
14012 }
14013 uint32_t packetSize_vkGetFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14014 countingStream->rewind();
14015 uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR;
14016 stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t));
14017 stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014018 uint64_t cgen_var_1083;
14019 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1083, 1);
14020 stream->write((uint64_t*)&cgen_var_1083, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014021 marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014022 stream->write((int*)pFd, sizeof(int));
14023 stream->read((int*)pFd, sizeof(int));
14024 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
14025 stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014026 countingStream->clearPool();
14027 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014028 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014029 return vkGetFenceFdKHR_VkResult_return;
14030}
14031
14032#endif
14033#ifdef VK_KHR_maintenance2
14034#endif
14035#ifdef VK_KHR_get_surface_capabilities2
14036VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR(
14037 VkPhysicalDevice physicalDevice,
14038 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
14039 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
14040{
14041 auto stream = mImpl->stream();
14042 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014043 auto resources = mImpl->resources();
14044 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014045 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014046 VkPhysicalDevice local_physicalDevice;
14047 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014048 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
14049 local_pSurfaceInfo = nullptr;
14050 if (pSurfaceInfo)
14051 {
14052 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
14053 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
14054 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014055 countingStream->rewind();
14056 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014057 uint64_t cgen_var_1084;
14058 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1084, 1);
14059 countingStream->write((uint64_t*)&cgen_var_1084, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014060 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014061 marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14062 }
14063 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14064 countingStream->rewind();
14065 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
14066 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
14067 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014068 uint64_t cgen_var_1085;
14069 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1085, 1);
14070 stream->write((uint64_t*)&cgen_var_1085, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014071 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014072 marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14073 unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14074 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
14075 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014076 countingStream->clearPool();
14077 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014078 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014079 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
14080}
14081
14082VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR(
14083 VkPhysicalDevice physicalDevice,
14084 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
14085 uint32_t* pSurfaceFormatCount,
14086 VkSurfaceFormat2KHR* pSurfaceFormats)
14087{
14088 auto stream = mImpl->stream();
14089 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014090 auto resources = mImpl->resources();
14091 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014092 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014093 VkPhysicalDevice local_physicalDevice;
14094 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014095 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
14096 local_pSurfaceInfo = nullptr;
14097 if (pSurfaceInfo)
14098 {
14099 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
14100 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
14101 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014102 countingStream->rewind();
14103 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014104 uint64_t cgen_var_1086;
14105 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1086, 1);
14106 countingStream->write((uint64_t*)&cgen_var_1086, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014107 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014108 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014109 uint64_t cgen_var_1087 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
14110 countingStream->putBe64(cgen_var_1087);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014111 if (pSurfaceFormatCount)
14112 {
14113 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14114 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014115 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014116 uint64_t cgen_var_1088 = (uint64_t)(uintptr_t)pSurfaceFormats;
14117 countingStream->putBe64(cgen_var_1088);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014118 if (pSurfaceFormats)
14119 {
14120 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14121 {
14122 marshal_VkSurfaceFormat2KHR(countingStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14123 }
14124 }
14125 }
14126 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14127 countingStream->rewind();
14128 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
14129 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
14130 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014131 uint64_t cgen_var_1089;
14132 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1089, 1);
14133 stream->write((uint64_t*)&cgen_var_1089, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014134 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014135 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014136 uint64_t cgen_var_1090 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
14137 stream->putBe64(cgen_var_1090);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014138 if (pSurfaceFormatCount)
14139 {
14140 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14141 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014142 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014143 uint64_t cgen_var_1091 = (uint64_t)(uintptr_t)pSurfaceFormats;
14144 stream->putBe64(cgen_var_1091);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014145 if (pSurfaceFormats)
14146 {
14147 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14148 {
14149 marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14150 }
14151 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014152 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014153 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014154 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014155 if (pSurfaceFormatCount)
14156 {
14157 if (!(check_pSurfaceFormatCount))
14158 {
14159 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
14160 }
14161 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14162 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014163 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014164 VkSurfaceFormat2KHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014165 check_pSurfaceFormats = (VkSurfaceFormat2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014166 if (pSurfaceFormats)
14167 {
14168 if (!(check_pSurfaceFormats))
14169 {
14170 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
14171 }
14172 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14173 {
14174 unmarshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14175 }
14176 }
14177 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
14178 stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014179 countingStream->clearPool();
14180 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014181 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014182 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
14183}
14184
14185#endif
14186#ifdef VK_KHR_variable_pointers
14187#endif
14188#ifdef VK_KHR_get_display_properties2
14189VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR(
14190 VkPhysicalDevice physicalDevice,
14191 uint32_t* pPropertyCount,
14192 VkDisplayProperties2KHR* pProperties)
14193{
14194 auto stream = mImpl->stream();
14195 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014196 auto resources = mImpl->resources();
14197 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014198 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014199 VkPhysicalDevice local_physicalDevice;
14200 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014201 countingStream->rewind();
14202 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014203 uint64_t cgen_var_1094;
14204 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1094, 1);
14205 countingStream->write((uint64_t*)&cgen_var_1094, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014206 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014207 uint64_t cgen_var_1095 = (uint64_t)(uintptr_t)pPropertyCount;
14208 countingStream->putBe64(cgen_var_1095);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014209 if (pPropertyCount)
14210 {
14211 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14212 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014213 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014214 uint64_t cgen_var_1096 = (uint64_t)(uintptr_t)pProperties;
14215 countingStream->putBe64(cgen_var_1096);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014216 if (pProperties)
14217 {
14218 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14219 {
14220 marshal_VkDisplayProperties2KHR(countingStream, (VkDisplayProperties2KHR*)(pProperties + i));
14221 }
14222 }
14223 }
14224 uint32_t packetSize_vkGetPhysicalDeviceDisplayProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14225 countingStream->rewind();
14226 uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
14227 stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
14228 stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014229 uint64_t cgen_var_1097;
14230 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1097, 1);
14231 stream->write((uint64_t*)&cgen_var_1097, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014232 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014233 uint64_t cgen_var_1098 = (uint64_t)(uintptr_t)pPropertyCount;
14234 stream->putBe64(cgen_var_1098);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014235 if (pPropertyCount)
14236 {
14237 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14238 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014239 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014240 uint64_t cgen_var_1099 = (uint64_t)(uintptr_t)pProperties;
14241 stream->putBe64(cgen_var_1099);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014242 if (pProperties)
14243 {
14244 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14245 {
14246 marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
14247 }
14248 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014249 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014250 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014251 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014252 if (pPropertyCount)
14253 {
14254 if (!(check_pPropertyCount))
14255 {
14256 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14257 }
14258 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14259 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014260 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014261 VkDisplayProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014262 check_pProperties = (VkDisplayProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014263 if (pProperties)
14264 {
14265 if (!(check_pProperties))
14266 {
14267 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14268 }
14269 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14270 {
14271 unmarshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
14272 }
14273 }
14274 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
14275 stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014276 countingStream->clearPool();
14277 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014278 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014279 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
14280}
14281
14282VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
14283 VkPhysicalDevice physicalDevice,
14284 uint32_t* pPropertyCount,
14285 VkDisplayPlaneProperties2KHR* pProperties)
14286{
14287 auto stream = mImpl->stream();
14288 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014289 auto resources = mImpl->resources();
14290 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014291 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014292 VkPhysicalDevice local_physicalDevice;
14293 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014294 countingStream->rewind();
14295 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014296 uint64_t cgen_var_1102;
14297 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1102, 1);
14298 countingStream->write((uint64_t*)&cgen_var_1102, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014299 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014300 uint64_t cgen_var_1103 = (uint64_t)(uintptr_t)pPropertyCount;
14301 countingStream->putBe64(cgen_var_1103);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014302 if (pPropertyCount)
14303 {
14304 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14305 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014306 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014307 uint64_t cgen_var_1104 = (uint64_t)(uintptr_t)pProperties;
14308 countingStream->putBe64(cgen_var_1104);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014309 if (pProperties)
14310 {
14311 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14312 {
14313 marshal_VkDisplayPlaneProperties2KHR(countingStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14314 }
14315 }
14316 }
14317 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14318 countingStream->rewind();
14319 uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
14320 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
14321 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014322 uint64_t cgen_var_1105;
14323 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1105, 1);
14324 stream->write((uint64_t*)&cgen_var_1105, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014325 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014326 uint64_t cgen_var_1106 = (uint64_t)(uintptr_t)pPropertyCount;
14327 stream->putBe64(cgen_var_1106);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014328 if (pPropertyCount)
14329 {
14330 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14331 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014332 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014333 uint64_t cgen_var_1107 = (uint64_t)(uintptr_t)pProperties;
14334 stream->putBe64(cgen_var_1107);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014335 if (pProperties)
14336 {
14337 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14338 {
14339 marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14340 }
14341 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014342 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014343 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014344 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014345 if (pPropertyCount)
14346 {
14347 if (!(check_pPropertyCount))
14348 {
14349 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14350 }
14351 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14352 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014353 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014354 VkDisplayPlaneProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014355 check_pProperties = (VkDisplayPlaneProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014356 if (pProperties)
14357 {
14358 if (!(check_pProperties))
14359 {
14360 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14361 }
14362 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14363 {
14364 unmarshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14365 }
14366 }
14367 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
14368 stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014369 countingStream->clearPool();
14370 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014371 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014372 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
14373}
14374
14375VkResult VkEncoder::vkGetDisplayModeProperties2KHR(
14376 VkPhysicalDevice physicalDevice,
14377 VkDisplayKHR display,
14378 uint32_t* pPropertyCount,
14379 VkDisplayModeProperties2KHR* pProperties)
14380{
14381 auto stream = mImpl->stream();
14382 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014383 auto resources = mImpl->resources();
14384 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014385 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014386 VkPhysicalDevice local_physicalDevice;
14387 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014388 VkDisplayKHR local_display;
14389 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014390 countingStream->rewind();
14391 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014392 uint64_t cgen_var_1110;
14393 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1110, 1);
14394 countingStream->write((uint64_t*)&cgen_var_1110, 1 * 8);
14395 uint64_t cgen_var_1111;
14396 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1111, 1);
14397 countingStream->write((uint64_t*)&cgen_var_1111, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014398 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014399 uint64_t cgen_var_1112 = (uint64_t)(uintptr_t)pPropertyCount;
14400 countingStream->putBe64(cgen_var_1112);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014401 if (pPropertyCount)
14402 {
14403 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14404 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014405 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014406 uint64_t cgen_var_1113 = (uint64_t)(uintptr_t)pProperties;
14407 countingStream->putBe64(cgen_var_1113);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014408 if (pProperties)
14409 {
14410 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14411 {
14412 marshal_VkDisplayModeProperties2KHR(countingStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14413 }
14414 }
14415 }
14416 uint32_t packetSize_vkGetDisplayModeProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14417 countingStream->rewind();
14418 uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR;
14419 stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
14420 stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014421 uint64_t cgen_var_1114;
14422 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1114, 1);
14423 stream->write((uint64_t*)&cgen_var_1114, 1 * 8);
14424 uint64_t cgen_var_1115;
14425 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1115, 1);
14426 stream->write((uint64_t*)&cgen_var_1115, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014427 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014428 uint64_t cgen_var_1116 = (uint64_t)(uintptr_t)pPropertyCount;
14429 stream->putBe64(cgen_var_1116);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014430 if (pPropertyCount)
14431 {
14432 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14433 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014434 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014435 uint64_t cgen_var_1117 = (uint64_t)(uintptr_t)pProperties;
14436 stream->putBe64(cgen_var_1117);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014437 if (pProperties)
14438 {
14439 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14440 {
14441 marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14442 }
14443 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014444 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014445 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014446 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014447 if (pPropertyCount)
14448 {
14449 if (!(check_pPropertyCount))
14450 {
14451 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14452 }
14453 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14454 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014455 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014456 VkDisplayModeProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014457 check_pProperties = (VkDisplayModeProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014458 if (pProperties)
14459 {
14460 if (!(check_pProperties))
14461 {
14462 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14463 }
14464 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14465 {
14466 unmarshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14467 }
14468 }
14469 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
14470 stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014471 countingStream->clearPool();
14472 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014473 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014474 return vkGetDisplayModeProperties2KHR_VkResult_return;
14475}
14476
14477VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR(
14478 VkPhysicalDevice physicalDevice,
14479 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
14480 VkDisplayPlaneCapabilities2KHR* pCapabilities)
14481{
14482 auto stream = mImpl->stream();
14483 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014484 auto resources = mImpl->resources();
14485 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014486 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014487 VkPhysicalDevice local_physicalDevice;
14488 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014489 VkDisplayPlaneInfo2KHR* local_pDisplayPlaneInfo;
14490 local_pDisplayPlaneInfo = nullptr;
14491 if (pDisplayPlaneInfo)
14492 {
14493 local_pDisplayPlaneInfo = (VkDisplayPlaneInfo2KHR*)pool->alloc(sizeof(const VkDisplayPlaneInfo2KHR));
14494 deepcopy_VkDisplayPlaneInfo2KHR(pool, pDisplayPlaneInfo, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
14495 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014496 countingStream->rewind();
14497 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014498 uint64_t cgen_var_1120;
14499 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1120, 1);
14500 countingStream->write((uint64_t*)&cgen_var_1120, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014501 marshal_VkDisplayPlaneInfo2KHR(countingStream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014502 marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14503 }
14504 uint32_t packetSize_vkGetDisplayPlaneCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14505 countingStream->rewind();
14506 uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR;
14507 stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
14508 stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014509 uint64_t cgen_var_1121;
14510 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1121, 1);
14511 stream->write((uint64_t*)&cgen_var_1121, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014512 marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014513 marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14514 unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14515 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
14516 stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014517 countingStream->clearPool();
14518 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014519 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014520 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
14521}
14522
14523#endif
14524#ifdef VK_KHR_dedicated_allocation
14525#endif
14526#ifdef VK_KHR_storage_buffer_storage_class
14527#endif
14528#ifdef VK_KHR_relaxed_block_layout
14529#endif
14530#ifdef VK_KHR_get_memory_requirements2
14531void VkEncoder::vkGetImageMemoryRequirements2KHR(
14532 VkDevice device,
14533 const VkImageMemoryRequirementsInfo2* pInfo,
14534 VkMemoryRequirements2* pMemoryRequirements)
14535{
14536 auto stream = mImpl->stream();
14537 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014538 auto resources = mImpl->resources();
14539 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014540 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014541 VkDevice local_device;
14542 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014543 VkImageMemoryRequirementsInfo2* local_pInfo;
14544 local_pInfo = nullptr;
14545 if (pInfo)
14546 {
14547 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
14548 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
14549 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014550 countingStream->rewind();
14551 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014552 uint64_t cgen_var_1122;
14553 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1122, 1);
14554 countingStream->write((uint64_t*)&cgen_var_1122, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014555 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014556 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
14557 }
14558 uint32_t packetSize_vkGetImageMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14559 countingStream->rewind();
14560 uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR;
14561 stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
14562 stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014563 uint64_t cgen_var_1123;
14564 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1123, 1);
14565 stream->write((uint64_t*)&cgen_var_1123, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014566 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014567 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14568 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14569}
14570
14571void VkEncoder::vkGetBufferMemoryRequirements2KHR(
14572 VkDevice device,
14573 const VkBufferMemoryRequirementsInfo2* pInfo,
14574 VkMemoryRequirements2* pMemoryRequirements)
14575{
14576 auto stream = mImpl->stream();
14577 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014578 auto resources = mImpl->resources();
14579 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014580 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014581 VkDevice local_device;
14582 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014583 VkBufferMemoryRequirementsInfo2* local_pInfo;
14584 local_pInfo = nullptr;
14585 if (pInfo)
14586 {
14587 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
14588 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
14589 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014590 countingStream->rewind();
14591 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014592 uint64_t cgen_var_1124;
14593 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1124, 1);
14594 countingStream->write((uint64_t*)&cgen_var_1124, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014595 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014596 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
14597 }
14598 uint32_t packetSize_vkGetBufferMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14599 countingStream->rewind();
14600 uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR;
14601 stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
14602 stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014603 uint64_t cgen_var_1125;
14604 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1125, 1);
14605 stream->write((uint64_t*)&cgen_var_1125, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014606 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014607 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14608 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14609}
14610
14611void VkEncoder::vkGetImageSparseMemoryRequirements2KHR(
14612 VkDevice device,
14613 const VkImageSparseMemoryRequirementsInfo2* pInfo,
14614 uint32_t* pSparseMemoryRequirementCount,
14615 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
14616{
14617 auto stream = mImpl->stream();
14618 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014619 auto resources = mImpl->resources();
14620 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014621 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014622 VkDevice local_device;
14623 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014624 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
14625 local_pInfo = nullptr;
14626 if (pInfo)
14627 {
14628 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
14629 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
14630 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014631 countingStream->rewind();
14632 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014633 uint64_t cgen_var_1126;
14634 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1126, 1);
14635 countingStream->write((uint64_t*)&cgen_var_1126, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014636 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014637 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014638 uint64_t cgen_var_1127 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
14639 countingStream->putBe64(cgen_var_1127);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014640 if (pSparseMemoryRequirementCount)
14641 {
14642 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14643 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014644 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014645 uint64_t cgen_var_1128 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
14646 countingStream->putBe64(cgen_var_1128);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014647 if (pSparseMemoryRequirements)
14648 {
14649 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14650 {
14651 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14652 }
14653 }
14654 }
14655 uint32_t packetSize_vkGetImageSparseMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14656 countingStream->rewind();
14657 uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR;
14658 stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
14659 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014660 uint64_t cgen_var_1129;
14661 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1129, 1);
14662 stream->write((uint64_t*)&cgen_var_1129, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014663 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014664 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014665 uint64_t cgen_var_1130 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
14666 stream->putBe64(cgen_var_1130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014667 if (pSparseMemoryRequirementCount)
14668 {
14669 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14670 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014671 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014672 uint64_t cgen_var_1131 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
14673 stream->putBe64(cgen_var_1131);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014674 if (pSparseMemoryRequirements)
14675 {
14676 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14677 {
14678 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14679 }
14680 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014681 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014682 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014683 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014684 if (pSparseMemoryRequirementCount)
14685 {
14686 if (!(check_pSparseMemoryRequirementCount))
14687 {
14688 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
14689 }
14690 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14691 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014692 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014693 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014694 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014695 if (pSparseMemoryRequirements)
14696 {
14697 if (!(check_pSparseMemoryRequirements))
14698 {
14699 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
14700 }
14701 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14702 {
14703 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14704 }
14705 }
14706}
14707
14708#endif
14709#ifdef VK_KHR_image_format_list
14710#endif
14711#ifdef VK_KHR_sampler_ycbcr_conversion
14712VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR(
14713 VkDevice device,
14714 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
14715 const VkAllocationCallbacks* pAllocator,
14716 VkSamplerYcbcrConversion* pYcbcrConversion)
14717{
14718 auto stream = mImpl->stream();
14719 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014720 auto resources = mImpl->resources();
14721 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014722 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014723 VkDevice local_device;
14724 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014725 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
14726 local_pCreateInfo = nullptr;
14727 if (pCreateInfo)
14728 {
14729 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
14730 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
14731 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014732 VkAllocationCallbacks* local_pAllocator;
14733 local_pAllocator = nullptr;
14734 if (pAllocator)
14735 {
14736 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14737 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14738 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014739 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014740 countingStream->rewind();
14741 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014742 uint64_t cgen_var_1134;
14743 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1134, 1);
14744 countingStream->write((uint64_t*)&cgen_var_1134, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014745 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014746 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014747 uint64_t cgen_var_1135 = (uint64_t)(uintptr_t)local_pAllocator;
14748 countingStream->putBe64(cgen_var_1135);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014749 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014750 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014751 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014752 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014753 uint64_t cgen_var_1136;
14754 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1136, 1);
14755 countingStream->write((uint64_t*)&cgen_var_1136, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014756 }
14757 uint32_t packetSize_vkCreateSamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14758 countingStream->rewind();
14759 uint32_t opcode_vkCreateSamplerYcbcrConversionKHR = OP_vkCreateSamplerYcbcrConversionKHR;
14760 stream->write(&opcode_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
14761 stream->write(&packetSize_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014762 uint64_t cgen_var_1137;
14763 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1137, 1);
14764 stream->write((uint64_t*)&cgen_var_1137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014765 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014766 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014767 uint64_t cgen_var_1138 = (uint64_t)(uintptr_t)local_pAllocator;
14768 stream->putBe64(cgen_var_1138);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014769 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014770 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014771 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014772 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080014773 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014774 uint64_t cgen_var_1139;
14775 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1139, 1);
14776 stream->write((uint64_t*)&cgen_var_1139, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080014777 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014778 uint64_t cgen_var_1140;
14779 stream->read((uint64_t*)&cgen_var_1140, 8);
14780 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1140, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014781 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
14782 stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014783 countingStream->clearPool();
14784 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014785 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014786 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
14787}
14788
14789void VkEncoder::vkDestroySamplerYcbcrConversionKHR(
14790 VkDevice device,
14791 VkSamplerYcbcrConversion ycbcrConversion,
14792 const VkAllocationCallbacks* pAllocator)
14793{
14794 auto stream = mImpl->stream();
14795 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014796 auto resources = mImpl->resources();
14797 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014798 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014799 VkDevice local_device;
14800 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014801 VkSamplerYcbcrConversion local_ycbcrConversion;
14802 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014803 VkAllocationCallbacks* local_pAllocator;
14804 local_pAllocator = nullptr;
14805 if (pAllocator)
14806 {
14807 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14808 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14809 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014810 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014811 countingStream->rewind();
14812 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014813 uint64_t cgen_var_1141;
14814 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1141, 1);
14815 countingStream->write((uint64_t*)&cgen_var_1141, 1 * 8);
14816 uint64_t cgen_var_1142;
14817 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1142, 1);
14818 countingStream->write((uint64_t*)&cgen_var_1142, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014819 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014820 uint64_t cgen_var_1143 = (uint64_t)(uintptr_t)local_pAllocator;
14821 countingStream->putBe64(cgen_var_1143);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014822 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014823 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014824 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014825 }
14826 }
14827 uint32_t packetSize_vkDestroySamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14828 countingStream->rewind();
14829 uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR;
14830 stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
14831 stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014832 uint64_t cgen_var_1144;
14833 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1144, 1);
14834 stream->write((uint64_t*)&cgen_var_1144, 1 * 8);
14835 uint64_t cgen_var_1145;
14836 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1145, 1);
14837 stream->write((uint64_t*)&cgen_var_1145, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014838 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014839 uint64_t cgen_var_1146 = (uint64_t)(uintptr_t)local_pAllocator;
14840 stream->putBe64(cgen_var_1146);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014841 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014842 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014843 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014844 }
14845}
14846
14847#endif
14848#ifdef VK_KHR_bind_memory2
14849VkResult VkEncoder::vkBindBufferMemory2KHR(
14850 VkDevice device,
14851 uint32_t bindInfoCount,
14852 const VkBindBufferMemoryInfo* pBindInfos)
14853{
14854 auto stream = mImpl->stream();
14855 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014856 auto resources = mImpl->resources();
14857 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014858 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014859 VkDevice local_device;
14860 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014861 uint32_t local_bindInfoCount;
14862 local_bindInfoCount = bindInfoCount;
14863 VkBindBufferMemoryInfo* local_pBindInfos;
14864 local_pBindInfos = nullptr;
14865 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014866 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014867 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014868 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14869 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014870 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
14871 }
14872 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014873 countingStream->rewind();
14874 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014875 uint64_t cgen_var_1147;
14876 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1147, 1);
14877 countingStream->write((uint64_t*)&cgen_var_1147, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014878 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
14879 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14880 {
14881 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014882 }
14883 }
14884 uint32_t packetSize_vkBindBufferMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14885 countingStream->rewind();
14886 uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR;
14887 stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t));
14888 stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014889 uint64_t cgen_var_1148;
14890 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1148, 1);
14891 stream->write((uint64_t*)&cgen_var_1148, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014892 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014893 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14894 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014895 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014896 }
14897 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
14898 stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014899 countingStream->clearPool();
14900 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014901 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014902 return vkBindBufferMemory2KHR_VkResult_return;
14903}
14904
14905VkResult VkEncoder::vkBindImageMemory2KHR(
14906 VkDevice device,
14907 uint32_t bindInfoCount,
14908 const VkBindImageMemoryInfo* pBindInfos)
14909{
14910 auto stream = mImpl->stream();
14911 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014912 auto resources = mImpl->resources();
14913 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014914 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014915 VkDevice local_device;
14916 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014917 uint32_t local_bindInfoCount;
14918 local_bindInfoCount = bindInfoCount;
14919 VkBindImageMemoryInfo* local_pBindInfos;
14920 local_pBindInfos = nullptr;
14921 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014922 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014923 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014924 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14925 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014926 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
14927 }
14928 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014929 countingStream->rewind();
14930 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014931 uint64_t cgen_var_1149;
14932 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1149, 1);
14933 countingStream->write((uint64_t*)&cgen_var_1149, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014934 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
14935 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14936 {
14937 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014938 }
14939 }
14940 uint32_t packetSize_vkBindImageMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14941 countingStream->rewind();
14942 uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR;
14943 stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t));
14944 stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014945 uint64_t cgen_var_1150;
14946 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1150, 1);
14947 stream->write((uint64_t*)&cgen_var_1150, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014948 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014949 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14950 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014951 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014952 }
14953 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
14954 stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014955 countingStream->clearPool();
14956 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014957 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014958 return vkBindImageMemory2KHR_VkResult_return;
14959}
14960
14961#endif
14962#ifdef VK_KHR_maintenance3
14963void VkEncoder::vkGetDescriptorSetLayoutSupportKHR(
14964 VkDevice device,
14965 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
14966 VkDescriptorSetLayoutSupport* pSupport)
14967{
14968 auto stream = mImpl->stream();
14969 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014970 auto resources = mImpl->resources();
14971 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014972 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014973 VkDevice local_device;
14974 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014975 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
14976 local_pCreateInfo = nullptr;
14977 if (pCreateInfo)
14978 {
14979 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
14980 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
14981 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014982 countingStream->rewind();
14983 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014984 uint64_t cgen_var_1151;
14985 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1151, 1);
14986 countingStream->write((uint64_t*)&cgen_var_1151, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014987 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014988 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
14989 }
14990 uint32_t packetSize_vkGetDescriptorSetLayoutSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14991 countingStream->rewind();
14992 uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR;
14993 stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
14994 stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080014995 uint64_t cgen_var_1152;
14996 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1152, 1);
14997 stream->write((uint64_t*)&cgen_var_1152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014998 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014999 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
15000 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
15001}
15002
15003#endif
15004#ifdef VK_KHR_draw_indirect_count
15005void VkEncoder::vkCmdDrawIndirectCountKHR(
15006 VkCommandBuffer commandBuffer,
15007 VkBuffer buffer,
15008 VkDeviceSize offset,
15009 VkBuffer countBuffer,
15010 VkDeviceSize countBufferOffset,
15011 uint32_t maxDrawCount,
15012 uint32_t stride)
15013{
15014 auto stream = mImpl->stream();
15015 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015016 auto resources = mImpl->resources();
15017 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015018 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015019 VkCommandBuffer local_commandBuffer;
15020 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015021 VkBuffer local_buffer;
15022 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015023 VkDeviceSize local_offset;
15024 local_offset = offset;
15025 VkBuffer local_countBuffer;
15026 local_countBuffer = countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015027 VkDeviceSize local_countBufferOffset;
15028 local_countBufferOffset = countBufferOffset;
15029 uint32_t local_maxDrawCount;
15030 local_maxDrawCount = maxDrawCount;
15031 uint32_t local_stride;
15032 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015033 countingStream->rewind();
15034 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080015035 uint64_t cgen_var_1153;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015036 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1153, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015037 countingStream->write((uint64_t*)&cgen_var_1153, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015038 uint64_t cgen_var_1154;
15039 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1154, 1);
15040 countingStream->write((uint64_t*)&cgen_var_1154, 1 * 8);
15041 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
15042 uint64_t cgen_var_1155;
15043 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1155, 1);
15044 countingStream->write((uint64_t*)&cgen_var_1155, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015045 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15046 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15047 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015048 }
15049 uint32_t packetSize_vkCmdDrawIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15050 countingStream->rewind();
15051 uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR;
15052 stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
15053 stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015054 uint64_t cgen_var_1156;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015055 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1156, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015056 stream->write((uint64_t*)&cgen_var_1156, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015057 uint64_t cgen_var_1157;
15058 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1157, 1);
15059 stream->write((uint64_t*)&cgen_var_1157, 1 * 8);
15060 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
15061 uint64_t cgen_var_1158;
15062 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1158, 1);
15063 stream->write((uint64_t*)&cgen_var_1158, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015064 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15065 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15066 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015067}
15068
15069void VkEncoder::vkCmdDrawIndexedIndirectCountKHR(
15070 VkCommandBuffer commandBuffer,
15071 VkBuffer buffer,
15072 VkDeviceSize offset,
15073 VkBuffer countBuffer,
15074 VkDeviceSize countBufferOffset,
15075 uint32_t maxDrawCount,
15076 uint32_t stride)
15077{
15078 auto stream = mImpl->stream();
15079 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015080 auto resources = mImpl->resources();
15081 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015082 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015083 VkCommandBuffer local_commandBuffer;
15084 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015085 VkBuffer local_buffer;
15086 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015087 VkDeviceSize local_offset;
15088 local_offset = offset;
15089 VkBuffer local_countBuffer;
15090 local_countBuffer = countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015091 VkDeviceSize local_countBufferOffset;
15092 local_countBufferOffset = countBufferOffset;
15093 uint32_t local_maxDrawCount;
15094 local_maxDrawCount = maxDrawCount;
15095 uint32_t local_stride;
15096 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015097 countingStream->rewind();
15098 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080015099 uint64_t cgen_var_1159;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015100 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1159, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015101 countingStream->write((uint64_t*)&cgen_var_1159, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015102 uint64_t cgen_var_1160;
15103 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1160, 1);
15104 countingStream->write((uint64_t*)&cgen_var_1160, 1 * 8);
15105 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
15106 uint64_t cgen_var_1161;
15107 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1161, 1);
15108 countingStream->write((uint64_t*)&cgen_var_1161, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015109 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15110 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15111 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015112 }
15113 uint32_t packetSize_vkCmdDrawIndexedIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15114 countingStream->rewind();
15115 uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR;
15116 stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
15117 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015118 uint64_t cgen_var_1162;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015119 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1162, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015120 stream->write((uint64_t*)&cgen_var_1162, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015121 uint64_t cgen_var_1163;
15122 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1163, 1);
15123 stream->write((uint64_t*)&cgen_var_1163, 1 * 8);
15124 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
15125 uint64_t cgen_var_1164;
15126 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1164, 1);
15127 stream->write((uint64_t*)&cgen_var_1164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015128 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15129 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15130 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015131}
15132
15133#endif
15134#ifdef VK_KHR_8bit_storage
15135#endif
15136#ifdef VK_EXT_debug_report
15137VkResult VkEncoder::vkCreateDebugReportCallbackEXT(
15138 VkInstance instance,
15139 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
15140 const VkAllocationCallbacks* pAllocator,
15141 VkDebugReportCallbackEXT* pCallback)
15142{
15143 auto stream = mImpl->stream();
15144 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015145 auto resources = mImpl->resources();
15146 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015147 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015148 VkInstance local_instance;
15149 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015150 VkDebugReportCallbackCreateInfoEXT* local_pCreateInfo;
15151 local_pCreateInfo = nullptr;
15152 if (pCreateInfo)
15153 {
15154 local_pCreateInfo = (VkDebugReportCallbackCreateInfoEXT*)pool->alloc(sizeof(const VkDebugReportCallbackCreateInfoEXT));
15155 deepcopy_VkDebugReportCallbackCreateInfoEXT(pool, pCreateInfo, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
15156 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015157 VkAllocationCallbacks* local_pAllocator;
15158 local_pAllocator = nullptr;
15159 if (pAllocator)
15160 {
15161 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15162 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15163 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015164 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015165 countingStream->rewind();
15166 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015167 uint64_t cgen_var_1165;
15168 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1165, 1);
15169 countingStream->write((uint64_t*)&cgen_var_1165, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015170 marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015171 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015172 uint64_t cgen_var_1166 = (uint64_t)(uintptr_t)local_pAllocator;
15173 countingStream->putBe64(cgen_var_1166);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015174 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015175 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015176 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015177 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015178 uint64_t cgen_var_1167;
15179 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1167, 1);
15180 countingStream->write((uint64_t*)&cgen_var_1167, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015181 }
15182 uint32_t packetSize_vkCreateDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15183 countingStream->rewind();
15184 uint32_t opcode_vkCreateDebugReportCallbackEXT = OP_vkCreateDebugReportCallbackEXT;
15185 stream->write(&opcode_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
15186 stream->write(&packetSize_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015187 uint64_t cgen_var_1168;
15188 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1168, 1);
15189 stream->write((uint64_t*)&cgen_var_1168, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015190 marshal_VkDebugReportCallbackCreateInfoEXT(stream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015191 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015192 uint64_t cgen_var_1169 = (uint64_t)(uintptr_t)local_pAllocator;
15193 stream->putBe64(cgen_var_1169);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015194 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015195 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015196 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015197 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015198 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015199 uint64_t cgen_var_1170;
15200 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1170, 1);
15201 stream->write((uint64_t*)&cgen_var_1170, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015202 stream->setHandleMapping(resources->unwrapMapping());
15203 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015204 uint64_t cgen_var_1171;
15205 stream->read((uint64_t*)&cgen_var_1171, 8);
15206 stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1171, (VkDebugReportCallbackEXT*)pCallback, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015207 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015208 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
15209 stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015210 countingStream->clearPool();
15211 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015212 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015213 return vkCreateDebugReportCallbackEXT_VkResult_return;
15214}
15215
15216void VkEncoder::vkDestroyDebugReportCallbackEXT(
15217 VkInstance instance,
15218 VkDebugReportCallbackEXT callback,
15219 const VkAllocationCallbacks* pAllocator)
15220{
15221 auto stream = mImpl->stream();
15222 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015223 auto resources = mImpl->resources();
15224 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015225 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015226 VkInstance local_instance;
15227 local_instance = instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015228 VkDebugReportCallbackEXT local_callback;
15229 local_callback = callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015230 VkAllocationCallbacks* local_pAllocator;
15231 local_pAllocator = nullptr;
15232 if (pAllocator)
15233 {
15234 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15235 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15236 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015237 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015238 countingStream->rewind();
15239 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015240 uint64_t cgen_var_1172;
15241 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1172, 1);
15242 countingStream->write((uint64_t*)&cgen_var_1172, 1 * 8);
15243 uint64_t cgen_var_1173;
15244 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1173, 1);
15245 countingStream->write((uint64_t*)&cgen_var_1173, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015246 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015247 uint64_t cgen_var_1174 = (uint64_t)(uintptr_t)local_pAllocator;
15248 countingStream->putBe64(cgen_var_1174);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015249 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015250 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015251 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015252 }
15253 }
15254 uint32_t packetSize_vkDestroyDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15255 countingStream->rewind();
15256 uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT;
15257 stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
15258 stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015259 uint64_t cgen_var_1175;
15260 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1175, 1);
15261 stream->write((uint64_t*)&cgen_var_1175, 1 * 8);
15262 uint64_t cgen_var_1176;
15263 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1176, 1);
15264 stream->write((uint64_t*)&cgen_var_1176, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015265 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015266 uint64_t cgen_var_1177 = (uint64_t)(uintptr_t)local_pAllocator;
15267 stream->putBe64(cgen_var_1177);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015268 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015269 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015270 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015271 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015272 resources->destroyMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)&callback);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015273}
15274
15275void VkEncoder::vkDebugReportMessageEXT(
15276 VkInstance instance,
15277 VkDebugReportFlagsEXT flags,
15278 VkDebugReportObjectTypeEXT objectType,
15279 uint64_t object,
15280 size_t location,
15281 int32_t messageCode,
15282 const char* pLayerPrefix,
15283 const char* pMessage)
15284{
15285 auto stream = mImpl->stream();
15286 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015287 auto resources = mImpl->resources();
15288 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015289 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015290 VkInstance local_instance;
15291 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015292 VkDebugReportFlagsEXT local_flags;
15293 local_flags = flags;
15294 VkDebugReportObjectTypeEXT local_objectType;
15295 local_objectType = objectType;
15296 uint64_t local_object;
15297 local_object = object;
15298 size_t local_location;
15299 local_location = location;
15300 int32_t local_messageCode;
15301 local_messageCode = messageCode;
15302 char* local_pLayerPrefix;
15303 local_pLayerPrefix = nullptr;
15304 if (pLayerPrefix)
15305 {
15306 local_pLayerPrefix = pool->strDup(pLayerPrefix);
15307 }
15308 char* local_pMessage;
15309 local_pMessage = nullptr;
15310 if (pMessage)
15311 {
15312 local_pMessage = pool->strDup(pMessage);
15313 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015314 countingStream->rewind();
15315 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015316 uint64_t cgen_var_1178;
15317 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1178, 1);
15318 countingStream->write((uint64_t*)&cgen_var_1178, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015319 countingStream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
15320 countingStream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
15321 countingStream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015322 uint64_t cgen_var_1179 = (uint64_t)local_location;
15323 countingStream->putBe64(cgen_var_1179);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015324 countingStream->write((int32_t*)&local_messageCode, sizeof(int32_t));
15325 countingStream->putString(local_pLayerPrefix);
15326 countingStream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015327 }
15328 uint32_t packetSize_vkDebugReportMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15329 countingStream->rewind();
15330 uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT;
15331 stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t));
15332 stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015333 uint64_t cgen_var_1180;
15334 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1180, 1);
15335 stream->write((uint64_t*)&cgen_var_1180, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015336 stream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
15337 stream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
15338 stream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015339 uint64_t cgen_var_1181 = (uint64_t)local_location;
15340 stream->putBe64(cgen_var_1181);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015341 stream->write((int32_t*)&local_messageCode, sizeof(int32_t));
15342 stream->putString(local_pLayerPrefix);
15343 stream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015344}
15345
15346#endif
15347#ifdef VK_NV_glsl_shader
15348#endif
15349#ifdef VK_EXT_depth_range_unrestricted
15350#endif
15351#ifdef VK_IMG_filter_cubic
15352#endif
15353#ifdef VK_AMD_rasterization_order
15354#endif
15355#ifdef VK_AMD_shader_trinary_minmax
15356#endif
15357#ifdef VK_AMD_shader_explicit_vertex_parameter
15358#endif
15359#ifdef VK_EXT_debug_marker
15360VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT(
15361 VkDevice device,
15362 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
15363{
15364 auto stream = mImpl->stream();
15365 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015366 auto resources = mImpl->resources();
15367 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015368 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015369 VkDevice local_device;
15370 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015371 VkDebugMarkerObjectTagInfoEXT* local_pTagInfo;
15372 local_pTagInfo = nullptr;
15373 if (pTagInfo)
15374 {
15375 local_pTagInfo = (VkDebugMarkerObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectTagInfoEXT));
15376 deepcopy_VkDebugMarkerObjectTagInfoEXT(pool, pTagInfo, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
15377 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015378 countingStream->rewind();
15379 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015380 uint64_t cgen_var_1182;
15381 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1182, 1);
15382 countingStream->write((uint64_t*)&cgen_var_1182, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015383 marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015384 }
15385 uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15386 countingStream->rewind();
15387 uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT;
15388 stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
15389 stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015390 uint64_t cgen_var_1183;
15391 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1183, 1);
15392 stream->write((uint64_t*)&cgen_var_1183, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015393 marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015394 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
15395 stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015396 countingStream->clearPool();
15397 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015398 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015399 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
15400}
15401
15402VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT(
15403 VkDevice device,
15404 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
15405{
15406 auto stream = mImpl->stream();
15407 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015408 auto resources = mImpl->resources();
15409 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015410 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015411 VkDevice local_device;
15412 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015413 VkDebugMarkerObjectNameInfoEXT* local_pNameInfo;
15414 local_pNameInfo = nullptr;
15415 if (pNameInfo)
15416 {
15417 local_pNameInfo = (VkDebugMarkerObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectNameInfoEXT));
15418 deepcopy_VkDebugMarkerObjectNameInfoEXT(pool, pNameInfo, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
15419 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015420 countingStream->rewind();
15421 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015422 uint64_t cgen_var_1184;
15423 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1184, 1);
15424 countingStream->write((uint64_t*)&cgen_var_1184, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015425 marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015426 }
15427 uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15428 countingStream->rewind();
15429 uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT;
15430 stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
15431 stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015432 uint64_t cgen_var_1185;
15433 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1185, 1);
15434 stream->write((uint64_t*)&cgen_var_1185, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015435 marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015436 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
15437 stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015438 countingStream->clearPool();
15439 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015440 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015441 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
15442}
15443
15444void VkEncoder::vkCmdDebugMarkerBeginEXT(
15445 VkCommandBuffer commandBuffer,
15446 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
15447{
15448 auto stream = mImpl->stream();
15449 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015450 auto resources = mImpl->resources();
15451 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015452 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015453 VkCommandBuffer local_commandBuffer;
15454 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015455 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
15456 local_pMarkerInfo = nullptr;
15457 if (pMarkerInfo)
15458 {
15459 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
15460 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
15461 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015462 countingStream->rewind();
15463 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015464 uint64_t cgen_var_1186;
15465 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1186, 1);
15466 countingStream->write((uint64_t*)&cgen_var_1186, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015467 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015468 }
15469 uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15470 countingStream->rewind();
15471 uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT;
15472 stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
15473 stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015474 uint64_t cgen_var_1187;
15475 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1187, 1);
15476 stream->write((uint64_t*)&cgen_var_1187, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015477 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015478}
15479
15480void VkEncoder::vkCmdDebugMarkerEndEXT(
15481 VkCommandBuffer commandBuffer)
15482{
15483 auto stream = mImpl->stream();
15484 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015485 auto resources = mImpl->resources();
15486 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015487 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015488 VkCommandBuffer local_commandBuffer;
15489 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015490 countingStream->rewind();
15491 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015492 uint64_t cgen_var_1188;
15493 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1188, 1);
15494 countingStream->write((uint64_t*)&cgen_var_1188, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015495 }
15496 uint32_t packetSize_vkCmdDebugMarkerEndEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15497 countingStream->rewind();
15498 uint32_t opcode_vkCmdDebugMarkerEndEXT = OP_vkCmdDebugMarkerEndEXT;
15499 stream->write(&opcode_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
15500 stream->write(&packetSize_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015501 uint64_t cgen_var_1189;
15502 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1189, 1);
15503 stream->write((uint64_t*)&cgen_var_1189, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015504}
15505
15506void VkEncoder::vkCmdDebugMarkerInsertEXT(
15507 VkCommandBuffer commandBuffer,
15508 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
15509{
15510 auto stream = mImpl->stream();
15511 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015512 auto resources = mImpl->resources();
15513 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015514 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015515 VkCommandBuffer local_commandBuffer;
15516 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015517 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
15518 local_pMarkerInfo = nullptr;
15519 if (pMarkerInfo)
15520 {
15521 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
15522 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
15523 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015524 countingStream->rewind();
15525 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015526 uint64_t cgen_var_1190;
15527 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1190, 1);
15528 countingStream->write((uint64_t*)&cgen_var_1190, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015529 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015530 }
15531 uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15532 countingStream->rewind();
15533 uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT;
15534 stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
15535 stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015536 uint64_t cgen_var_1191;
15537 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1191, 1);
15538 stream->write((uint64_t*)&cgen_var_1191, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015539 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015540}
15541
15542#endif
15543#ifdef VK_AMD_gcn_shader
15544#endif
15545#ifdef VK_NV_dedicated_allocation
15546#endif
15547#ifdef VK_AMD_draw_indirect_count
15548void VkEncoder::vkCmdDrawIndirectCountAMD(
15549 VkCommandBuffer commandBuffer,
15550 VkBuffer buffer,
15551 VkDeviceSize offset,
15552 VkBuffer countBuffer,
15553 VkDeviceSize countBufferOffset,
15554 uint32_t maxDrawCount,
15555 uint32_t stride)
15556{
15557 auto stream = mImpl->stream();
15558 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015559 auto resources = mImpl->resources();
15560 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015561 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015562 VkCommandBuffer local_commandBuffer;
15563 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015564 VkBuffer local_buffer;
15565 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015566 VkDeviceSize local_offset;
15567 local_offset = offset;
15568 VkBuffer local_countBuffer;
15569 local_countBuffer = countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015570 VkDeviceSize local_countBufferOffset;
15571 local_countBufferOffset = countBufferOffset;
15572 uint32_t local_maxDrawCount;
15573 local_maxDrawCount = maxDrawCount;
15574 uint32_t local_stride;
15575 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015576 countingStream->rewind();
15577 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015578 uint64_t cgen_var_1192;
15579 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1192, 1);
15580 countingStream->write((uint64_t*)&cgen_var_1192, 1 * 8);
15581 uint64_t cgen_var_1193;
15582 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1193, 1);
15583 countingStream->write((uint64_t*)&cgen_var_1193, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015584 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015585 uint64_t cgen_var_1194;
15586 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1194, 1);
15587 countingStream->write((uint64_t*)&cgen_var_1194, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015588 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15589 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15590 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015591 }
15592 uint32_t packetSize_vkCmdDrawIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15593 countingStream->rewind();
15594 uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD;
15595 stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
15596 stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015597 uint64_t cgen_var_1195;
15598 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1195, 1);
15599 stream->write((uint64_t*)&cgen_var_1195, 1 * 8);
15600 uint64_t cgen_var_1196;
15601 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1196, 1);
15602 stream->write((uint64_t*)&cgen_var_1196, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015603 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015604 uint64_t cgen_var_1197;
15605 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1197, 1);
15606 stream->write((uint64_t*)&cgen_var_1197, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015607 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15608 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15609 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015610}
15611
15612void VkEncoder::vkCmdDrawIndexedIndirectCountAMD(
15613 VkCommandBuffer commandBuffer,
15614 VkBuffer buffer,
15615 VkDeviceSize offset,
15616 VkBuffer countBuffer,
15617 VkDeviceSize countBufferOffset,
15618 uint32_t maxDrawCount,
15619 uint32_t stride)
15620{
15621 auto stream = mImpl->stream();
15622 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015623 auto resources = mImpl->resources();
15624 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015625 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015626 VkCommandBuffer local_commandBuffer;
15627 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015628 VkBuffer local_buffer;
15629 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015630 VkDeviceSize local_offset;
15631 local_offset = offset;
15632 VkBuffer local_countBuffer;
15633 local_countBuffer = countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015634 VkDeviceSize local_countBufferOffset;
15635 local_countBufferOffset = countBufferOffset;
15636 uint32_t local_maxDrawCount;
15637 local_maxDrawCount = maxDrawCount;
15638 uint32_t local_stride;
15639 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015640 countingStream->rewind();
15641 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015642 uint64_t cgen_var_1198;
15643 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1198, 1);
15644 countingStream->write((uint64_t*)&cgen_var_1198, 1 * 8);
15645 uint64_t cgen_var_1199;
15646 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1199, 1);
15647 countingStream->write((uint64_t*)&cgen_var_1199, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015648 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015649 uint64_t cgen_var_1200;
15650 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1200, 1);
15651 countingStream->write((uint64_t*)&cgen_var_1200, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015652 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15653 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15654 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015655 }
15656 uint32_t packetSize_vkCmdDrawIndexedIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15657 countingStream->rewind();
15658 uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD;
15659 stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
15660 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015661 uint64_t cgen_var_1201;
15662 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1201, 1);
15663 stream->write((uint64_t*)&cgen_var_1201, 1 * 8);
15664 uint64_t cgen_var_1202;
15665 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1202, 1);
15666 stream->write((uint64_t*)&cgen_var_1202, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015667 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015668 uint64_t cgen_var_1203;
15669 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1203, 1);
15670 stream->write((uint64_t*)&cgen_var_1203, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015671 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15672 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15673 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015674}
15675
15676#endif
15677#ifdef VK_AMD_negative_viewport_height
15678#endif
15679#ifdef VK_AMD_gpu_shader_half_float
15680#endif
15681#ifdef VK_AMD_shader_ballot
15682#endif
15683#ifdef VK_AMD_texture_gather_bias_lod
15684#endif
15685#ifdef VK_AMD_shader_info
15686VkResult VkEncoder::vkGetShaderInfoAMD(
15687 VkDevice device,
15688 VkPipeline pipeline,
15689 VkShaderStageFlagBits shaderStage,
15690 VkShaderInfoTypeAMD infoType,
15691 size_t* pInfoSize,
15692 void* pInfo)
15693{
15694 auto stream = mImpl->stream();
15695 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015696 auto resources = mImpl->resources();
15697 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015698 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015699 VkDevice local_device;
15700 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015701 VkPipeline local_pipeline;
15702 local_pipeline = pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015703 VkShaderStageFlagBits local_shaderStage;
15704 local_shaderStage = shaderStage;
15705 VkShaderInfoTypeAMD local_infoType;
15706 local_infoType = infoType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015707 countingStream->rewind();
15708 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015709 uint64_t cgen_var_1204;
15710 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1204, 1);
15711 countingStream->write((uint64_t*)&cgen_var_1204, 1 * 8);
15712 uint64_t cgen_var_1205;
15713 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1205, 1);
15714 countingStream->write((uint64_t*)&cgen_var_1205, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015715 countingStream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
15716 countingStream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015717 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015718 uint64_t cgen_var_1206 = (uint64_t)(uintptr_t)pInfoSize;
15719 countingStream->putBe64(cgen_var_1206);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015720 if (pInfoSize)
15721 {
15722 countingStream->write((size_t*)pInfoSize, sizeof(size_t));
15723 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015724 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015725 uint64_t cgen_var_1207 = (uint64_t)(uintptr_t)pInfo;
15726 countingStream->putBe64(cgen_var_1207);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015727 if (pInfo)
15728 {
15729 countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15730 }
15731 }
15732 uint32_t packetSize_vkGetShaderInfoAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15733 countingStream->rewind();
15734 uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD;
15735 stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t));
15736 stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015737 uint64_t cgen_var_1208;
15738 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1208, 1);
15739 stream->write((uint64_t*)&cgen_var_1208, 1 * 8);
15740 uint64_t cgen_var_1209;
15741 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1209, 1);
15742 stream->write((uint64_t*)&cgen_var_1209, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015743 stream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
15744 stream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015745 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015746 uint64_t cgen_var_1210 = (uint64_t)(uintptr_t)pInfoSize;
15747 stream->putBe64(cgen_var_1210);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015748 if (pInfoSize)
15749 {
15750 stream->write((size_t*)pInfoSize, sizeof(size_t));
15751 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015752 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015753 uint64_t cgen_var_1211 = (uint64_t)(uintptr_t)pInfo;
15754 stream->putBe64(cgen_var_1211);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015755 if (pInfo)
15756 {
15757 stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15758 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015759 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015760 size_t* check_pInfoSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015761 check_pInfoSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015762 if (pInfoSize)
15763 {
15764 if (!(check_pInfoSize))
15765 {
15766 fprintf(stderr, "fatal: pInfoSize inconsistent between guest and host\n");
15767 }
15768 stream->read((size_t*)pInfoSize, sizeof(size_t));
15769 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015770 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015771 void* check_pInfo;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015772 check_pInfo = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015773 if (pInfo)
15774 {
15775 if (!(check_pInfo))
15776 {
15777 fprintf(stderr, "fatal: pInfo inconsistent between guest and host\n");
15778 }
15779 stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15780 }
15781 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
15782 stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015783 countingStream->clearPool();
15784 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015785 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015786 return vkGetShaderInfoAMD_VkResult_return;
15787}
15788
15789#endif
15790#ifdef VK_AMD_shader_image_load_store_lod
15791#endif
15792#ifdef VK_IMG_format_pvrtc
15793#endif
15794#ifdef VK_NV_external_memory_capabilities
15795VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
15796 VkPhysicalDevice physicalDevice,
15797 VkFormat format,
15798 VkImageType type,
15799 VkImageTiling tiling,
15800 VkImageUsageFlags usage,
15801 VkImageCreateFlags flags,
15802 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
15803 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
15804{
15805 auto stream = mImpl->stream();
15806 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015807 auto resources = mImpl->resources();
15808 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015809 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015810 VkPhysicalDevice local_physicalDevice;
15811 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015812 VkFormat local_format;
15813 local_format = format;
15814 VkImageType local_type;
15815 local_type = type;
15816 VkImageTiling local_tiling;
15817 local_tiling = tiling;
15818 VkImageUsageFlags local_usage;
15819 local_usage = usage;
15820 VkImageCreateFlags local_flags;
15821 local_flags = flags;
15822 VkExternalMemoryHandleTypeFlagsNV local_externalHandleType;
15823 local_externalHandleType = externalHandleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015824 countingStream->rewind();
15825 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015826 uint64_t cgen_var_1214;
15827 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1214, 1);
15828 countingStream->write((uint64_t*)&cgen_var_1214, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015829 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
15830 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
15831 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
15832 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
15833 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
15834 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015835 marshal_VkExternalImageFormatPropertiesNV(countingStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
15836 }
15837 uint32_t packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15838 countingStream->rewind();
15839 uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
15840 stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
15841 stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015842 uint64_t cgen_var_1215;
15843 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1215, 1);
15844 stream->write((uint64_t*)&cgen_var_1215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015845 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
15846 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
15847 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
15848 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
15849 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
15850 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015851 marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
15852 unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
15853 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
15854 stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015855 countingStream->clearPool();
15856 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015857 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015858 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
15859}
15860
15861#endif
15862#ifdef VK_NV_external_memory
15863#endif
15864#ifdef VK_NV_external_memory_win32
15865VkResult VkEncoder::vkGetMemoryWin32HandleNV(
15866 VkDevice device,
15867 VkDeviceMemory memory,
15868 VkExternalMemoryHandleTypeFlagsNV handleType,
15869 HANDLE* pHandle)
15870{
15871 auto stream = mImpl->stream();
15872 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015873 auto resources = mImpl->resources();
15874 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015875 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015876 VkDevice local_device;
15877 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015878 VkDeviceMemory local_memory;
15879 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015880 VkExternalMemoryHandleTypeFlagsNV local_handleType;
15881 local_handleType = handleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015882 countingStream->rewind();
15883 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015884 uint64_t cgen_var_1216;
15885 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1216, 1);
15886 countingStream->write((uint64_t*)&cgen_var_1216, 1 * 8);
15887 uint64_t cgen_var_1217;
15888 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1217, 1);
15889 countingStream->write((uint64_t*)&cgen_var_1217, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015890 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015891 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
15892 }
15893 uint32_t packetSize_vkGetMemoryWin32HandleNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15894 countingStream->rewind();
15895 uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV;
15896 stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
15897 stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015898 uint64_t cgen_var_1218;
15899 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1218, 1);
15900 stream->write((uint64_t*)&cgen_var_1218, 1 * 8);
15901 uint64_t cgen_var_1219;
15902 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1219, 1);
15903 stream->write((uint64_t*)&cgen_var_1219, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015904 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015905 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
15906 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
15907 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
15908 stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015909 countingStream->clearPool();
15910 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015911 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015912 return vkGetMemoryWin32HandleNV_VkResult_return;
15913}
15914
15915#endif
15916#ifdef VK_NV_win32_keyed_mutex
15917#endif
15918#ifdef VK_EXT_validation_flags
15919#endif
15920#ifdef VK_NN_vi_surface
15921VkResult VkEncoder::vkCreateViSurfaceNN(
15922 VkInstance instance,
15923 const VkViSurfaceCreateInfoNN* pCreateInfo,
15924 const VkAllocationCallbacks* pAllocator,
15925 VkSurfaceKHR* pSurface)
15926{
15927 auto stream = mImpl->stream();
15928 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015929 auto resources = mImpl->resources();
15930 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015931 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015932 VkInstance local_instance;
15933 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015934 VkViSurfaceCreateInfoNN* local_pCreateInfo;
15935 local_pCreateInfo = nullptr;
15936 if (pCreateInfo)
15937 {
15938 local_pCreateInfo = (VkViSurfaceCreateInfoNN*)pool->alloc(sizeof(const VkViSurfaceCreateInfoNN));
15939 deepcopy_VkViSurfaceCreateInfoNN(pool, pCreateInfo, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
15940 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015941 VkAllocationCallbacks* local_pAllocator;
15942 local_pAllocator = nullptr;
15943 if (pAllocator)
15944 {
15945 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15946 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15947 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015948 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015949 countingStream->rewind();
15950 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015951 uint64_t cgen_var_1220;
15952 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1220, 1);
15953 countingStream->write((uint64_t*)&cgen_var_1220, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015954 marshal_VkViSurfaceCreateInfoNN(countingStream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015955 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015956 uint64_t cgen_var_1221 = (uint64_t)(uintptr_t)local_pAllocator;
15957 countingStream->putBe64(cgen_var_1221);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015958 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015959 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015960 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015961 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015962 uint64_t cgen_var_1222;
15963 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1222, 1);
15964 countingStream->write((uint64_t*)&cgen_var_1222, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015965 }
15966 uint32_t packetSize_vkCreateViSurfaceNN = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15967 countingStream->rewind();
15968 uint32_t opcode_vkCreateViSurfaceNN = OP_vkCreateViSurfaceNN;
15969 stream->write(&opcode_vkCreateViSurfaceNN, sizeof(uint32_t));
15970 stream->write(&packetSize_vkCreateViSurfaceNN, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015971 uint64_t cgen_var_1223;
15972 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1223, 1);
15973 stream->write((uint64_t*)&cgen_var_1223, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015974 marshal_VkViSurfaceCreateInfoNN(stream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015975 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015976 uint64_t cgen_var_1224 = (uint64_t)(uintptr_t)local_pAllocator;
15977 stream->putBe64(cgen_var_1224);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015978 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015979 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015980 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015981 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015982 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015983 uint64_t cgen_var_1225;
15984 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1225, 1);
15985 stream->write((uint64_t*)&cgen_var_1225, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015986 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015987 uint64_t cgen_var_1226;
15988 stream->read((uint64_t*)&cgen_var_1226, 8);
15989 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1226, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015990 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
15991 stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015992 countingStream->clearPool();
15993 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015994 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015995 return vkCreateViSurfaceNN_VkResult_return;
15996}
15997
15998#endif
15999#ifdef VK_EXT_shader_subgroup_ballot
16000#endif
16001#ifdef VK_EXT_shader_subgroup_vote
16002#endif
16003#ifdef VK_EXT_conditional_rendering
16004void VkEncoder::vkCmdBeginConditionalRenderingEXT(
16005 VkCommandBuffer commandBuffer,
16006 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
16007{
16008 auto stream = mImpl->stream();
16009 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016010 auto resources = mImpl->resources();
16011 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016012 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016013 VkCommandBuffer local_commandBuffer;
16014 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016015 VkConditionalRenderingBeginInfoEXT* local_pConditionalRenderingBegin;
16016 local_pConditionalRenderingBegin = nullptr;
16017 if (pConditionalRenderingBegin)
16018 {
16019 local_pConditionalRenderingBegin = (VkConditionalRenderingBeginInfoEXT*)pool->alloc(sizeof(const VkConditionalRenderingBeginInfoEXT));
16020 deepcopy_VkConditionalRenderingBeginInfoEXT(pool, pConditionalRenderingBegin, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
16021 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016022 countingStream->rewind();
16023 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016024 uint64_t cgen_var_1227;
16025 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1227, 1);
16026 countingStream->write((uint64_t*)&cgen_var_1227, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016027 marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016028 }
16029 uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16030 countingStream->rewind();
16031 uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT;
16032 stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
16033 stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016034 uint64_t cgen_var_1228;
16035 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1228, 1);
16036 stream->write((uint64_t*)&cgen_var_1228, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016037 marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016038}
16039
16040void VkEncoder::vkCmdEndConditionalRenderingEXT(
16041 VkCommandBuffer commandBuffer)
16042{
16043 auto stream = mImpl->stream();
16044 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016045 auto resources = mImpl->resources();
16046 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016047 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016048 VkCommandBuffer local_commandBuffer;
16049 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016050 countingStream->rewind();
16051 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016052 uint64_t cgen_var_1229;
16053 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1229, 1);
16054 countingStream->write((uint64_t*)&cgen_var_1229, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016055 }
16056 uint32_t packetSize_vkCmdEndConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16057 countingStream->rewind();
16058 uint32_t opcode_vkCmdEndConditionalRenderingEXT = OP_vkCmdEndConditionalRenderingEXT;
16059 stream->write(&opcode_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
16060 stream->write(&packetSize_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016061 uint64_t cgen_var_1230;
16062 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1230, 1);
16063 stream->write((uint64_t*)&cgen_var_1230, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016064}
16065
16066#endif
16067#ifdef VK_NVX_device_generated_commands
16068void VkEncoder::vkCmdProcessCommandsNVX(
16069 VkCommandBuffer commandBuffer,
16070 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
16071{
16072 auto stream = mImpl->stream();
16073 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016074 auto resources = mImpl->resources();
16075 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016076 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016077 VkCommandBuffer local_commandBuffer;
16078 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016079 VkCmdProcessCommandsInfoNVX* local_pProcessCommandsInfo;
16080 local_pProcessCommandsInfo = nullptr;
16081 if (pProcessCommandsInfo)
16082 {
16083 local_pProcessCommandsInfo = (VkCmdProcessCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdProcessCommandsInfoNVX));
16084 deepcopy_VkCmdProcessCommandsInfoNVX(pool, pProcessCommandsInfo, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
16085 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016086 countingStream->rewind();
16087 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016088 uint64_t cgen_var_1231;
16089 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1231, 1);
16090 countingStream->write((uint64_t*)&cgen_var_1231, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016091 marshal_VkCmdProcessCommandsInfoNVX(countingStream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016092 }
16093 uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16094 countingStream->rewind();
16095 uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX;
16096 stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t));
16097 stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016098 uint64_t cgen_var_1232;
16099 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1232, 1);
16100 stream->write((uint64_t*)&cgen_var_1232, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016101 marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016102}
16103
16104void VkEncoder::vkCmdReserveSpaceForCommandsNVX(
16105 VkCommandBuffer commandBuffer,
16106 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
16107{
16108 auto stream = mImpl->stream();
16109 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016110 auto resources = mImpl->resources();
16111 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016112 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016113 VkCommandBuffer local_commandBuffer;
16114 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016115 VkCmdReserveSpaceForCommandsInfoNVX* local_pReserveSpaceInfo;
16116 local_pReserveSpaceInfo = nullptr;
16117 if (pReserveSpaceInfo)
16118 {
16119 local_pReserveSpaceInfo = (VkCmdReserveSpaceForCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdReserveSpaceForCommandsInfoNVX));
16120 deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(pool, pReserveSpaceInfo, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
16121 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016122 countingStream->rewind();
16123 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016124 uint64_t cgen_var_1233;
16125 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1233, 1);
16126 countingStream->write((uint64_t*)&cgen_var_1233, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016127 marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016128 }
16129 uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16130 countingStream->rewind();
16131 uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX;
16132 stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
16133 stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016134 uint64_t cgen_var_1234;
16135 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1234, 1);
16136 stream->write((uint64_t*)&cgen_var_1234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016137 marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016138}
16139
16140VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX(
16141 VkDevice device,
16142 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
16143 const VkAllocationCallbacks* pAllocator,
16144 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
16145{
16146 auto stream = mImpl->stream();
16147 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016148 auto resources = mImpl->resources();
16149 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016150 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016151 VkDevice local_device;
16152 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016153 VkIndirectCommandsLayoutCreateInfoNVX* local_pCreateInfo;
16154 local_pCreateInfo = nullptr;
16155 if (pCreateInfo)
16156 {
16157 local_pCreateInfo = (VkIndirectCommandsLayoutCreateInfoNVX*)pool->alloc(sizeof(const VkIndirectCommandsLayoutCreateInfoNVX));
16158 deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(pool, pCreateInfo, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
16159 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016160 VkAllocationCallbacks* local_pAllocator;
16161 local_pAllocator = nullptr;
16162 if (pAllocator)
16163 {
16164 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16165 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16166 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016167 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016168 countingStream->rewind();
16169 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016170 uint64_t cgen_var_1235;
16171 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1235, 1);
16172 countingStream->write((uint64_t*)&cgen_var_1235, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016173 marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016174 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016175 uint64_t cgen_var_1236 = (uint64_t)(uintptr_t)local_pAllocator;
16176 countingStream->putBe64(cgen_var_1236);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016177 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016178 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016179 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016180 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016181 uint64_t cgen_var_1237;
16182 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1237, 1);
16183 countingStream->write((uint64_t*)&cgen_var_1237, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016184 }
16185 uint32_t packetSize_vkCreateIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16186 countingStream->rewind();
16187 uint32_t opcode_vkCreateIndirectCommandsLayoutNVX = OP_vkCreateIndirectCommandsLayoutNVX;
16188 stream->write(&opcode_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
16189 stream->write(&packetSize_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016190 uint64_t cgen_var_1238;
16191 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1238, 1);
16192 stream->write((uint64_t*)&cgen_var_1238, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016193 marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016194 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016195 uint64_t cgen_var_1239 = (uint64_t)(uintptr_t)local_pAllocator;
16196 stream->putBe64(cgen_var_1239);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016197 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016198 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016199 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016200 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016201 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016202 uint64_t cgen_var_1240;
16203 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1240, 1);
16204 stream->write((uint64_t*)&cgen_var_1240, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016205 stream->setHandleMapping(resources->unwrapMapping());
16206 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016207 uint64_t cgen_var_1241;
16208 stream->read((uint64_t*)&cgen_var_1241, 8);
16209 stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1241, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016210 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016211 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
16212 stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016213 countingStream->clearPool();
16214 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016215 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016216 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
16217}
16218
16219void VkEncoder::vkDestroyIndirectCommandsLayoutNVX(
16220 VkDevice device,
16221 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
16222 const VkAllocationCallbacks* pAllocator)
16223{
16224 auto stream = mImpl->stream();
16225 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016226 auto resources = mImpl->resources();
16227 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016228 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016229 VkDevice local_device;
16230 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016231 VkIndirectCommandsLayoutNVX local_indirectCommandsLayout;
16232 local_indirectCommandsLayout = indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016233 VkAllocationCallbacks* local_pAllocator;
16234 local_pAllocator = nullptr;
16235 if (pAllocator)
16236 {
16237 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16238 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16239 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016240 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016241 countingStream->rewind();
16242 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016243 uint64_t cgen_var_1242;
16244 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1242, 1);
16245 countingStream->write((uint64_t*)&cgen_var_1242, 1 * 8);
16246 uint64_t cgen_var_1243;
16247 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1243, 1);
16248 countingStream->write((uint64_t*)&cgen_var_1243, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016249 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016250 uint64_t cgen_var_1244 = (uint64_t)(uintptr_t)local_pAllocator;
16251 countingStream->putBe64(cgen_var_1244);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016252 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016253 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016254 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016255 }
16256 }
16257 uint32_t packetSize_vkDestroyIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16258 countingStream->rewind();
16259 uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX;
16260 stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
16261 stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016262 uint64_t cgen_var_1245;
16263 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1245, 1);
16264 stream->write((uint64_t*)&cgen_var_1245, 1 * 8);
16265 uint64_t cgen_var_1246;
16266 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1246, 1);
16267 stream->write((uint64_t*)&cgen_var_1246, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016268 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016269 uint64_t cgen_var_1247 = (uint64_t)(uintptr_t)local_pAllocator;
16270 stream->putBe64(cgen_var_1247);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016271 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016272 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016273 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016274 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016275 resources->destroyMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016276}
16277
16278VkResult VkEncoder::vkCreateObjectTableNVX(
16279 VkDevice device,
16280 const VkObjectTableCreateInfoNVX* pCreateInfo,
16281 const VkAllocationCallbacks* pAllocator,
16282 VkObjectTableNVX* pObjectTable)
16283{
16284 auto stream = mImpl->stream();
16285 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016286 auto resources = mImpl->resources();
16287 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016288 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016289 VkDevice local_device;
16290 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016291 VkObjectTableCreateInfoNVX* local_pCreateInfo;
16292 local_pCreateInfo = nullptr;
16293 if (pCreateInfo)
16294 {
16295 local_pCreateInfo = (VkObjectTableCreateInfoNVX*)pool->alloc(sizeof(const VkObjectTableCreateInfoNVX));
16296 deepcopy_VkObjectTableCreateInfoNVX(pool, pCreateInfo, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
16297 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016298 VkAllocationCallbacks* local_pAllocator;
16299 local_pAllocator = nullptr;
16300 if (pAllocator)
16301 {
16302 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16303 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16304 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016305 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016306 countingStream->rewind();
16307 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016308 uint64_t cgen_var_1248;
16309 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1248, 1);
16310 countingStream->write((uint64_t*)&cgen_var_1248, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016311 marshal_VkObjectTableCreateInfoNVX(countingStream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016312 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016313 uint64_t cgen_var_1249 = (uint64_t)(uintptr_t)local_pAllocator;
16314 countingStream->putBe64(cgen_var_1249);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016315 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016316 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016317 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016318 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016319 uint64_t cgen_var_1250;
16320 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1250, 1);
16321 countingStream->write((uint64_t*)&cgen_var_1250, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016322 }
16323 uint32_t packetSize_vkCreateObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16324 countingStream->rewind();
16325 uint32_t opcode_vkCreateObjectTableNVX = OP_vkCreateObjectTableNVX;
16326 stream->write(&opcode_vkCreateObjectTableNVX, sizeof(uint32_t));
16327 stream->write(&packetSize_vkCreateObjectTableNVX, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016328 uint64_t cgen_var_1251;
16329 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1251, 1);
16330 stream->write((uint64_t*)&cgen_var_1251, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016331 marshal_VkObjectTableCreateInfoNVX(stream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016332 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016333 uint64_t cgen_var_1252 = (uint64_t)(uintptr_t)local_pAllocator;
16334 stream->putBe64(cgen_var_1252);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016335 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016336 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016337 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016338 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016339 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016340 uint64_t cgen_var_1253;
16341 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1253, 1);
16342 stream->write((uint64_t*)&cgen_var_1253, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016343 stream->setHandleMapping(resources->unwrapMapping());
16344 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016345 uint64_t cgen_var_1254;
16346 stream->read((uint64_t*)&cgen_var_1254, 8);
16347 stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1254, (VkObjectTableNVX*)pObjectTable, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016348 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016349 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
16350 stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016351 countingStream->clearPool();
16352 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016353 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016354 return vkCreateObjectTableNVX_VkResult_return;
16355}
16356
16357void VkEncoder::vkDestroyObjectTableNVX(
16358 VkDevice device,
16359 VkObjectTableNVX objectTable,
16360 const VkAllocationCallbacks* pAllocator)
16361{
16362 auto stream = mImpl->stream();
16363 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016364 auto resources = mImpl->resources();
16365 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016366 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016367 VkDevice local_device;
16368 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016369 VkObjectTableNVX local_objectTable;
16370 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016371 VkAllocationCallbacks* local_pAllocator;
16372 local_pAllocator = nullptr;
16373 if (pAllocator)
16374 {
16375 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16376 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16377 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016378 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016379 countingStream->rewind();
16380 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016381 uint64_t cgen_var_1255;
16382 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1255, 1);
16383 countingStream->write((uint64_t*)&cgen_var_1255, 1 * 8);
16384 uint64_t cgen_var_1256;
16385 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1256, 1);
16386 countingStream->write((uint64_t*)&cgen_var_1256, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016387 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016388 uint64_t cgen_var_1257 = (uint64_t)(uintptr_t)local_pAllocator;
16389 countingStream->putBe64(cgen_var_1257);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016390 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016391 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016392 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016393 }
16394 }
16395 uint32_t packetSize_vkDestroyObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16396 countingStream->rewind();
16397 uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX;
16398 stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t));
16399 stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016400 uint64_t cgen_var_1258;
16401 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1258, 1);
16402 stream->write((uint64_t*)&cgen_var_1258, 1 * 8);
16403 uint64_t cgen_var_1259;
16404 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1259, 1);
16405 stream->write((uint64_t*)&cgen_var_1259, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016406 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016407 uint64_t cgen_var_1260 = (uint64_t)(uintptr_t)local_pAllocator;
16408 stream->putBe64(cgen_var_1260);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016409 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016410 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016411 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016412 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016413 resources->destroyMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&objectTable);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016414}
16415
16416VkResult VkEncoder::vkRegisterObjectsNVX(
16417 VkDevice device,
16418 VkObjectTableNVX objectTable,
16419 uint32_t objectCount,
16420 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
16421 const uint32_t* pObjectIndices)
16422{
16423 auto stream = mImpl->stream();
16424 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016425 auto resources = mImpl->resources();
16426 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016427 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016428 VkDevice local_device;
16429 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016430 VkObjectTableNVX local_objectTable;
16431 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016432 uint32_t local_objectCount;
16433 local_objectCount = objectCount;
16434 VkObjectTableEntryNVX** local_ppObjectTableEntries;
Lingfeng Yang36891c52018-11-09 14:18:35 -080016435 (void)ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016436 uint32_t* local_pObjectIndices;
16437 local_pObjectIndices = nullptr;
16438 if (pObjectIndices)
16439 {
16440 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
16441 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016442 countingStream->rewind();
16443 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016444 uint64_t cgen_var_1261;
16445 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1261, 1);
16446 countingStream->write((uint64_t*)&cgen_var_1261, 1 * 8);
16447 uint64_t cgen_var_1262;
16448 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1262, 1);
16449 countingStream->write((uint64_t*)&cgen_var_1262, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016450 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080016451 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016452 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016453 }
16454 uint32_t packetSize_vkRegisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16455 countingStream->rewind();
16456 uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX;
16457 stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t));
16458 stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016459 uint64_t cgen_var_1263;
16460 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1263, 1);
16461 stream->write((uint64_t*)&cgen_var_1263, 1 * 8);
16462 uint64_t cgen_var_1264;
16463 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1264, 1);
16464 stream->write((uint64_t*)&cgen_var_1264, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016465 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080016466 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016467 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016468 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
16469 stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016470 countingStream->clearPool();
16471 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016472 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016473 return vkRegisterObjectsNVX_VkResult_return;
16474}
16475
16476VkResult VkEncoder::vkUnregisterObjectsNVX(
16477 VkDevice device,
16478 VkObjectTableNVX objectTable,
16479 uint32_t objectCount,
16480 const VkObjectEntryTypeNVX* pObjectEntryTypes,
16481 const uint32_t* pObjectIndices)
16482{
16483 auto stream = mImpl->stream();
16484 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016485 auto resources = mImpl->resources();
16486 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016487 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016488 VkDevice local_device;
16489 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016490 VkObjectTableNVX local_objectTable;
16491 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016492 uint32_t local_objectCount;
16493 local_objectCount = objectCount;
16494 VkObjectEntryTypeNVX* local_pObjectEntryTypes;
16495 local_pObjectEntryTypes = nullptr;
16496 if (pObjectEntryTypes)
16497 {
16498 local_pObjectEntryTypes = (VkObjectEntryTypeNVX*)pool->dupArray(pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
16499 }
16500 uint32_t* local_pObjectIndices;
16501 local_pObjectIndices = nullptr;
16502 if (pObjectIndices)
16503 {
16504 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
16505 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016506 countingStream->rewind();
16507 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016508 uint64_t cgen_var_1265;
16509 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1265, 1);
16510 countingStream->write((uint64_t*)&cgen_var_1265, 1 * 8);
16511 uint64_t cgen_var_1266;
16512 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1266, 1);
16513 countingStream->write((uint64_t*)&cgen_var_1266, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016514 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
16515 countingStream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
16516 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016517 }
16518 uint32_t packetSize_vkUnregisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16519 countingStream->rewind();
16520 uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX;
16521 stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t));
16522 stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016523 uint64_t cgen_var_1267;
16524 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1267, 1);
16525 stream->write((uint64_t*)&cgen_var_1267, 1 * 8);
16526 uint64_t cgen_var_1268;
16527 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1268, 1);
16528 stream->write((uint64_t*)&cgen_var_1268, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016529 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
16530 stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
16531 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016532 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
16533 stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016534 countingStream->clearPool();
16535 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016536 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016537 return vkUnregisterObjectsNVX_VkResult_return;
16538}
16539
16540void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
16541 VkPhysicalDevice physicalDevice,
16542 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
16543 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
16544{
16545 auto stream = mImpl->stream();
16546 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016547 auto resources = mImpl->resources();
16548 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016549 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016550 VkPhysicalDevice local_physicalDevice;
16551 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016552 countingStream->rewind();
16553 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016554 uint64_t cgen_var_1269;
16555 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1269, 1);
16556 countingStream->write((uint64_t*)&cgen_var_1269, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016557 marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16558 marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16559 }
16560 uint32_t packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16561 countingStream->rewind();
16562 uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
16563 stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
16564 stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016565 uint64_t cgen_var_1270;
16566 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1270, 1);
16567 stream->write((uint64_t*)&cgen_var_1270, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016568 marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16569 marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16570 unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16571 unmarshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16572}
16573
16574#endif
16575#ifdef VK_NV_clip_space_w_scaling
16576void VkEncoder::vkCmdSetViewportWScalingNV(
16577 VkCommandBuffer commandBuffer,
16578 uint32_t firstViewport,
16579 uint32_t viewportCount,
16580 const VkViewportWScalingNV* pViewportWScalings)
16581{
16582 auto stream = mImpl->stream();
16583 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016584 auto resources = mImpl->resources();
16585 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016586 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016587 VkCommandBuffer local_commandBuffer;
16588 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016589 uint32_t local_firstViewport;
16590 local_firstViewport = firstViewport;
16591 uint32_t local_viewportCount;
16592 local_viewportCount = viewportCount;
16593 VkViewportWScalingNV* local_pViewportWScalings;
16594 local_pViewportWScalings = nullptr;
16595 if (pViewportWScalings)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016596 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016597 local_pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(((viewportCount)) * sizeof(const VkViewportWScalingNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016598 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16599 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016600 deepcopy_VkViewportWScalingNV(pool, pViewportWScalings + i, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
16601 }
16602 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016603 countingStream->rewind();
16604 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016605 uint64_t cgen_var_1271;
16606 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1271, 1);
16607 countingStream->write((uint64_t*)&cgen_var_1271, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016608 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
16609 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
16610 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16611 {
16612 marshal_VkViewportWScalingNV(countingStream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016613 }
16614 }
16615 uint32_t packetSize_vkCmdSetViewportWScalingNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16616 countingStream->rewind();
16617 uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV;
16618 stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
16619 stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016620 uint64_t cgen_var_1272;
16621 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1272, 1);
16622 stream->write((uint64_t*)&cgen_var_1272, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016623 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
16624 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016625 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16626 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016627 marshal_VkViewportWScalingNV(stream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016628 }
16629}
16630
16631#endif
16632#ifdef VK_EXT_direct_mode_display
16633VkResult VkEncoder::vkReleaseDisplayEXT(
16634 VkPhysicalDevice physicalDevice,
16635 VkDisplayKHR display)
16636{
16637 auto stream = mImpl->stream();
16638 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016639 auto resources = mImpl->resources();
16640 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016641 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016642 VkPhysicalDevice local_physicalDevice;
16643 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016644 VkDisplayKHR local_display;
16645 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016646 countingStream->rewind();
16647 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016648 uint64_t cgen_var_1273;
16649 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1273, 1);
16650 countingStream->write((uint64_t*)&cgen_var_1273, 1 * 8);
16651 uint64_t cgen_var_1274;
16652 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1274, 1);
16653 countingStream->write((uint64_t*)&cgen_var_1274, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016654 }
16655 uint32_t packetSize_vkReleaseDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16656 countingStream->rewind();
16657 uint32_t opcode_vkReleaseDisplayEXT = OP_vkReleaseDisplayEXT;
16658 stream->write(&opcode_vkReleaseDisplayEXT, sizeof(uint32_t));
16659 stream->write(&packetSize_vkReleaseDisplayEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016660 uint64_t cgen_var_1275;
16661 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1275, 1);
16662 stream->write((uint64_t*)&cgen_var_1275, 1 * 8);
16663 uint64_t cgen_var_1276;
16664 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1276, 1);
16665 stream->write((uint64_t*)&cgen_var_1276, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016666 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
16667 stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016668 countingStream->clearPool();
16669 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016670 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016671 return vkReleaseDisplayEXT_VkResult_return;
16672}
16673
16674#endif
16675#ifdef VK_EXT_acquire_xlib_display
16676VkResult VkEncoder::vkAcquireXlibDisplayEXT(
16677 VkPhysicalDevice physicalDevice,
16678 Display* dpy,
16679 VkDisplayKHR display)
16680{
16681 auto stream = mImpl->stream();
16682 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016683 auto resources = mImpl->resources();
16684 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016685 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016686 VkPhysicalDevice local_physicalDevice;
16687 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016688 VkDisplayKHR local_display;
16689 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016690 countingStream->rewind();
16691 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016692 uint64_t cgen_var_1277;
16693 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1277, 1);
16694 countingStream->write((uint64_t*)&cgen_var_1277, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016695 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016696 uint64_t cgen_var_1278;
16697 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1278, 1);
16698 countingStream->write((uint64_t*)&cgen_var_1278, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016699 }
16700 uint32_t packetSize_vkAcquireXlibDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16701 countingStream->rewind();
16702 uint32_t opcode_vkAcquireXlibDisplayEXT = OP_vkAcquireXlibDisplayEXT;
16703 stream->write(&opcode_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
16704 stream->write(&packetSize_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016705 uint64_t cgen_var_1279;
16706 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1279, 1);
16707 stream->write((uint64_t*)&cgen_var_1279, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016708 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016709 uint64_t cgen_var_1280;
16710 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1280, 1);
16711 stream->write((uint64_t*)&cgen_var_1280, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016712 stream->read((Display*)dpy, sizeof(Display));
16713 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
16714 stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016715 countingStream->clearPool();
16716 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016717 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016718 return vkAcquireXlibDisplayEXT_VkResult_return;
16719}
16720
16721VkResult VkEncoder::vkGetRandROutputDisplayEXT(
16722 VkPhysicalDevice physicalDevice,
16723 Display* dpy,
16724 RROutput rrOutput,
16725 VkDisplayKHR* pDisplay)
16726{
16727 auto stream = mImpl->stream();
16728 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016729 auto resources = mImpl->resources();
16730 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016731 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016732 VkPhysicalDevice local_physicalDevice;
16733 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016734 RROutput local_rrOutput;
16735 local_rrOutput = rrOutput;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016736 countingStream->rewind();
16737 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016738 uint64_t cgen_var_1281;
16739 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1281, 1);
16740 countingStream->write((uint64_t*)&cgen_var_1281, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016741 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016742 countingStream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016743 uint64_t cgen_var_1282;
16744 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1282, 1);
16745 countingStream->write((uint64_t*)&cgen_var_1282, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016746 }
16747 uint32_t packetSize_vkGetRandROutputDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16748 countingStream->rewind();
16749 uint32_t opcode_vkGetRandROutputDisplayEXT = OP_vkGetRandROutputDisplayEXT;
16750 stream->write(&opcode_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
16751 stream->write(&packetSize_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016752 uint64_t cgen_var_1283;
16753 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1283, 1);
16754 stream->write((uint64_t*)&cgen_var_1283, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016755 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016756 stream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yange4008a02018-11-18 12:22:48 -080016757 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016758 uint64_t cgen_var_1284;
16759 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1284, 1);
16760 stream->write((uint64_t*)&cgen_var_1284, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016761 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016762 stream->read((Display*)dpy, sizeof(Display));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016763 uint64_t cgen_var_1285;
16764 stream->read((uint64_t*)&cgen_var_1285, 8);
16765 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1285, (VkDisplayKHR*)pDisplay, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016766 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
16767 stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016768 countingStream->clearPool();
16769 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016770 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016771 return vkGetRandROutputDisplayEXT_VkResult_return;
16772}
16773
16774#endif
16775#ifdef VK_EXT_display_surface_counter
16776VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT(
16777 VkPhysicalDevice physicalDevice,
16778 VkSurfaceKHR surface,
16779 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
16780{
16781 auto stream = mImpl->stream();
16782 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016783 auto resources = mImpl->resources();
16784 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016785 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016786 VkPhysicalDevice local_physicalDevice;
16787 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016788 VkSurfaceKHR local_surface;
16789 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016790 countingStream->rewind();
16791 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016792 uint64_t cgen_var_1286;
16793 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1286, 1);
16794 countingStream->write((uint64_t*)&cgen_var_1286, 1 * 8);
16795 uint64_t cgen_var_1287;
16796 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1287, 1);
16797 countingStream->write((uint64_t*)&cgen_var_1287, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016798 marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
16799 }
16800 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16801 countingStream->rewind();
16802 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
16803 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
16804 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016805 uint64_t cgen_var_1288;
16806 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1288, 1);
16807 stream->write((uint64_t*)&cgen_var_1288, 1 * 8);
16808 uint64_t cgen_var_1289;
16809 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1289, 1);
16810 stream->write((uint64_t*)&cgen_var_1289, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016811 marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
16812 unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
16813 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
16814 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016815 countingStream->clearPool();
16816 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016817 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016818 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
16819}
16820
16821#endif
16822#ifdef VK_EXT_display_control
16823VkResult VkEncoder::vkDisplayPowerControlEXT(
16824 VkDevice device,
16825 VkDisplayKHR display,
16826 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
16827{
16828 auto stream = mImpl->stream();
16829 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016830 auto resources = mImpl->resources();
16831 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016832 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016833 VkDevice local_device;
16834 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016835 VkDisplayKHR local_display;
16836 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016837 VkDisplayPowerInfoEXT* local_pDisplayPowerInfo;
16838 local_pDisplayPowerInfo = nullptr;
16839 if (pDisplayPowerInfo)
16840 {
16841 local_pDisplayPowerInfo = (VkDisplayPowerInfoEXT*)pool->alloc(sizeof(const VkDisplayPowerInfoEXT));
16842 deepcopy_VkDisplayPowerInfoEXT(pool, pDisplayPowerInfo, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
16843 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016844 countingStream->rewind();
16845 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016846 uint64_t cgen_var_1290;
16847 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1290, 1);
16848 countingStream->write((uint64_t*)&cgen_var_1290, 1 * 8);
16849 uint64_t cgen_var_1291;
16850 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1291, 1);
16851 countingStream->write((uint64_t*)&cgen_var_1291, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016852 marshal_VkDisplayPowerInfoEXT(countingStream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016853 }
16854 uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16855 countingStream->rewind();
16856 uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT;
16857 stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t));
16858 stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016859 uint64_t cgen_var_1292;
16860 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1292, 1);
16861 stream->write((uint64_t*)&cgen_var_1292, 1 * 8);
16862 uint64_t cgen_var_1293;
16863 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1293, 1);
16864 stream->write((uint64_t*)&cgen_var_1293, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016865 marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016866 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
16867 stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016868 countingStream->clearPool();
16869 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016870 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016871 return vkDisplayPowerControlEXT_VkResult_return;
16872}
16873
16874VkResult VkEncoder::vkRegisterDeviceEventEXT(
16875 VkDevice device,
16876 const VkDeviceEventInfoEXT* pDeviceEventInfo,
16877 const VkAllocationCallbacks* pAllocator,
16878 VkFence* pFence)
16879{
16880 auto stream = mImpl->stream();
16881 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016882 auto resources = mImpl->resources();
16883 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016884 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016885 VkDevice local_device;
16886 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016887 VkDeviceEventInfoEXT* local_pDeviceEventInfo;
16888 local_pDeviceEventInfo = nullptr;
16889 if (pDeviceEventInfo)
16890 {
16891 local_pDeviceEventInfo = (VkDeviceEventInfoEXT*)pool->alloc(sizeof(const VkDeviceEventInfoEXT));
16892 deepcopy_VkDeviceEventInfoEXT(pool, pDeviceEventInfo, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
16893 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016894 VkAllocationCallbacks* local_pAllocator;
16895 local_pAllocator = nullptr;
16896 if (pAllocator)
16897 {
16898 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16899 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16900 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016901 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016902 countingStream->rewind();
16903 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016904 uint64_t cgen_var_1294;
16905 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1294, 1);
16906 countingStream->write((uint64_t*)&cgen_var_1294, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016907 marshal_VkDeviceEventInfoEXT(countingStream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016908 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016909 uint64_t cgen_var_1295 = (uint64_t)(uintptr_t)local_pAllocator;
16910 countingStream->putBe64(cgen_var_1295);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016911 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016912 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016913 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016914 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016915 uint64_t cgen_var_1296;
16916 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1296, 1);
16917 countingStream->write((uint64_t*)&cgen_var_1296, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016918 }
16919 uint32_t packetSize_vkRegisterDeviceEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16920 countingStream->rewind();
16921 uint32_t opcode_vkRegisterDeviceEventEXT = OP_vkRegisterDeviceEventEXT;
16922 stream->write(&opcode_vkRegisterDeviceEventEXT, sizeof(uint32_t));
16923 stream->write(&packetSize_vkRegisterDeviceEventEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016924 uint64_t cgen_var_1297;
16925 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1297, 1);
16926 stream->write((uint64_t*)&cgen_var_1297, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016927 marshal_VkDeviceEventInfoEXT(stream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016928 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016929 uint64_t cgen_var_1298 = (uint64_t)(uintptr_t)local_pAllocator;
16930 stream->putBe64(cgen_var_1298);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016931 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016932 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016933 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016934 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016935 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016936 uint64_t cgen_var_1299;
16937 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1299, 1);
16938 stream->write((uint64_t*)&cgen_var_1299, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016939 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016940 uint64_t cgen_var_1300;
16941 stream->read((uint64_t*)&cgen_var_1300, 8);
16942 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1300, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016943 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
16944 stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016945 countingStream->clearPool();
16946 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016947 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016948 return vkRegisterDeviceEventEXT_VkResult_return;
16949}
16950
16951VkResult VkEncoder::vkRegisterDisplayEventEXT(
16952 VkDevice device,
16953 VkDisplayKHR display,
16954 const VkDisplayEventInfoEXT* pDisplayEventInfo,
16955 const VkAllocationCallbacks* pAllocator,
16956 VkFence* pFence)
16957{
16958 auto stream = mImpl->stream();
16959 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016960 auto resources = mImpl->resources();
16961 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016962 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016963 VkDevice local_device;
16964 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016965 VkDisplayKHR local_display;
16966 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016967 VkDisplayEventInfoEXT* local_pDisplayEventInfo;
16968 local_pDisplayEventInfo = nullptr;
16969 if (pDisplayEventInfo)
16970 {
16971 local_pDisplayEventInfo = (VkDisplayEventInfoEXT*)pool->alloc(sizeof(const VkDisplayEventInfoEXT));
16972 deepcopy_VkDisplayEventInfoEXT(pool, pDisplayEventInfo, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
16973 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016974 VkAllocationCallbacks* local_pAllocator;
16975 local_pAllocator = nullptr;
16976 if (pAllocator)
16977 {
16978 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16979 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16980 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016981 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016982 countingStream->rewind();
16983 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016984 uint64_t cgen_var_1301;
16985 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1301, 1);
16986 countingStream->write((uint64_t*)&cgen_var_1301, 1 * 8);
16987 uint64_t cgen_var_1302;
16988 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1302, 1);
16989 countingStream->write((uint64_t*)&cgen_var_1302, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016990 marshal_VkDisplayEventInfoEXT(countingStream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016991 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016992 uint64_t cgen_var_1303 = (uint64_t)(uintptr_t)local_pAllocator;
16993 countingStream->putBe64(cgen_var_1303);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016994 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016995 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016996 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016997 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016998 uint64_t cgen_var_1304;
16999 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1304, 1);
17000 countingStream->write((uint64_t*)&cgen_var_1304, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017001 }
17002 uint32_t packetSize_vkRegisterDisplayEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17003 countingStream->rewind();
17004 uint32_t opcode_vkRegisterDisplayEventEXT = OP_vkRegisterDisplayEventEXT;
17005 stream->write(&opcode_vkRegisterDisplayEventEXT, sizeof(uint32_t));
17006 stream->write(&packetSize_vkRegisterDisplayEventEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017007 uint64_t cgen_var_1305;
17008 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1305, 1);
17009 stream->write((uint64_t*)&cgen_var_1305, 1 * 8);
17010 uint64_t cgen_var_1306;
17011 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1306, 1);
17012 stream->write((uint64_t*)&cgen_var_1306, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017013 marshal_VkDisplayEventInfoEXT(stream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017014 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017015 uint64_t cgen_var_1307 = (uint64_t)(uintptr_t)local_pAllocator;
17016 stream->putBe64(cgen_var_1307);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017017 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017018 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017019 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017020 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017021 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017022 uint64_t cgen_var_1308;
17023 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1308, 1);
17024 stream->write((uint64_t*)&cgen_var_1308, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017025 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017026 uint64_t cgen_var_1309;
17027 stream->read((uint64_t*)&cgen_var_1309, 8);
17028 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1309, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017029 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
17030 stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017031 countingStream->clearPool();
17032 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017033 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017034 return vkRegisterDisplayEventEXT_VkResult_return;
17035}
17036
17037VkResult VkEncoder::vkGetSwapchainCounterEXT(
17038 VkDevice device,
17039 VkSwapchainKHR swapchain,
17040 VkSurfaceCounterFlagBitsEXT counter,
17041 uint64_t* pCounterValue)
17042{
17043 auto stream = mImpl->stream();
17044 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017045 auto resources = mImpl->resources();
17046 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017047 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017048 VkDevice local_device;
17049 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017050 VkSwapchainKHR local_swapchain;
17051 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017052 VkSurfaceCounterFlagBitsEXT local_counter;
17053 local_counter = counter;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017054 countingStream->rewind();
17055 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017056 uint64_t cgen_var_1310;
17057 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1310, 1);
17058 countingStream->write((uint64_t*)&cgen_var_1310, 1 * 8);
17059 uint64_t cgen_var_1311;
17060 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1311, 1);
17061 countingStream->write((uint64_t*)&cgen_var_1311, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017062 countingStream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017063 countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
17064 }
17065 uint32_t packetSize_vkGetSwapchainCounterEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17066 countingStream->rewind();
17067 uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT;
17068 stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t));
17069 stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017070 uint64_t cgen_var_1312;
17071 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1312, 1);
17072 stream->write((uint64_t*)&cgen_var_1312, 1 * 8);
17073 uint64_t cgen_var_1313;
17074 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1313, 1);
17075 stream->write((uint64_t*)&cgen_var_1313, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017076 stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017077 stream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
17078 stream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
17079 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
17080 stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017081 countingStream->clearPool();
17082 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017083 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017084 return vkGetSwapchainCounterEXT_VkResult_return;
17085}
17086
17087#endif
17088#ifdef VK_GOOGLE_display_timing
17089VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE(
17090 VkDevice device,
17091 VkSwapchainKHR swapchain,
17092 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
17093{
17094 auto stream = mImpl->stream();
17095 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017096 auto resources = mImpl->resources();
17097 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017098 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017099 VkDevice local_device;
17100 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017101 VkSwapchainKHR local_swapchain;
17102 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017103 countingStream->rewind();
17104 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017105 uint64_t cgen_var_1314;
17106 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1314, 1);
17107 countingStream->write((uint64_t*)&cgen_var_1314, 1 * 8);
17108 uint64_t cgen_var_1315;
17109 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1315, 1);
17110 countingStream->write((uint64_t*)&cgen_var_1315, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017111 marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17112 }
17113 uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17114 countingStream->rewind();
17115 uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE;
17116 stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
17117 stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017118 uint64_t cgen_var_1316;
17119 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1316, 1);
17120 stream->write((uint64_t*)&cgen_var_1316, 1 * 8);
17121 uint64_t cgen_var_1317;
17122 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1317, 1);
17123 stream->write((uint64_t*)&cgen_var_1317, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017124 marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17125 unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17126 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
17127 stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017128 countingStream->clearPool();
17129 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017130 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017131 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
17132}
17133
17134VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE(
17135 VkDevice device,
17136 VkSwapchainKHR swapchain,
17137 uint32_t* pPresentationTimingCount,
17138 VkPastPresentationTimingGOOGLE* pPresentationTimings)
17139{
17140 auto stream = mImpl->stream();
17141 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017142 auto resources = mImpl->resources();
17143 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017144 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017145 VkDevice local_device;
17146 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017147 VkSwapchainKHR local_swapchain;
17148 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017149 countingStream->rewind();
17150 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017151 uint64_t cgen_var_1318;
17152 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1318, 1);
17153 countingStream->write((uint64_t*)&cgen_var_1318, 1 * 8);
17154 uint64_t cgen_var_1319;
17155 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1319, 1);
17156 countingStream->write((uint64_t*)&cgen_var_1319, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017157 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017158 uint64_t cgen_var_1320 = (uint64_t)(uintptr_t)pPresentationTimingCount;
17159 countingStream->putBe64(cgen_var_1320);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017160 if (pPresentationTimingCount)
17161 {
17162 countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17163 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017164 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017165 uint64_t cgen_var_1321 = (uint64_t)(uintptr_t)pPresentationTimings;
17166 countingStream->putBe64(cgen_var_1321);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017167 if (pPresentationTimings)
17168 {
17169 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17170 {
17171 marshal_VkPastPresentationTimingGOOGLE(countingStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17172 }
17173 }
17174 }
17175 uint32_t packetSize_vkGetPastPresentationTimingGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17176 countingStream->rewind();
17177 uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE;
17178 stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
17179 stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017180 uint64_t cgen_var_1322;
17181 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1322, 1);
17182 stream->write((uint64_t*)&cgen_var_1322, 1 * 8);
17183 uint64_t cgen_var_1323;
17184 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1323, 1);
17185 stream->write((uint64_t*)&cgen_var_1323, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017186 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017187 uint64_t cgen_var_1324 = (uint64_t)(uintptr_t)pPresentationTimingCount;
17188 stream->putBe64(cgen_var_1324);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017189 if (pPresentationTimingCount)
17190 {
17191 stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17192 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017193 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017194 uint64_t cgen_var_1325 = (uint64_t)(uintptr_t)pPresentationTimings;
17195 stream->putBe64(cgen_var_1325);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017196 if (pPresentationTimings)
17197 {
17198 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17199 {
17200 marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17201 }
17202 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017203 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017204 uint32_t* check_pPresentationTimingCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017205 check_pPresentationTimingCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017206 if (pPresentationTimingCount)
17207 {
17208 if (!(check_pPresentationTimingCount))
17209 {
17210 fprintf(stderr, "fatal: pPresentationTimingCount inconsistent between guest and host\n");
17211 }
17212 stream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17213 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017214 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017215 VkPastPresentationTimingGOOGLE* check_pPresentationTimings;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017216 check_pPresentationTimings = (VkPastPresentationTimingGOOGLE*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017217 if (pPresentationTimings)
17218 {
17219 if (!(check_pPresentationTimings))
17220 {
17221 fprintf(stderr, "fatal: pPresentationTimings inconsistent between guest and host\n");
17222 }
17223 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17224 {
17225 unmarshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17226 }
17227 }
17228 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
17229 stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017230 countingStream->clearPool();
17231 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017232 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017233 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
17234}
17235
17236#endif
17237#ifdef VK_NV_sample_mask_override_coverage
17238#endif
17239#ifdef VK_NV_geometry_shader_passthrough
17240#endif
17241#ifdef VK_NV_viewport_array2
17242#endif
17243#ifdef VK_NVX_multiview_per_view_attributes
17244#endif
17245#ifdef VK_NV_viewport_swizzle
17246#endif
17247#ifdef VK_EXT_discard_rectangles
17248void VkEncoder::vkCmdSetDiscardRectangleEXT(
17249 VkCommandBuffer commandBuffer,
17250 uint32_t firstDiscardRectangle,
17251 uint32_t discardRectangleCount,
17252 const VkRect2D* pDiscardRectangles)
17253{
17254 auto stream = mImpl->stream();
17255 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017256 auto resources = mImpl->resources();
17257 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017258 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017259 VkCommandBuffer local_commandBuffer;
17260 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017261 uint32_t local_firstDiscardRectangle;
17262 local_firstDiscardRectangle = firstDiscardRectangle;
17263 uint32_t local_discardRectangleCount;
17264 local_discardRectangleCount = discardRectangleCount;
17265 VkRect2D* local_pDiscardRectangles;
17266 local_pDiscardRectangles = nullptr;
17267 if (pDiscardRectangles)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017268 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017269 local_pDiscardRectangles = (VkRect2D*)pool->alloc(((discardRectangleCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017270 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17271 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017272 deepcopy_VkRect2D(pool, pDiscardRectangles + i, (VkRect2D*)(local_pDiscardRectangles + i));
17273 }
17274 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017275 countingStream->rewind();
17276 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017277 uint64_t cgen_var_1328;
17278 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1328, 1);
17279 countingStream->write((uint64_t*)&cgen_var_1328, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017280 countingStream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
17281 countingStream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
17282 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17283 {
17284 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017285 }
17286 }
17287 uint32_t packetSize_vkCmdSetDiscardRectangleEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17288 countingStream->rewind();
17289 uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT;
17290 stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
17291 stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017292 uint64_t cgen_var_1329;
17293 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1329, 1);
17294 stream->write((uint64_t*)&cgen_var_1329, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017295 stream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
17296 stream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017297 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17298 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017299 marshal_VkRect2D(stream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017300 }
17301}
17302
17303#endif
17304#ifdef VK_EXT_conservative_rasterization
17305#endif
17306#ifdef VK_EXT_swapchain_colorspace
17307#endif
17308#ifdef VK_EXT_hdr_metadata
17309void VkEncoder::vkSetHdrMetadataEXT(
17310 VkDevice device,
17311 uint32_t swapchainCount,
17312 const VkSwapchainKHR* pSwapchains,
17313 const VkHdrMetadataEXT* pMetadata)
17314{
17315 auto stream = mImpl->stream();
17316 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017317 auto resources = mImpl->resources();
17318 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017319 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017320 VkDevice local_device;
17321 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017322 uint32_t local_swapchainCount;
17323 local_swapchainCount = swapchainCount;
17324 VkSwapchainKHR* local_pSwapchains;
17325 local_pSwapchains = nullptr;
17326 if (pSwapchains)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017327 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017328 local_pSwapchains = (VkSwapchainKHR*)pool->dupArray(pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
17329 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017330 VkHdrMetadataEXT* local_pMetadata;
17331 local_pMetadata = nullptr;
17332 if (pMetadata)
17333 {
17334 local_pMetadata = (VkHdrMetadataEXT*)pool->alloc(((swapchainCount)) * sizeof(const VkHdrMetadataEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017335 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17336 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017337 deepcopy_VkHdrMetadataEXT(pool, pMetadata + i, (VkHdrMetadataEXT*)(local_pMetadata + i));
17338 }
17339 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017340 countingStream->rewind();
17341 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017342 uint64_t cgen_var_1330;
17343 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1330, 1);
17344 countingStream->write((uint64_t*)&cgen_var_1330, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017345 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017346 if (((swapchainCount)))
17347 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017348 uint64_t* cgen_var_1331;
17349 countingStream->alloc((void**)&cgen_var_1331, ((swapchainCount)) * 8);
17350 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1331, ((swapchainCount)));
17351 countingStream->write((uint64_t*)cgen_var_1331, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080017352 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017353 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17354 {
17355 marshal_VkHdrMetadataEXT(countingStream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017356 }
17357 }
17358 uint32_t packetSize_vkSetHdrMetadataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17359 countingStream->rewind();
17360 uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT;
17361 stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t));
17362 stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017363 uint64_t cgen_var_1332;
17364 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1332, 1);
17365 stream->write((uint64_t*)&cgen_var_1332, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017366 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017367 if (((swapchainCount)))
17368 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017369 uint64_t* cgen_var_1333;
17370 stream->alloc((void**)&cgen_var_1333, ((swapchainCount)) * 8);
17371 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1333, ((swapchainCount)));
17372 stream->write((uint64_t*)cgen_var_1333, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080017373 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017374 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17375 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017376 marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017377 }
17378}
17379
17380#endif
17381#ifdef VK_MVK_ios_surface
17382VkResult VkEncoder::vkCreateIOSSurfaceMVK(
17383 VkInstance instance,
17384 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
17385 const VkAllocationCallbacks* pAllocator,
17386 VkSurfaceKHR* pSurface)
17387{
17388 auto stream = mImpl->stream();
17389 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017390 auto resources = mImpl->resources();
17391 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017392 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017393 VkInstance local_instance;
17394 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017395 VkIOSSurfaceCreateInfoMVK* local_pCreateInfo;
17396 local_pCreateInfo = nullptr;
17397 if (pCreateInfo)
17398 {
17399 local_pCreateInfo = (VkIOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkIOSSurfaceCreateInfoMVK));
17400 deepcopy_VkIOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
17401 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017402 VkAllocationCallbacks* local_pAllocator;
17403 local_pAllocator = nullptr;
17404 if (pAllocator)
17405 {
17406 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17407 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17408 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017409 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017410 countingStream->rewind();
17411 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017412 uint64_t cgen_var_1334;
17413 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1334, 1);
17414 countingStream->write((uint64_t*)&cgen_var_1334, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017415 marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017416 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017417 uint64_t cgen_var_1335 = (uint64_t)(uintptr_t)local_pAllocator;
17418 countingStream->putBe64(cgen_var_1335);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017419 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017420 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017421 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017422 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017423 uint64_t cgen_var_1336;
17424 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1336, 1);
17425 countingStream->write((uint64_t*)&cgen_var_1336, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017426 }
17427 uint32_t packetSize_vkCreateIOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17428 countingStream->rewind();
17429 uint32_t opcode_vkCreateIOSSurfaceMVK = OP_vkCreateIOSSurfaceMVK;
17430 stream->write(&opcode_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
17431 stream->write(&packetSize_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017432 uint64_t cgen_var_1337;
17433 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1337, 1);
17434 stream->write((uint64_t*)&cgen_var_1337, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017435 marshal_VkIOSSurfaceCreateInfoMVK(stream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017436 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017437 uint64_t cgen_var_1338 = (uint64_t)(uintptr_t)local_pAllocator;
17438 stream->putBe64(cgen_var_1338);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017439 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017440 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017441 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017442 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017443 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017444 uint64_t cgen_var_1339;
17445 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1339, 1);
17446 stream->write((uint64_t*)&cgen_var_1339, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017447 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017448 uint64_t cgen_var_1340;
17449 stream->read((uint64_t*)&cgen_var_1340, 8);
17450 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1340, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017451 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
17452 stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017453 countingStream->clearPool();
17454 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017455 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017456 return vkCreateIOSSurfaceMVK_VkResult_return;
17457}
17458
17459#endif
17460#ifdef VK_MVK_macos_surface
17461VkResult VkEncoder::vkCreateMacOSSurfaceMVK(
17462 VkInstance instance,
17463 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
17464 const VkAllocationCallbacks* pAllocator,
17465 VkSurfaceKHR* pSurface)
17466{
17467 auto stream = mImpl->stream();
17468 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017469 auto resources = mImpl->resources();
17470 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017471 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017472 VkInstance local_instance;
17473 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017474 VkMacOSSurfaceCreateInfoMVK* local_pCreateInfo;
17475 local_pCreateInfo = nullptr;
17476 if (pCreateInfo)
17477 {
17478 local_pCreateInfo = (VkMacOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkMacOSSurfaceCreateInfoMVK));
17479 deepcopy_VkMacOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
17480 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017481 VkAllocationCallbacks* local_pAllocator;
17482 local_pAllocator = nullptr;
17483 if (pAllocator)
17484 {
17485 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17486 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17487 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017488 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017489 countingStream->rewind();
17490 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017491 uint64_t cgen_var_1341;
17492 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1341, 1);
17493 countingStream->write((uint64_t*)&cgen_var_1341, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017494 marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017495 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017496 uint64_t cgen_var_1342 = (uint64_t)(uintptr_t)local_pAllocator;
17497 countingStream->putBe64(cgen_var_1342);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017498 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017499 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017500 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017501 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017502 uint64_t cgen_var_1343;
17503 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1343, 1);
17504 countingStream->write((uint64_t*)&cgen_var_1343, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017505 }
17506 uint32_t packetSize_vkCreateMacOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17507 countingStream->rewind();
17508 uint32_t opcode_vkCreateMacOSSurfaceMVK = OP_vkCreateMacOSSurfaceMVK;
17509 stream->write(&opcode_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
17510 stream->write(&packetSize_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017511 uint64_t cgen_var_1344;
17512 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1344, 1);
17513 stream->write((uint64_t*)&cgen_var_1344, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017514 marshal_VkMacOSSurfaceCreateInfoMVK(stream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017515 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017516 uint64_t cgen_var_1345 = (uint64_t)(uintptr_t)local_pAllocator;
17517 stream->putBe64(cgen_var_1345);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017518 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017519 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017520 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017521 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017522 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017523 uint64_t cgen_var_1346;
17524 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1346, 1);
17525 stream->write((uint64_t*)&cgen_var_1346, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017526 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017527 uint64_t cgen_var_1347;
17528 stream->read((uint64_t*)&cgen_var_1347, 8);
17529 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1347, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017530 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
17531 stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017532 countingStream->clearPool();
17533 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017534 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017535 return vkCreateMacOSSurfaceMVK_VkResult_return;
17536}
17537
17538#endif
17539#ifdef VK_EXT_external_memory_dma_buf
17540#endif
17541#ifdef VK_EXT_queue_family_foreign
17542#endif
17543#ifdef VK_EXT_debug_utils
17544VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT(
17545 VkDevice device,
17546 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
17547{
17548 auto stream = mImpl->stream();
17549 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017550 auto resources = mImpl->resources();
17551 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017552 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017553 VkDevice local_device;
17554 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017555 VkDebugUtilsObjectNameInfoEXT* local_pNameInfo;
17556 local_pNameInfo = nullptr;
17557 if (pNameInfo)
17558 {
17559 local_pNameInfo = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectNameInfoEXT));
17560 deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, pNameInfo, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
17561 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017562 countingStream->rewind();
17563 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017564 uint64_t cgen_var_1348;
17565 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1348, 1);
17566 countingStream->write((uint64_t*)&cgen_var_1348, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017567 marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017568 }
17569 uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17570 countingStream->rewind();
17571 uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT;
17572 stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
17573 stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017574 uint64_t cgen_var_1349;
17575 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1349, 1);
17576 stream->write((uint64_t*)&cgen_var_1349, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017577 marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017578 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
17579 stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017580 countingStream->clearPool();
17581 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017582 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017583 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
17584}
17585
17586VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT(
17587 VkDevice device,
17588 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
17589{
17590 auto stream = mImpl->stream();
17591 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017592 auto resources = mImpl->resources();
17593 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017594 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017595 VkDevice local_device;
17596 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017597 VkDebugUtilsObjectTagInfoEXT* local_pTagInfo;
17598 local_pTagInfo = nullptr;
17599 if (pTagInfo)
17600 {
17601 local_pTagInfo = (VkDebugUtilsObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectTagInfoEXT));
17602 deepcopy_VkDebugUtilsObjectTagInfoEXT(pool, pTagInfo, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
17603 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017604 countingStream->rewind();
17605 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017606 uint64_t cgen_var_1350;
17607 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1350, 1);
17608 countingStream->write((uint64_t*)&cgen_var_1350, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017609 marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017610 }
17611 uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17612 countingStream->rewind();
17613 uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT;
17614 stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
17615 stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017616 uint64_t cgen_var_1351;
17617 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1351, 1);
17618 stream->write((uint64_t*)&cgen_var_1351, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017619 marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017620 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
17621 stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017622 countingStream->clearPool();
17623 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017624 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017625 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
17626}
17627
17628void VkEncoder::vkQueueBeginDebugUtilsLabelEXT(
17629 VkQueue queue,
17630 const VkDebugUtilsLabelEXT* pLabelInfo)
17631{
17632 auto stream = mImpl->stream();
17633 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017634 auto resources = mImpl->resources();
17635 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017636 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017637 VkQueue local_queue;
17638 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017639 VkDebugUtilsLabelEXT* local_pLabelInfo;
17640 local_pLabelInfo = nullptr;
17641 if (pLabelInfo)
17642 {
17643 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17644 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17645 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017646 countingStream->rewind();
17647 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017648 uint64_t cgen_var_1352;
17649 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1352, 1);
17650 countingStream->write((uint64_t*)&cgen_var_1352, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017651 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017652 }
17653 uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17654 countingStream->rewind();
17655 uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT;
17656 stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
17657 stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017658 uint64_t cgen_var_1353;
17659 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1353, 1);
17660 stream->write((uint64_t*)&cgen_var_1353, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017661 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017662}
17663
17664void VkEncoder::vkQueueEndDebugUtilsLabelEXT(
17665 VkQueue queue)
17666{
17667 auto stream = mImpl->stream();
17668 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017669 auto resources = mImpl->resources();
17670 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017671 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017672 VkQueue local_queue;
17673 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017674 countingStream->rewind();
17675 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017676 uint64_t cgen_var_1354;
17677 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1354, 1);
17678 countingStream->write((uint64_t*)&cgen_var_1354, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017679 }
17680 uint32_t packetSize_vkQueueEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17681 countingStream->rewind();
17682 uint32_t opcode_vkQueueEndDebugUtilsLabelEXT = OP_vkQueueEndDebugUtilsLabelEXT;
17683 stream->write(&opcode_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
17684 stream->write(&packetSize_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017685 uint64_t cgen_var_1355;
17686 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1355, 1);
17687 stream->write((uint64_t*)&cgen_var_1355, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017688}
17689
17690void VkEncoder::vkQueueInsertDebugUtilsLabelEXT(
17691 VkQueue queue,
17692 const VkDebugUtilsLabelEXT* pLabelInfo)
17693{
17694 auto stream = mImpl->stream();
17695 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017696 auto resources = mImpl->resources();
17697 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017698 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017699 VkQueue local_queue;
17700 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017701 VkDebugUtilsLabelEXT* local_pLabelInfo;
17702 local_pLabelInfo = nullptr;
17703 if (pLabelInfo)
17704 {
17705 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17706 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17707 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017708 countingStream->rewind();
17709 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017710 uint64_t cgen_var_1356;
17711 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1356, 1);
17712 countingStream->write((uint64_t*)&cgen_var_1356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017713 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017714 }
17715 uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17716 countingStream->rewind();
17717 uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT;
17718 stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
17719 stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017720 uint64_t cgen_var_1357;
17721 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1357, 1);
17722 stream->write((uint64_t*)&cgen_var_1357, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017723 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017724}
17725
17726void VkEncoder::vkCmdBeginDebugUtilsLabelEXT(
17727 VkCommandBuffer commandBuffer,
17728 const VkDebugUtilsLabelEXT* pLabelInfo)
17729{
17730 auto stream = mImpl->stream();
17731 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017732 auto resources = mImpl->resources();
17733 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017734 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017735 VkCommandBuffer local_commandBuffer;
17736 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017737 VkDebugUtilsLabelEXT* local_pLabelInfo;
17738 local_pLabelInfo = nullptr;
17739 if (pLabelInfo)
17740 {
17741 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17742 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17743 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017744 countingStream->rewind();
17745 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080017746 uint64_t cgen_var_1358;
17747 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1358, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017748 countingStream->write((uint64_t*)&cgen_var_1358, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017749 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017750 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017751 uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17752 countingStream->rewind();
17753 uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT;
17754 stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
17755 stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
17756 uint64_t cgen_var_1359;
17757 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1359, 1);
17758 stream->write((uint64_t*)&cgen_var_1359, 1 * 8);
17759 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17760}
17761
17762void VkEncoder::vkCmdEndDebugUtilsLabelEXT(
17763 VkCommandBuffer commandBuffer)
17764{
17765 auto stream = mImpl->stream();
17766 auto countingStream = mImpl->countingStream();
17767 auto resources = mImpl->resources();
17768 auto pool = mImpl->pool();
17769 stream->setHandleMapping(resources->unwrapMapping());
17770 VkCommandBuffer local_commandBuffer;
17771 local_commandBuffer = commandBuffer;
17772 countingStream->rewind();
17773 {
17774 uint64_t cgen_var_1360;
17775 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1360, 1);
17776 countingStream->write((uint64_t*)&cgen_var_1360, 1 * 8);
17777 }
17778 uint32_t packetSize_vkCmdEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17779 countingStream->rewind();
17780 uint32_t opcode_vkCmdEndDebugUtilsLabelEXT = OP_vkCmdEndDebugUtilsLabelEXT;
17781 stream->write(&opcode_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
17782 stream->write(&packetSize_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
17783 uint64_t cgen_var_1361;
17784 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1361, 1);
17785 stream->write((uint64_t*)&cgen_var_1361, 1 * 8);
17786}
17787
17788void VkEncoder::vkCmdInsertDebugUtilsLabelEXT(
17789 VkCommandBuffer commandBuffer,
17790 const VkDebugUtilsLabelEXT* pLabelInfo)
17791{
17792 auto stream = mImpl->stream();
17793 auto countingStream = mImpl->countingStream();
17794 auto resources = mImpl->resources();
17795 auto pool = mImpl->pool();
17796 stream->setHandleMapping(resources->unwrapMapping());
17797 VkCommandBuffer local_commandBuffer;
17798 local_commandBuffer = commandBuffer;
17799 VkDebugUtilsLabelEXT* local_pLabelInfo;
17800 local_pLabelInfo = nullptr;
17801 if (pLabelInfo)
17802 {
17803 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17804 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17805 }
17806 countingStream->rewind();
17807 {
17808 uint64_t cgen_var_1362;
17809 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1362, 1);
17810 countingStream->write((uint64_t*)&cgen_var_1362, 1 * 8);
17811 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17812 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017813 uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17814 countingStream->rewind();
17815 uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT;
17816 stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
17817 stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017818 uint64_t cgen_var_1363;
17819 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1363, 1);
17820 stream->write((uint64_t*)&cgen_var_1363, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017821 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017822}
17823
17824VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT(
17825 VkInstance instance,
17826 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
17827 const VkAllocationCallbacks* pAllocator,
17828 VkDebugUtilsMessengerEXT* pMessenger)
17829{
17830 auto stream = mImpl->stream();
17831 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017832 auto resources = mImpl->resources();
17833 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017834 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017835 VkInstance local_instance;
17836 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017837 VkDebugUtilsMessengerCreateInfoEXT* local_pCreateInfo;
17838 local_pCreateInfo = nullptr;
17839 if (pCreateInfo)
17840 {
17841 local_pCreateInfo = (VkDebugUtilsMessengerCreateInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCreateInfoEXT));
17842 deepcopy_VkDebugUtilsMessengerCreateInfoEXT(pool, pCreateInfo, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
17843 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017844 VkAllocationCallbacks* local_pAllocator;
17845 local_pAllocator = nullptr;
17846 if (pAllocator)
17847 {
17848 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17849 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17850 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017851 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017852 countingStream->rewind();
17853 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017854 uint64_t cgen_var_1364;
17855 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1364, 1);
17856 countingStream->write((uint64_t*)&cgen_var_1364, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017857 marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017858 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017859 uint64_t cgen_var_1365 = (uint64_t)(uintptr_t)local_pAllocator;
17860 countingStream->putBe64(cgen_var_1365);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017861 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017862 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017863 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017864 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017865 uint64_t cgen_var_1366;
17866 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1366, 1);
17867 countingStream->write((uint64_t*)&cgen_var_1366, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017868 }
17869 uint32_t packetSize_vkCreateDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17870 countingStream->rewind();
17871 uint32_t opcode_vkCreateDebugUtilsMessengerEXT = OP_vkCreateDebugUtilsMessengerEXT;
17872 stream->write(&opcode_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
17873 stream->write(&packetSize_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017874 uint64_t cgen_var_1367;
17875 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1367, 1);
17876 stream->write((uint64_t*)&cgen_var_1367, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017877 marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017878 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017879 uint64_t cgen_var_1368 = (uint64_t)(uintptr_t)local_pAllocator;
17880 stream->putBe64(cgen_var_1368);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017881 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017882 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017883 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017884 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017885 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017886 uint64_t cgen_var_1369;
17887 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1369, 1);
17888 stream->write((uint64_t*)&cgen_var_1369, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017889 stream->setHandleMapping(resources->unwrapMapping());
17890 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017891 uint64_t cgen_var_1370;
17892 stream->read((uint64_t*)&cgen_var_1370, 8);
17893 stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1370, (VkDebugUtilsMessengerEXT*)pMessenger, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017894 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017895 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
17896 stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017897 countingStream->clearPool();
17898 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017899 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017900 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
17901}
17902
17903void VkEncoder::vkDestroyDebugUtilsMessengerEXT(
17904 VkInstance instance,
17905 VkDebugUtilsMessengerEXT messenger,
17906 const VkAllocationCallbacks* pAllocator)
17907{
17908 auto stream = mImpl->stream();
17909 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017910 auto resources = mImpl->resources();
17911 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017912 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017913 VkInstance local_instance;
17914 local_instance = instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017915 VkDebugUtilsMessengerEXT local_messenger;
17916 local_messenger = messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017917 VkAllocationCallbacks* local_pAllocator;
17918 local_pAllocator = nullptr;
17919 if (pAllocator)
17920 {
17921 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17922 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17923 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017924 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017925 countingStream->rewind();
17926 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017927 uint64_t cgen_var_1371;
17928 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1371, 1);
17929 countingStream->write((uint64_t*)&cgen_var_1371, 1 * 8);
17930 uint64_t cgen_var_1372;
17931 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1372, 1);
17932 countingStream->write((uint64_t*)&cgen_var_1372, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017933 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017934 uint64_t cgen_var_1373 = (uint64_t)(uintptr_t)local_pAllocator;
17935 countingStream->putBe64(cgen_var_1373);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017936 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017937 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017938 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017939 }
17940 }
17941 uint32_t packetSize_vkDestroyDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17942 countingStream->rewind();
17943 uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT;
17944 stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
17945 stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017946 uint64_t cgen_var_1374;
17947 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1374, 1);
17948 stream->write((uint64_t*)&cgen_var_1374, 1 * 8);
17949 uint64_t cgen_var_1375;
17950 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1375, 1);
17951 stream->write((uint64_t*)&cgen_var_1375, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017952 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017953 uint64_t cgen_var_1376 = (uint64_t)(uintptr_t)local_pAllocator;
17954 stream->putBe64(cgen_var_1376);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017955 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017956 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017957 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017958 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017959 resources->destroyMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)&messenger);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017960}
17961
17962void VkEncoder::vkSubmitDebugUtilsMessageEXT(
17963 VkInstance instance,
17964 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
17965 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
17966 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
17967{
17968 auto stream = mImpl->stream();
17969 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017970 auto resources = mImpl->resources();
17971 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017972 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017973 VkInstance local_instance;
17974 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017975 VkDebugUtilsMessageSeverityFlagBitsEXT local_messageSeverity;
17976 local_messageSeverity = messageSeverity;
17977 VkDebugUtilsMessageTypeFlagsEXT local_messageTypes;
17978 local_messageTypes = messageTypes;
17979 VkDebugUtilsMessengerCallbackDataEXT* local_pCallbackData;
17980 local_pCallbackData = nullptr;
17981 if (pCallbackData)
17982 {
17983 local_pCallbackData = (VkDebugUtilsMessengerCallbackDataEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCallbackDataEXT));
17984 deepcopy_VkDebugUtilsMessengerCallbackDataEXT(pool, pCallbackData, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
17985 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017986 countingStream->rewind();
17987 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017988 uint64_t cgen_var_1377;
17989 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1377, 1);
17990 countingStream->write((uint64_t*)&cgen_var_1377, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017991 countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
17992 countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
17993 marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017994 }
17995 uint32_t packetSize_vkSubmitDebugUtilsMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17996 countingStream->rewind();
17997 uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT;
17998 stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
17999 stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018000 uint64_t cgen_var_1378;
18001 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1378, 1);
18002 stream->write((uint64_t*)&cgen_var_1378, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018003 stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
18004 stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
18005 marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018006}
18007
18008#endif
18009#ifdef VK_ANDROID_external_memory_android_hardware_buffer
18010VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID(
18011 VkDevice device,
18012 const AHardwareBuffer* buffer,
18013 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
18014{
18015 auto stream = mImpl->stream();
18016 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018017 auto resources = mImpl->resources();
18018 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018019 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018020 VkDevice local_device;
18021 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018022 AHardwareBuffer* local_buffer;
18023 local_buffer = nullptr;
18024 if (buffer)
18025 {
18026 local_buffer = (AHardwareBuffer*)pool->dupArray(buffer, sizeof(const AHardwareBuffer));
18027 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018028 countingStream->rewind();
18029 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018030 uint64_t cgen_var_1379;
18031 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1379, 1);
18032 countingStream->write((uint64_t*)&cgen_var_1379, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018033 countingStream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018034 marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18035 }
18036 uint32_t packetSize_vkGetAndroidHardwareBufferPropertiesANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18037 countingStream->rewind();
18038 uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
18039 stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
18040 stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018041 uint64_t cgen_var_1380;
18042 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1380, 1);
18043 stream->write((uint64_t*)&cgen_var_1380, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018044 stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018045 marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18046 unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18047 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
18048 stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018049 countingStream->clearPool();
18050 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018051 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018052 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
18053}
18054
18055VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID(
18056 VkDevice device,
18057 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
18058 AHardwareBuffer** pBuffer)
18059{
18060 auto stream = mImpl->stream();
18061 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018062 auto resources = mImpl->resources();
18063 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018064 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018065 VkDevice local_device;
18066 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018067 VkMemoryGetAndroidHardwareBufferInfoANDROID* local_pInfo;
18068 local_pInfo = nullptr;
18069 if (pInfo)
18070 {
18071 local_pInfo = (VkMemoryGetAndroidHardwareBufferInfoANDROID*)pool->alloc(sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID));
18072 deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(pool, pInfo, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
18073 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018074 countingStream->rewind();
18075 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018076 uint64_t cgen_var_1381;
18077 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1381, 1);
18078 countingStream->write((uint64_t*)&cgen_var_1381, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018079 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018080 countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18081 }
18082 uint32_t packetSize_vkGetMemoryAndroidHardwareBufferANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18083 countingStream->rewind();
18084 uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID;
18085 stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
18086 stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018087 uint64_t cgen_var_1382;
18088 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1382, 1);
18089 stream->write((uint64_t*)&cgen_var_1382, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018090 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018091 stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18092 stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18093 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
18094 stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018095 countingStream->clearPool();
18096 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018097 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018098 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
18099}
18100
18101#endif
18102#ifdef VK_EXT_sampler_filter_minmax
18103#endif
18104#ifdef VK_AMD_gpu_shader_int16
18105#endif
18106#ifdef VK_AMD_mixed_attachment_samples
18107#endif
18108#ifdef VK_AMD_shader_fragment_mask
18109#endif
18110#ifdef VK_EXT_shader_stencil_export
18111#endif
18112#ifdef VK_EXT_sample_locations
18113void VkEncoder::vkCmdSetSampleLocationsEXT(
18114 VkCommandBuffer commandBuffer,
18115 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
18116{
18117 auto stream = mImpl->stream();
18118 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018119 auto resources = mImpl->resources();
18120 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018121 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018122 VkCommandBuffer local_commandBuffer;
18123 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018124 VkSampleLocationsInfoEXT* local_pSampleLocationsInfo;
18125 local_pSampleLocationsInfo = nullptr;
18126 if (pSampleLocationsInfo)
18127 {
18128 local_pSampleLocationsInfo = (VkSampleLocationsInfoEXT*)pool->alloc(sizeof(const VkSampleLocationsInfoEXT));
18129 deepcopy_VkSampleLocationsInfoEXT(pool, pSampleLocationsInfo, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
18130 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018131 countingStream->rewind();
18132 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018133 uint64_t cgen_var_1383;
18134 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1383, 1);
18135 countingStream->write((uint64_t*)&cgen_var_1383, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018136 marshal_VkSampleLocationsInfoEXT(countingStream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018137 }
18138 uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18139 countingStream->rewind();
18140 uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT;
18141 stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
18142 stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018143 uint64_t cgen_var_1384;
18144 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1384, 1);
18145 stream->write((uint64_t*)&cgen_var_1384, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018146 marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018147}
18148
18149void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT(
18150 VkPhysicalDevice physicalDevice,
18151 VkSampleCountFlagBits samples,
18152 VkMultisamplePropertiesEXT* pMultisampleProperties)
18153{
18154 auto stream = mImpl->stream();
18155 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018156 auto resources = mImpl->resources();
18157 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018158 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018159 VkPhysicalDevice local_physicalDevice;
18160 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018161 VkSampleCountFlagBits local_samples;
18162 local_samples = samples;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018163 countingStream->rewind();
18164 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018165 uint64_t cgen_var_1385;
18166 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1385, 1);
18167 countingStream->write((uint64_t*)&cgen_var_1385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018168 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018169 marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18170 }
18171 uint32_t packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18172 countingStream->rewind();
18173 uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
18174 stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
18175 stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018176 uint64_t cgen_var_1386;
18177 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1386, 1);
18178 stream->write((uint64_t*)&cgen_var_1386, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018179 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018180 marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18181 unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18182}
18183
18184#endif
18185#ifdef VK_EXT_blend_operation_advanced
18186#endif
18187#ifdef VK_NV_fragment_coverage_to_color
18188#endif
18189#ifdef VK_NV_framebuffer_mixed_samples
18190#endif
18191#ifdef VK_NV_fill_rectangle
18192#endif
18193#ifdef VK_EXT_post_depth_coverage
18194#endif
18195#ifdef VK_EXT_validation_cache
18196VkResult VkEncoder::vkCreateValidationCacheEXT(
18197 VkDevice device,
18198 const VkValidationCacheCreateInfoEXT* pCreateInfo,
18199 const VkAllocationCallbacks* pAllocator,
18200 VkValidationCacheEXT* pValidationCache)
18201{
18202 auto stream = mImpl->stream();
18203 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018204 auto resources = mImpl->resources();
18205 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018206 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018207 VkDevice local_device;
18208 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018209 VkValidationCacheCreateInfoEXT* local_pCreateInfo;
18210 local_pCreateInfo = nullptr;
18211 if (pCreateInfo)
18212 {
18213 local_pCreateInfo = (VkValidationCacheCreateInfoEXT*)pool->alloc(sizeof(const VkValidationCacheCreateInfoEXT));
18214 deepcopy_VkValidationCacheCreateInfoEXT(pool, pCreateInfo, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
18215 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018216 VkAllocationCallbacks* local_pAllocator;
18217 local_pAllocator = nullptr;
18218 if (pAllocator)
18219 {
18220 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18221 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18222 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018223 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018224 countingStream->rewind();
18225 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018226 uint64_t cgen_var_1387;
18227 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1387, 1);
18228 countingStream->write((uint64_t*)&cgen_var_1387, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018229 marshal_VkValidationCacheCreateInfoEXT(countingStream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018230 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018231 uint64_t cgen_var_1388 = (uint64_t)(uintptr_t)local_pAllocator;
18232 countingStream->putBe64(cgen_var_1388);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018233 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018234 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018235 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018236 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018237 uint64_t cgen_var_1389;
18238 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1389, 1);
18239 countingStream->write((uint64_t*)&cgen_var_1389, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018240 }
18241 uint32_t packetSize_vkCreateValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18242 countingStream->rewind();
18243 uint32_t opcode_vkCreateValidationCacheEXT = OP_vkCreateValidationCacheEXT;
18244 stream->write(&opcode_vkCreateValidationCacheEXT, sizeof(uint32_t));
18245 stream->write(&packetSize_vkCreateValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018246 uint64_t cgen_var_1390;
18247 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1390, 1);
18248 stream->write((uint64_t*)&cgen_var_1390, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018249 marshal_VkValidationCacheCreateInfoEXT(stream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018250 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018251 uint64_t cgen_var_1391 = (uint64_t)(uintptr_t)local_pAllocator;
18252 stream->putBe64(cgen_var_1391);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018253 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018254 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018255 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018256 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018257 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018258 uint64_t cgen_var_1392;
18259 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1392, 1);
18260 stream->write((uint64_t*)&cgen_var_1392, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018261 stream->setHandleMapping(resources->unwrapMapping());
18262 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018263 uint64_t cgen_var_1393;
18264 stream->read((uint64_t*)&cgen_var_1393, 8);
18265 stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1393, (VkValidationCacheEXT*)pValidationCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018266 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018267 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
18268 stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018269 countingStream->clearPool();
18270 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018271 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018272 return vkCreateValidationCacheEXT_VkResult_return;
18273}
18274
18275void VkEncoder::vkDestroyValidationCacheEXT(
18276 VkDevice device,
18277 VkValidationCacheEXT validationCache,
18278 const VkAllocationCallbacks* pAllocator)
18279{
18280 auto stream = mImpl->stream();
18281 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018282 auto resources = mImpl->resources();
18283 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018284 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018285 VkDevice local_device;
18286 local_device = device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018287 VkValidationCacheEXT local_validationCache;
18288 local_validationCache = validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018289 VkAllocationCallbacks* local_pAllocator;
18290 local_pAllocator = nullptr;
18291 if (pAllocator)
18292 {
18293 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18294 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18295 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018296 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018297 countingStream->rewind();
18298 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018299 uint64_t cgen_var_1394;
18300 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1394, 1);
18301 countingStream->write((uint64_t*)&cgen_var_1394, 1 * 8);
18302 uint64_t cgen_var_1395;
18303 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1395, 1);
18304 countingStream->write((uint64_t*)&cgen_var_1395, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018305 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018306 uint64_t cgen_var_1396 = (uint64_t)(uintptr_t)local_pAllocator;
18307 countingStream->putBe64(cgen_var_1396);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018308 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018309 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018310 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018311 }
18312 }
18313 uint32_t packetSize_vkDestroyValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18314 countingStream->rewind();
18315 uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT;
18316 stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t));
18317 stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018318 uint64_t cgen_var_1397;
18319 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1397, 1);
18320 stream->write((uint64_t*)&cgen_var_1397, 1 * 8);
18321 uint64_t cgen_var_1398;
18322 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1398, 1);
18323 stream->write((uint64_t*)&cgen_var_1398, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018324 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018325 uint64_t cgen_var_1399 = (uint64_t)(uintptr_t)local_pAllocator;
18326 stream->putBe64(cgen_var_1399);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018327 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018328 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018329 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018330 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018331 resources->destroyMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&validationCache);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018332}
18333
18334VkResult VkEncoder::vkMergeValidationCachesEXT(
18335 VkDevice device,
18336 VkValidationCacheEXT dstCache,
18337 uint32_t srcCacheCount,
18338 const VkValidationCacheEXT* pSrcCaches)
18339{
18340 auto stream = mImpl->stream();
18341 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018342 auto resources = mImpl->resources();
18343 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018344 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018345 VkDevice local_device;
18346 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018347 VkValidationCacheEXT local_dstCache;
18348 local_dstCache = dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018349 uint32_t local_srcCacheCount;
18350 local_srcCacheCount = srcCacheCount;
18351 VkValidationCacheEXT* local_pSrcCaches;
18352 local_pSrcCaches = nullptr;
18353 if (pSrcCaches)
18354 {
18355 local_pSrcCaches = (VkValidationCacheEXT*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
18356 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018357 countingStream->rewind();
18358 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018359 uint64_t cgen_var_1400;
18360 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1400, 1);
18361 countingStream->write((uint64_t*)&cgen_var_1400, 1 * 8);
18362 uint64_t cgen_var_1401;
18363 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1401, 1);
18364 countingStream->write((uint64_t*)&cgen_var_1401, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018365 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018366 if (((srcCacheCount)))
18367 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018368 uint64_t* cgen_var_1402;
18369 countingStream->alloc((void**)&cgen_var_1402, ((srcCacheCount)) * 8);
18370 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1402, ((srcCacheCount)));
18371 countingStream->write((uint64_t*)cgen_var_1402, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080018372 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018373 }
18374 uint32_t packetSize_vkMergeValidationCachesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18375 countingStream->rewind();
18376 uint32_t opcode_vkMergeValidationCachesEXT = OP_vkMergeValidationCachesEXT;
18377 stream->write(&opcode_vkMergeValidationCachesEXT, sizeof(uint32_t));
18378 stream->write(&packetSize_vkMergeValidationCachesEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018379 uint64_t cgen_var_1403;
18380 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1403, 1);
18381 stream->write((uint64_t*)&cgen_var_1403, 1 * 8);
18382 uint64_t cgen_var_1404;
18383 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1404, 1);
18384 stream->write((uint64_t*)&cgen_var_1404, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018385 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018386 if (((srcCacheCount)))
18387 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018388 uint64_t* cgen_var_1405;
18389 stream->alloc((void**)&cgen_var_1405, ((srcCacheCount)) * 8);
18390 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1405, ((srcCacheCount)));
18391 stream->write((uint64_t*)cgen_var_1405, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080018392 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018393 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
18394 stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018395 countingStream->clearPool();
18396 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018397 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018398 return vkMergeValidationCachesEXT_VkResult_return;
18399}
18400
18401VkResult VkEncoder::vkGetValidationCacheDataEXT(
18402 VkDevice device,
18403 VkValidationCacheEXT validationCache,
18404 size_t* pDataSize,
18405 void* pData)
18406{
18407 auto stream = mImpl->stream();
18408 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018409 auto resources = mImpl->resources();
18410 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018411 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018412 VkDevice local_device;
18413 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018414 VkValidationCacheEXT local_validationCache;
18415 local_validationCache = validationCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018416 countingStream->rewind();
18417 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018418 uint64_t cgen_var_1406;
18419 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1406, 1);
18420 countingStream->write((uint64_t*)&cgen_var_1406, 1 * 8);
18421 uint64_t cgen_var_1407;
18422 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1407, 1);
18423 countingStream->write((uint64_t*)&cgen_var_1407, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018424 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018425 uint64_t cgen_var_1408 = (uint64_t)(uintptr_t)pDataSize;
18426 countingStream->putBe64(cgen_var_1408);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018427 if (pDataSize)
18428 {
18429 countingStream->write((size_t*)pDataSize, sizeof(size_t));
18430 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018431 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018432 uint64_t cgen_var_1409 = (uint64_t)(uintptr_t)pData;
18433 countingStream->putBe64(cgen_var_1409);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018434 if (pData)
18435 {
18436 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18437 }
18438 }
18439 uint32_t packetSize_vkGetValidationCacheDataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18440 countingStream->rewind();
18441 uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT;
18442 stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t));
18443 stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018444 uint64_t cgen_var_1410;
18445 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1410, 1);
18446 stream->write((uint64_t*)&cgen_var_1410, 1 * 8);
18447 uint64_t cgen_var_1411;
18448 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1411, 1);
18449 stream->write((uint64_t*)&cgen_var_1411, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018450 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018451 uint64_t cgen_var_1412 = (uint64_t)(uintptr_t)pDataSize;
18452 stream->putBe64(cgen_var_1412);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018453 if (pDataSize)
18454 {
18455 stream->write((size_t*)pDataSize, sizeof(size_t));
18456 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018457 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018458 uint64_t cgen_var_1413 = (uint64_t)(uintptr_t)pData;
18459 stream->putBe64(cgen_var_1413);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018460 if (pData)
18461 {
18462 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18463 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018464 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018465 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018466 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018467 if (pDataSize)
18468 {
18469 if (!(check_pDataSize))
18470 {
18471 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
18472 }
18473 stream->read((size_t*)pDataSize, sizeof(size_t));
18474 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018475 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018476 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018477 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018478 if (pData)
18479 {
18480 if (!(check_pData))
18481 {
18482 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
18483 }
18484 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18485 }
18486 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
18487 stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018488 countingStream->clearPool();
18489 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018490 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018491 return vkGetValidationCacheDataEXT_VkResult_return;
18492}
18493
18494#endif
18495#ifdef VK_EXT_descriptor_indexing
18496#endif
18497#ifdef VK_EXT_shader_viewport_index_layer
18498#endif
18499#ifdef VK_EXT_global_priority
18500#endif
18501#ifdef VK_EXT_external_memory_host
18502VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT(
18503 VkDevice device,
18504 VkExternalMemoryHandleTypeFlagBits handleType,
18505 const void* pHostPointer,
18506 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
18507{
18508 auto stream = mImpl->stream();
18509 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018510 auto resources = mImpl->resources();
18511 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018512 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018513 VkDevice local_device;
18514 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018515 VkExternalMemoryHandleTypeFlagBits local_handleType;
18516 local_handleType = handleType;
18517 void* local_pHostPointer;
18518 local_pHostPointer = nullptr;
18519 if (pHostPointer)
18520 {
18521 local_pHostPointer = (void*)pool->dupArray(pHostPointer, sizeof(const uint8_t));
18522 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018523 countingStream->rewind();
18524 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018525 uint64_t cgen_var_1416;
18526 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1416, 1);
18527 countingStream->write((uint64_t*)&cgen_var_1416, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018528 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018529 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018530 uint64_t cgen_var_1417 = (uint64_t)(uintptr_t)local_pHostPointer;
18531 countingStream->putBe64(cgen_var_1417);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018532 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018533 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018534 countingStream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018535 }
18536 marshal_VkMemoryHostPointerPropertiesEXT(countingStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18537 }
18538 uint32_t packetSize_vkGetMemoryHostPointerPropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18539 countingStream->rewind();
18540 uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT;
18541 stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
18542 stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018543 uint64_t cgen_var_1418;
18544 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1418, 1);
18545 stream->write((uint64_t*)&cgen_var_1418, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018546 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018547 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018548 uint64_t cgen_var_1419 = (uint64_t)(uintptr_t)local_pHostPointer;
18549 stream->putBe64(cgen_var_1419);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018550 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018551 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018552 stream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018553 }
18554 marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18555 unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18556 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
18557 stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018558 countingStream->clearPool();
18559 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018560 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018561 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
18562}
18563
18564#endif
18565#ifdef VK_AMD_buffer_marker
18566void VkEncoder::vkCmdWriteBufferMarkerAMD(
18567 VkCommandBuffer commandBuffer,
18568 VkPipelineStageFlagBits pipelineStage,
18569 VkBuffer dstBuffer,
18570 VkDeviceSize dstOffset,
18571 uint32_t marker)
18572{
18573 auto stream = mImpl->stream();
18574 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018575 auto resources = mImpl->resources();
18576 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018577 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018578 VkCommandBuffer local_commandBuffer;
18579 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018580 VkPipelineStageFlagBits local_pipelineStage;
18581 local_pipelineStage = pipelineStage;
18582 VkBuffer local_dstBuffer;
18583 local_dstBuffer = dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018584 VkDeviceSize local_dstOffset;
18585 local_dstOffset = dstOffset;
18586 uint32_t local_marker;
18587 local_marker = marker;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018588 countingStream->rewind();
18589 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018590 uint64_t cgen_var_1420;
18591 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1420, 1);
18592 countingStream->write((uint64_t*)&cgen_var_1420, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018593 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018594 uint64_t cgen_var_1421;
18595 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1421, 1);
18596 countingStream->write((uint64_t*)&cgen_var_1421, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018597 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
18598 countingStream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018599 }
18600 uint32_t packetSize_vkCmdWriteBufferMarkerAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18601 countingStream->rewind();
18602 uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD;
18603 stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
18604 stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018605 uint64_t cgen_var_1422;
18606 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1422, 1);
18607 stream->write((uint64_t*)&cgen_var_1422, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018608 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018609 uint64_t cgen_var_1423;
18610 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1423, 1);
18611 stream->write((uint64_t*)&cgen_var_1423, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018612 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
18613 stream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018614}
18615
18616#endif
18617#ifdef VK_AMD_shader_core_properties
18618#endif
18619#ifdef VK_EXT_vertex_attribute_divisor
18620#endif
18621#ifdef VK_NV_shader_subgroup_partitioned
18622#endif
18623#ifdef VK_NV_device_diagnostic_checkpoints
18624void VkEncoder::vkCmdSetCheckpointNV(
18625 VkCommandBuffer commandBuffer,
18626 const void* pCheckpointMarker)
18627{
18628 auto stream = mImpl->stream();
18629 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018630 auto resources = mImpl->resources();
18631 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018632 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018633 VkCommandBuffer local_commandBuffer;
18634 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018635 void* local_pCheckpointMarker;
18636 local_pCheckpointMarker = nullptr;
18637 if (pCheckpointMarker)
18638 {
18639 local_pCheckpointMarker = (void*)pool->dupArray(pCheckpointMarker, sizeof(const uint8_t));
18640 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018641 countingStream->rewind();
18642 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018643 uint64_t cgen_var_1424;
18644 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1424, 1);
18645 countingStream->write((uint64_t*)&cgen_var_1424, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018646 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018647 uint64_t cgen_var_1425 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
18648 countingStream->putBe64(cgen_var_1425);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018649 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018650 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018651 countingStream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018652 }
18653 }
18654 uint32_t packetSize_vkCmdSetCheckpointNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18655 countingStream->rewind();
18656 uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV;
18657 stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t));
18658 stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018659 uint64_t cgen_var_1426;
18660 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1426, 1);
18661 stream->write((uint64_t*)&cgen_var_1426, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018662 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018663 uint64_t cgen_var_1427 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
18664 stream->putBe64(cgen_var_1427);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018665 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018666 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018667 stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018668 }
18669}
18670
18671void VkEncoder::vkGetQueueCheckpointDataNV(
18672 VkQueue queue,
18673 uint32_t* pCheckpointDataCount,
18674 VkCheckpointDataNV* pCheckpointData)
18675{
18676 auto stream = mImpl->stream();
18677 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018678 auto resources = mImpl->resources();
18679 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018680 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018681 VkQueue local_queue;
18682 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018683 countingStream->rewind();
18684 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018685 uint64_t cgen_var_1428;
18686 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1428, 1);
18687 countingStream->write((uint64_t*)&cgen_var_1428, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018688 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018689 uint64_t cgen_var_1429 = (uint64_t)(uintptr_t)pCheckpointDataCount;
18690 countingStream->putBe64(cgen_var_1429);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018691 if (pCheckpointDataCount)
18692 {
18693 countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18694 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018695 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018696 uint64_t cgen_var_1430 = (uint64_t)(uintptr_t)pCheckpointData;
18697 countingStream->putBe64(cgen_var_1430);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018698 if (pCheckpointData)
18699 {
18700 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18701 {
18702 marshal_VkCheckpointDataNV(countingStream, (VkCheckpointDataNV*)(pCheckpointData + i));
18703 }
18704 }
18705 }
18706 uint32_t packetSize_vkGetQueueCheckpointDataNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18707 countingStream->rewind();
18708 uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV;
18709 stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
18710 stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018711 uint64_t cgen_var_1431;
18712 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1431, 1);
18713 stream->write((uint64_t*)&cgen_var_1431, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018714 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018715 uint64_t cgen_var_1432 = (uint64_t)(uintptr_t)pCheckpointDataCount;
18716 stream->putBe64(cgen_var_1432);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018717 if (pCheckpointDataCount)
18718 {
18719 stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18720 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018721 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018722 uint64_t cgen_var_1433 = (uint64_t)(uintptr_t)pCheckpointData;
18723 stream->putBe64(cgen_var_1433);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018724 if (pCheckpointData)
18725 {
18726 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18727 {
18728 marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
18729 }
18730 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018731 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018732 uint32_t* check_pCheckpointDataCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018733 check_pCheckpointDataCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018734 if (pCheckpointDataCount)
18735 {
18736 if (!(check_pCheckpointDataCount))
18737 {
18738 fprintf(stderr, "fatal: pCheckpointDataCount inconsistent between guest and host\n");
18739 }
18740 stream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18741 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018742 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018743 VkCheckpointDataNV* check_pCheckpointData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018744 check_pCheckpointData = (VkCheckpointDataNV*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018745 if (pCheckpointData)
18746 {
18747 if (!(check_pCheckpointData))
18748 {
18749 fprintf(stderr, "fatal: pCheckpointData inconsistent between guest and host\n");
18750 }
18751 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18752 {
18753 unmarshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
18754 }
18755 }
18756}
18757
18758#endif
18759
18760